MySQL外键到另一个表,也是自己的

时间:2017-11-08 15:03:25

标签: php mysql

我有一个category表和一个sub_cat表,其中包含一个名为parent_id的外键,parent_id应该引用category和{{1}本身。

sub_cat

注意:当我们有多个子类别时,这些表非常有用(例如:category ---------- id name sub_cat ---------- id name parent_id category=computersub_cat=software或只有类别(取决于类别类型))和我希望每个sub_cat=programming都有parent_id,并且知道它引用了什么?

1 个答案:

答案 0 :(得分:0)

使用一张桌子,而不是两张桌子。

您拥有的是标准的简单层次结构。此结构中的每个“节点”都是相同的一般事物,只有父节点/子节点。考虑一下这样的表:

Category
----------
ID (PK)
ParentID (FK, null)
Name (varchar, not null)

在这种情况下,ParentID是返回此同一个表的密钥ID的外键。因此,任何给定的类别都有一个选项“父”类别。如果它没有父级,则它是顶级类别。如果它有父母,则它是该父母的子类别。

基本上,“类别”和“子类别”之间没有语义差异。它们都是类别实体。试图将它们分开是造成混乱的原因。将它们保持在一起,并为类别选择一个可选的“父”值。