2009-06-14 7 views
0

J'ai une base de données d'aliments, que je voudrais diviser en une arborescence de catégories, sous-catégories et sous-sous-catégories. Par exemple,Le meilleur moyen d'organiser cette structure?

fruits -> pommes -> fuji, ou fruits -> pommes -> Cortland

Je voudrais chaque page parent pour montrer ses enfants immédiats (page de fruits montre les pommes, les oranges et tous les autres fruits la page des pommes montre fuji, cortland et toutes les autres pommes).

En outre, je voudrais que chaque nœud connaisse tous ses nœuds parents. (fuji sait que son parent est apple, dont le parent est fruit)

Quelle est la meilleure façon de stocker cette relation arborescente en utilisant MySQL?

Répondre

0

Vous pouvez essayer quelque chose comme:

Table category: 

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

Puis, quand vous voulez afficher toutes les sous-catégories de fruits que vous pouvez faire:

SELECT C.* FROM category C WHERE C.parent_id = {$currentCategory} 
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)) 
Questions connexes