2013-04-18 39 views
0

我想创建一个理论汽车租赁公司的简单数据库。下图显示了我目前拥有的关系。微软Access - 基本关系错误

enter image description here

然而,当我试图超过一辆车分配给一个客户,我收到以下错误信息:

enter image description here

如果有谁能够告诉我,为什么这即将到来,要改变什么,我会非常感激,如果需要更多的信息来解决这个问题,请问!谢谢

回答

1

您的ER图错了。 假设你想要Zero,One Customer - > Many Cars,那么正确的模式是将0,1的外键插入Many表中。

所以你的Cars表应该有一个CustomerId的外键。

客户表不应该知道汽车的正常性。

编辑: 看着需求/模型,很可能这是很多。 也就是说随着时间的推移,许多客户租用汽车或汽车。 在这种情况下,为了保持正常状态,您需要一个联结表 - 例如,汽车 - 拥有两个主键CustomerId和CarId的客户。 这也是你放置关系信息的地方,比如租用日期等。

+0

感谢您的帮助! – h1h1

2

CustomerID是一个主键,并在第二行中被复制。主键必须是唯一的。

您已创建客户和预订之间的1对1关系。这意味着每个客户可能只有一个预订,每个预订可能只有一个客户。这就是为什么你必须复制CustomerID以添加另一辆车的预订。

+1

这是更好的答案。联结表不是必需的。预订应该只有自己的自动编号PK。然后,您可以根据需要为客户添加尽可能多的预订,并在每次预订时添加一辆车 - 这可能是在不同场合预订的同一辆车,或者您可以使用不同的车将多项预订附加到客户。我投了这个帖子,并投票选举Going的帖子,因为正确地指出了一些交接表不是必需的,但只是对表格预订的一个小改动。一旦完成,那么“许多”预订是可能的,我们只需将一辆车附加到该预订。 –