组织这种结构的最佳方式?

时间:2009-06-14 16:22:20

标签: php mysql database-design

我有一个食物数据库,我想将其划分为类别,子类别和子子类别的树结构。例如,

水果 - >苹果 - >富士,或 水果 - >苹果 - >科特兰

我希望每个父页面显示其直接的孩子(水果页面显示苹果,橙子和所有其他水果;苹果页面显示富士,科特兰和所有其他苹果)。

此外,我希望每个节点都知道其所有父节点。 (富士知道它的父母是苹果,其父母是水果)

使用MySQL存储这种树状关系的最佳方法是什么?

3 个答案:

答案 0 :(得分:5)

答案 1 :(得分:0)

您可以尝试以下方式:

Table category:

id INT AUTO INCREMENT PRIMARY KEY
parent_id INT
name VARCHAR(40)

然后,当您想要显示水果的所有子类别时,您可以这样做:

SELECT C.* FROM category C WHERE C.parent_id = {$currentCategory}

答案 2 :(得分:0)

CREATE TABLE Food (
    Id INT NOT NULL AUTO_INCREMENT,
    Name CHAR(50) NOT NULL,
    CategoryId INT,
    PRIMARY_KEY(Id),
    FOREIGN KEY (CategoryId) REFERENCES FoodCategory (Id))
CREATE TABLE FoodCategory (
    Id INT NOT NULL AUTO_INCREMENT,
    Name CHAR(50) NOT NULL,
    ParentCategoryId INT,
    PRIMARY_KEY(Id),
    FOREIGN KEY (ParentCategoryId) REFERENCES FoodCategory (Id))