簡體   English   中英

自我參照關系

[英]Self referencing relationship

我目前正在將聯系人管理數據庫設計為新秀。 我遇到以下情況:

我已經創建了一個表格company供公司參考。 在信息中,我想包括母公司(如果有)(例如:Ferrari是公司之一,但其母公司是Fiat,這也是company表中的一條記錄)。

我不確定應該如何解決這個問題。 我應該在company表中添加一個parent_company列並進行自我引用,還是應該創建一個新表來存儲父子關系?

我建議您在公司表中添加parent_company(可為空)列,並使用公司ID進行引用。 我相信您不會為一個子公司擁有多個母公司,因此無需使用創建新表的方法。 對於多對多關系,您需要一個新表。

您可以像這樣創建外鍵引用

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

如果您的表ID具有UNSIGNED屬性,請使用UNSIGNED。 基本上,您必須遵循新列的確切列屬性,除了使其可以為空。

希望這可以幫助。

管理分層數據非常棘手,特別是在MySQL中,它確實沒有內置支持。

如果您事先知道幾乎所有公司都是單身人士,那么在這里和那里您都有母公司,然后將parent_company_id添加到表中。

但是,情況可能會變得更加復雜。 這就是為什么我建議您考慮如何存儲數據的一些替代方法。 例如,將整個層次結構存儲到母公司可能很方便。 是一篇有關存儲分層數據的好文章。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM