2012-11-04 83 views
1

我正在設計一個數據庫,在那裏我想完成這個問題: 我有一個類別表和產品表。 我想讓產品不可能在沒有分配給它的現有類別的情況下添加產品(我相信我是通過產品表上的FK做到這一點的)。 我想強制刪除一個類別,刪除分配給該類別的所有孩子(產品)。 我不想刪除一個類別,如果/當所有屬於它的產品都被刪除。如何在MySQL表中強制類別到產品的關係

目前,我已經出來是這樣的: http://codepad.org/eSGqtyOs

我不確定,一個人說,FK類別表,會阻止我加入的類別而沒有產品(抓22 .. ),如果我在產品表中添加了刪除CASCADE,它將自動刪除一個類別,一旦該類別的最後一個產品被刪除...

請幫助弄清楚這一點。另外,請不要試圖說服我讓舊的類別/產品不再「出售」 - 我有我的理由,我知道我對這個系統的要求。

回答

3

根據您的要求來判斷,您不需要類別中的FK(參考產品)。事實上,由於雞蛋和雞蛋問題,您將這些FKs做成循環的方式,您將無法插入任何數據。

您只有只有需要產品中的FK(參考類別)。

我想要添加一個沒有分配給它的現有類別的產品是不可能的(我相信我是通過產品表上的FK做到這一點的)。

沒錯。

我想強制刪除一個類別,以刪除所有分配到該類別的兒童(產品)。

ON DELETE CASCADE應該照顧這一點。

我不希望某個類別被刪除,如果/當所有屬於它的產品都被刪除。

FK允許無孩子的父母。

因此,就您的情況而言,參考類別的產品上的FK將允許類別在沒有任何產品的情況下存在。

相關問題