自引用关系

0kjbasz6  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(269)

作为新手,我正在设计一个联系人管理数据库。我遇到了以下情况:
我已经创建了一个表 company 公司信息。在信息中,我想包括母公司,如果他们有一个(例如:法拉利是公司之一,但其母公司是菲亚特,这也是一个记录在 company 表)。
我不知道该如何处理这个问题。我应该添加一个 parent_company 列到 company 表和自引用还是应该创建一个新表来存储父子关系?

pcrecxhr

pcrecxhr1#

我建议您在company表中添加parent_company(nullable)列,并用company id引用它。因为我相信子公司不会有多个父公司,所以不需要创建新表。对于多对多关系,你需要一张新table。
您可以这样创建外键引用

ALTER TABLE company ADD COLUMN parent_company INT UNSIGNED NULL, ADD FOREIGN KEY fk_parent_company REFERENCES company(id)

如果表id具有unsigned属性,请使用unsigned。基本上,除了使新列可以为null之外,您必须遵循新列的确切列属性。
希望这有帮助。

l7wslrjt

l7wslrjt2#

管理分层数据很棘手,特别是在mysql中,它实际上没有内置的支持。
如果你事先知道,几乎所有的公司都是单亲家庭,而且到处都有一家母公司,那么添加一个 parent_company_id 到你的table上去。
然而,情况可能会变得更加复杂。这就是为什么我建议您考虑一些关于如何存储数据的替代方案。例如,可以方便地将整个层次结构存储到母公司。这是一篇关于存储分层数据的好文章。

相关问题