你好,我有一个这样的数据库。
正如你可以看到它是一个酒店数据库,其中包含有关预订,客户和房间的所有信息。问题在于预订和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