考慮一個簡單的情況,其中有兩個表,名爲Users和WorkGroups。外鍵循環引用困境
- 用戶的電子郵件地址是用戶表中的主鍵。
- Workgroup_id是WorkGroup表中的主鍵。
- 用戶可以創建多個工作組。
- 用戶可以只是1個工作組的一部分。
在這種情況下,我需要跟蹤哪個用戶創建了一個工作組。
我已經這樣做:
- 已經在用戶表命名workgroup_id變量來了解用戶所屬的工作組。這是Workgroup表中workgroup_id的外鍵。
- 在工作組表中有一個名爲user_email的變量來跟蹤哪個用戶創建了工作組。這是用戶表中user_email的外鍵。
,我現在面臨這裏的問題是,這導致用戶和工作組表之間的循環引用。由於循環引用在編程中的任何地方都是不可能的。
我該如何解決這個問題?有沒有更好的設計模式,我在這裏失蹤?
編輯: 至於是否「循環引用是一個很大的不,不」與否,在概念上,他們可能不會,但由於實現在不同的數據庫中不普遍,但仍然是一個有效的問題。當您使用ORM時,情況更加嚴重,您的數據庫的ORM支持限制了您可以使用的數據庫設計類型。
我不明白這是如何循環的。創建工作組的用戶和工作組中的用戶不相關。您可能想要查看識別與非識別關係:https://stackoverflow.com/questions/762937/whats-the-difference-between-identifying-and-non-identifying-relationships – dragmosh
@dragmosh雖然它不循環這樣,仍然存在雞與雞蛋的問題。他無法創建第一個工作組,因爲它需要創建者電子郵件。而且他不能創建第一個用戶,因爲它需要一個工作組ID。 – Barmar
雖然它可能不會在這樣的設計問題上產生太大的差異,但您可能不希望將它與'mysql'和'sql server'一起標記,因爲它們不是同一個產品。 – Xedni