2015-04-29 82 views
0

你好,我有一个这样的数据库database tables
正如你可以看到它是一个酒店数据库,其中包含有关预订,客户和房间的所有信息。问题在于预订和BookDates表。每个预订客户都可以预订几个日期,而且不必以任何顺序预订。这就是为什么我必须创建BookDates以避免这种情况enter image description here但是现在我遇到了如何关联这两个表的问题,因为我不能将复合键的部分与其他表相关联。这就是BookDates表现在的样子。没有主键。 enter image description here复合键的一部分作为避免冗余的外键

+0

“如何关联这两张表”。哪两张桌子? BookDates将BookDate作为预订的外键。 – Thilo

+0

预订中没有BookDate字段,所以我不知道你在说什么。 –

+0

对不起,我的意思是BookNum。 BookNum是预订的主要关键,并从BookDates引用。 – Thilo

回答

0

如果我正确理解你的问题,可以这样表述:必须为表格BookDates和预订之间的关系创建哪些关系(外键和主键)?

如果这是我要说的问题,请在BookDates中创建一个结合了两个字段的主键(组合必须是唯一的)。预订在BookNum上有主键。从BookDates的BookNum字段创建外键到预订的BookNum。

还有一点需要注意:我会把我的桌子和田野命名为单数。例如表格BookDate,字段为BookNum和Date。每个记录只包含一个bookDate。当您从表格中检索多个项目时,您有一个BookDate记录列表。

+0

是的,你是正确的,你的答案似乎也是正确的。然而,我试图这样做,我不知道该怎么做,因为它不允许我沿着外键(BookNum)制作复合键(日期和BookNum)。 –

+0

你想在哪里实施它? (MySql,Sql服务器,别的?)你收到的错误是什么?你试图运行的脚本是什么? – Aster

0

在ER图中,对于BookDates表,我发现您已经将BookNum标记为PK & FK。 FK很好,但是使用BookNum字段作为PK将不起作用,因为BookNum可能会重复并且不可能是唯一的。您可以考虑以下选项:

  1. 创建于BookNum & BookDates复合主键

  2. 添加新BookDatesId作为主键,这可能是一个标识 列,并作为PK,这将是“代孕钥匙”。