Лучший способ организовать эту структуру? - PullRequest
0 голосов
/ 14 июня 2009

У меня есть база данных продуктов, которые я хотел бы разделить на древовидную структуру категорий, подкатегорий и подкатегорий. Например,

фрукты -> яблоки -> фуджи, или фрукты -> яблоки -> кортленд

Я бы хотел, чтобы на каждой родительской странице отображались их непосредственные дети (на странице фруктов показаны яблоки, апельсины и все другие фрукты; на странице яблок показаны фуджи, кортленд и все другие яблоки).

Кроме того, я бы хотел, чтобы каждый узел знал все свои родительские узлы. (Фуджи знает, что его родитель - яблоко, а родитель - фрукт)

Как лучше всего хранить эти древовидные отношения с помощью MySQL?

Ответы [ 3 ]

5 голосов
/ 14 июня 2009
0 голосов
/ 14 июня 2009
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))
0 голосов
/ 14 июня 2009

Вы можете попробовать что-то вроде:

Table category:

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

Затем, когда вы хотите отобразить все подкатегории фруктов, вы можете сделать:

SELECT C.* FROM category C WHERE C.parent_id = {$currentCategory}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...