我正在設計一個數據庫,其中兩個字段具有多對一的關係,但我也需要它們之間的一對一關係,並且我希望得到一些關於是否有更好的方法來做到這一點的建議比我現在所擁有的還要多。同一表格上的多對一和一對一關係?
我的表格是accounts
和users
。一個帳戶可以有多個用戶,但每個帳戶只能擁有一個擁有者。用戶只能與一個帳戶相關聯。
我在表中有一個account
字段,它存儲了用戶與之相關的帳戶的ID。在accounts
表中,我有一個owner
字段,其中存儲擁有該帳戶的用戶的標識(即頭管理員)。
我在使用InnoDB,所以我可以利用外鍵。問題在於,如果沒有先創建另一個帳戶或用戶(由於外鍵的限制),我無法創建帳戶或用戶,因此我使owner
爲空。現在我可以創建一個空賬號爲owner
的帳號,然後創建用戶,最後將帳號中的owner
設置給用戶。
這是可以接受的,有沒有更好的方法?
這裏有一些可能的其他方式,我想出了,和我的想法在每個:
已經在
users
表中的布爾owner
場。由於每個帳戶只能擁有一個所有者,因此我不得不確保每個帳戶只有一個用戶的屬性設置爲true
。有第三個表
owners
。這似乎是更多的開銷和更多的工作,沒有什麼好的理由,因爲它與users
表中的owner
字段實際上是相同的。
我怎麼有,現在是很有道理的我,但它是一個有點尷尬不必設置空所有者,直到我創建的用戶,然後回來在事後進行設置。
我會很感激你可以給我的任何輸入。謝謝!
這個問題是相似的,但沒有外鍵的提到:Designing Tables: One to many and one to one at same time?
用戶可以是帳戶的所有者而不是該帳戶的用戶(即另一個帳戶的用戶)嗎? –
沒有。賬戶的所有者只是其本身的用戶而已。 – Compeek