您不应该使用@Jerska所说的sort_id,因为那样您将无法对您的子菜单进行排序&它会使您的程序逻辑复杂化/混淆。如果PARENT_ID设置为null,那么它是根菜单,你可以有一个表,这样反而
CREATE TABLE menu(
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
parent_id INT,
FOREIGN KEY(parent_id) REFERENCES menu(id),
sort_id INT,
title VARCHAR(100)
) ENGINE=InnoDB;
。
这是给你一个例子菜单:
首页&花园
- 生活
房 - 餐厅
- 卫浴
- 卧室
- 花园&学院
ELECTRICALS
- Sound & Vi锡永
- 计算&手机
- 家电
- 小家电
这将存储这样的:
INSERT INTO menu
(parent_id, sort_id, title)
VALUES
(null, 1, "Home & Garden"),
(null, 2, "Electricals"),
(1, 1, "Living Room"),
(1, 2, "Dining Room"),
(1, 3, "Bathroom"),
(1, 4, "Bedroom"),
(1, 5, "Garden & Conservatory"),
(2, 1, "Sound & Vision"),
(2, 4, "Small Appliances"),
(2, 3, "Home Appliances"),
(2, 2, "Computing & Phones");
如果你确实按照这个顺序插入他们的“家&的ID Garden“为1,”Electricals“的ID为2(不要与sort_id混淆),”Living Room“的ID为3,”Dining Room“的ID为4 ...因为我们在ID字段上自动递增。
所以,如果你想在声音&愿景有一个子类别说,首先你会找到ID,在这种情况下,它会是8
,然后你会添加新的记录与家长ID为8
。
举例子子类:
Electricals
- Sound & Vision
* Televisions
* Audio
你会插入这些记录:
INSERT INTO menu
(parent_id, sort_id, title)
VALUES
(8, 1, "Televisions"),
(8, 2, "Audio");
在sort_id,只是把父菜单的ID,并把0/-1的根菜单。 (取决于你的SQL管理器如何启动ID。 – Jerska 2012-08-07 20:38:56
以及没有任何父级菜单的主菜单类别如何? – tnanoba 2012-08-07 20:39:58
已经在编辑中得到解答 – Jerska 2012-08-07 20:40:14