我想问一下我正在做的项目。
我有两个表,ms_corporates
和ms_subsidiaries
,术语是一个公司可以有多个子公司,但一个子公司只能有一个公司。
这是我现在的桌子:
ms_corporates
-------------
corporate_id PK
corporate_name
corporate_address
corporate_phone
ms_subsidiaries
---------------
subsidiary_id PK
corporate_name FK
subsidiary_name
subsidiary_address
subsidiary_phone
我可以在它们之间建立关系吗?或者我必须在它们之间建立一个表?
发布于 2018-10-17 00:46:40
闻起来像是一对多的关系。这是通过在辅助表中使用corporate_id
(而不是名称)来实现的。并为该列建立索引。
然后,您可以使用JOIN
表来查找拥有子公司的公司的信息,或者查找给定公司的所有子公司。
还有其他需要考虑的事情。“公司”和“子公司”实际上是同一类型的实体,不是吗?甚至您的模式也表明了这一点;看到这些列实际上是相同的了吗?所以..。您可能应该只有一个表,并将两个表都放入其中。它将有一个id
(类似于corporate_id
和subsidiary_id
)和一个parent_id
。
parent_id
是指向同一表中另一行的id
的链接。它是从子公司到公司的纽带。如果是0
,那么您看到的是一家公司。非0
指的是子公司。
在这个论坛上搜索parent_id
;你可能会发现很多其他的例子在做同样的事情。
https://stackoverflow.com/questions/52819257
复制相似问题