2012-11-04 49 views
1

我正在设计一个数据库,在那里我想完成这个问题: 我有一个类别表和产品表。 我想让产品不可能在没有分配给它的现有类别的情况下添加产品(我相信我是通过产品表上的FK做到这一点的)。 我想强制删除一个类别,删除分配给该类别的所有孩子(产品)。 我不想删除一个类别,如果/当所有属于它的产品都被删除。如何在MySQL表中强制类别到产品的关系

目前,我已经出来是这样的: http://codepad.org/eSGqtyOs

我不确定,一个人说,FK类别表,会阻止我加入的类别而没有产品(抓22 .. ),如果我在产品表中添加了删除CASCADE,它将自动删除一个类别,一旦该类别的最后一个产品被删除...

请帮助弄清楚这一点。另外,请不要试图说服我让旧的类别/产品不再“出售” - 我有我的理由,我知道我对这个系统的要求。

回答

3

根据您的要求来判断,您不需要类别中的FK(参考产品)。事实上,由于鸡蛋和鸡蛋问题,您将这些FKs做成循环的方式,您将无法插入任何数据。

您只有只有需要产品中的FK(参考类别)。

我想要添加一个没有分配给它的现有类别的产品是不可能的(我相信我是通过产品表上的FK做到这一点的)。

没错。

我想强制删除一个类别,以删除所有分配到该类别的儿童(产品)。

ON DELETE CASCADE应该照顾这一点。

我不希望某个类别被删除,如果/当所有属于它的产品都被删除。

FK允许无孩子的父母。

因此,就您的情况而言,参考类别的产品上的FK将允许类别在没有任何产品的情况下存在。

相关问题