2015-12-09 27 views
0

我已經創建了一個數據庫,3桌的約束:
產品
分類
小類如何創建2列的MySQL

在我的產品表我有一個類別和子類別列:

| product_name | category | subcategory| 
----------------------------------------  
| varchar  | int  | int  | 

截至目前爲止,類別欄引用了類別表id,而子類別欄引用了子類別id。

類別列有一個ID和一個類別名稱列:

| id | category_name | 
---------------------- 
|int | varchar  | 

子類別列有一個id,分類別,這是一個外鍵引用的類別(ID)列父列。

| id | subcategory_name | parent | 
--------------------------------- 
|int | varchar   | int | 

我想知道如果有一個約束添加到產品的「子類別」一欄中,這樣一個只能夠添加值,如果它是父類的婚生子女的方式。

請原諒我,如果這個問題已經回答了。我不知道我正在嘗試做什麼的正確名稱。

回答

0

1 - 您可以使用程序中插入之前驗證/更新的子類別ID

2 - 或者你可以使用觸發器每筆交易

3後運行 - 或者你可以重新設計你的類別和子類別表,這取決於你的類別數據的外觀。

如:

id category_name 
---- ------------- 
10 cat 10 
1011 kid of cat 10 
20 cat 20 
2020 kid of cat 20 

4 - 如果你不喜歡上面的設計,你也可以設計這樣:

id category  parent_id 
---- ------------- ----- 
10 cat 10   0 
1010 kid of cat 10 10 
20 cat 20   0 
2020 kid of cat 20 20 
+0

據我所知,我的設計類似於你的第二個選項。我想知道是否有辦法在我的產品表的子類別列上強制執行外鍵限制。 例如。如果在產品表的子類別字段中插入的外鍵ID不是所輸入類別字段的子項,則該條目將無效。 –

+0

MySQL文檔可以幫助你嗎? http://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html – SIDU