我正在建模一個關係數據庫,其中以下模式用於描述兩個表:ERD Model。MySQL外鍵依賴關係解析
指定的規則是:
- 的辦公室有一個經理
- 每名工作人員被分配到一個辦公室
爲了模擬這種我用ERD MySQL工作臺創建,其中提供了以下DDL。
我的問題是,爲了強制辦公室必須有一個經理,辦公室表中的外鍵不可空。同樣,員工表中代表他們工作的辦公室的外鍵對於每個員工都是必需的,因此而不是可以爲空。這在模型中對我來說很有意義,但是對於實現來說,它使得不可能插入數據,因爲每個數據都依賴於表中元組的存在。
我能想到的唯一答案是使鍵可以爲空,以便一個人可以暫時存在而沒有另一個。
這是解決問題的正確方法嗎?數據庫最終將被歸一化爲3NF或BCNF。
感謝您的回覆。我確實考慮過這個。因此,如果我使用複合主鍵(Staff_ID + Office_Id)創建中間表,那麼我將如何將一位經理分配到辦公室。我可以將管理器外鍵保留在辦公室表格中,但讓它在交叉引用表中引用一行嗎?再次感謝 –
如果您使用中間表,您將從Office中刪除「管理器」字段,並將中間表的外鍵添加到「職員」和「辦公室」。如果您在中間表中使用複合主鍵,則您可以在每個辦公室插入多個管理員。您可以使用Office_Id作爲唯一的主鍵,以便每個Office在中間表中只有一條記錄。雖然如果你這樣做,那麼你根本不需要中間表,並且可以使用Office表中的管理員字段,因爲辦公室到管理員是1:1。 –