这个房间的主人将房间租给旅游者和访问该地区几天的人,需要一个地方花几天时间。每位客人都需要预订,并且只有一间客房可供使用。 所以我想出了这个实体关系图,表明所有实体和关系。
问题 我想知道预订实体是否需要两个外键? 此外,ER图的整体设计是否正确到可接受的水平,包括键和属性?
答案 0 :(得分:0)
您的模型有一些问题:
每位业主只能拥有一个房间。在现实世界中,业主可以拥有许多房间。即使你现在想要一种双向关系,我建议你把这种关系从所有者表中删除,以防你以后想要改变它。
每个房间只有一个客户。如果是现实世界,房间可以在不同的预订期间容纳不同的客户。从Room表中删除与客户的关系。
每位客户只有一次预订。在现实世界中,客户可以随着时间的推移进行不同的预订。从客户表中删除与预订的关系。
Booking_ID听起来像预订的代理键。为什么客户端是主键的一部分?我认为它应该是一个非素数属性,并表明它将在图中已经描述的外键约束中。
预订对Room_ID有外键约束,但您的图表并未对其进行描述。
Payment表中的Payment_ID位于外键约束中,但听起来像是该表的代理键。我认为预订表中的Payment_ID以及付款中的Booking_ID应该是受约束的。
付款表的目的是什么?它看起来多余,即使您不能将这些功能依赖项移动到Bookings表中,然后可以消除Payment_ID。
如果从Booking表中删除Payment_ID,您仍然有两个键在外键约束中。