你好,我有一個這樣的數據庫。
正如你可以看到它是一個酒店數據庫,其中包含有關預訂,客戶和房間的所有信息。問題在於預訂和BookDates表。每個預訂客戶都可以預訂幾個日期,而且不必以任何順序預訂。這就是爲什麼我必須創建BookDates以避免這種情況但是現在我遇到了如何關聯這兩個表的問題,因爲我不能將複合鍵的部分與其他表相關聯。這就是BookDates表現在的樣子。沒有主鍵。 複合鍵的一部分作爲避免冗餘的外鍵
回答
如果我正確理解你的問題,可以這樣表述:必須爲表格BookDates和預訂之間的關係創建哪些關係(外鍵和主鍵)?
如果這是我要說的問題,請在BookDates中創建一個結合了兩個字段的主鍵(組合必須是唯一的)。預訂在BookNum上有主鍵。從BookDates的BookNum字段創建外鍵到預訂的BookNum。
還有一點需要注意:我會把我的桌子和田野命名爲單數。例如表格BookDate,字段爲BookNum和Date。每個記錄只包含一個bookDate。當您從表格中檢索多個項目時,您有一個BookDate記錄列表。
是的,你是正確的,你的答案似乎也是正確的。然而,我試圖這樣做,我不知道該怎麼做,因爲它不允許我沿着外鍵(BookNum)製作複合鍵(日期和BookNum)。 –
你想在哪裏實施它? (MySql,Sql服務器,別的?)你收到的錯誤是什麼?你試圖運行的腳本是什麼? – Aster
在ER圖中,對於BookDates表,我發現您已經將BookNum標記爲PK & FK。 FK很好,但是使用BookNum字段作爲PK將不起作用,因爲BookNum可能會重複並且不可能是唯一的。您可以考慮以下選項:
創建於BookNum & BookDates複合主鍵
添加新BookDatesId作爲主鍵,這可能是一個標識 列,並作爲PK,這將是「代孕鑰匙」。
- 1. 作爲複合主鍵一部分的SQL表外鍵
- 2. 我可以在這個外鍵中避免「冗餘」嗎?
- 3. 存儲「冗餘」外鍵以避免加入
- 4. 複合鍵作爲外鍵?
- 5. VB.NET:避免冗餘
- 6. 使用LINQ避免冗餘Enumerable全部
- 7. 約束,以避免外鍵的組合
- 8. 避免數據冗餘
- 9. 避免冗餘在Python
- 10. 避免翻新POJO冗餘
- 11. 通過避免冗餘
- 12. 避免佈局冗餘
- 13. 避免冗餘異步calcluations
- 14. mysql外鍵僅引用複合主鍵的一部分
- 15. 使用複合主鍵作爲外鍵
- 16. Hibernate列同時用作複合主鍵和部分複合外鍵的一部分
- 17. 複合外鍵,其組合主要的部分關鍵
- 18. 可以將複合主鍵的一部分用作另一個表上覆合主鍵的一部分嗎?
- 19. 引用複合主鍵的一列作爲外鍵
- 20. 爲什麼mysql允許外鍵引用複合主鍵的一部分?
- 21. 模型和部分模型,如何避免冗餘代碼?
- 22. 複合鍵的外鍵
- 23. 複合鍵的外鍵
- 24. 替代鍵作爲複合鍵上的外鍵
- 25. 刪除休眠中複合鍵的冗餘列
- 26. 外鍵可以是另一個表的複合主鍵的一部分嗎?
- 27. 爲流星集合使用SimpleSchema和ValidatedMethod時避免冗餘?
- 28. 時間戳作爲複合主鍵的一部分?
- 29. 避免外鍵約束
- 30. 外鍵也是主鍵的一部分
「如何關聯這兩張表」。哪兩張桌子? BookDates將BookDate作爲預訂的外鍵。 – Thilo
預訂中沒有BookDate字段,所以我不知道你在說什麼。 –
對不起,我的意思是BookNum。 BookNum是預訂的主要關鍵,並從BookDates引用。 – Thilo