您不應該使用@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