我正在构建一个关系数据库,它将作为一家旅游公司的CRM。我删除了表和属性,以使其尽可能简单。用户将向客户发送报价。
一家酒店可以有多个房间(例如,酒店1可以同时有一个双人间和一个三人间)。
一个房间可以有多个酒店(例如,酒店1和酒店2都可以有一个双人房间)。
假设一位客户有一组6人的房间,用户可以向该客户发送酒店1的报价,其中包括3x双人房或2x三人房。
报价将需要包含酒店和适当的房间类型和房间类型数量。
将表HOTEL_ROOM_JUNCTION连接到报价的最佳实践是什么,因为它们的键是多属性的复合键?

谢谢
发布于 2019-12-11 17:19:19
因为一个特定的房间只能存在于一个酒店中,所以HOTEL_ROOM_JUNCTION表是多余的。所以房间里的pk hotel_id就是fk,房间里的pk是hotel_id和room_id的拼接密钥。
如果一个报价可以由多个房间组成,您需要在报价和房间之间使用fk quote_id、room_id和hotel_id建立连接表,这三个将是该表中的pk。(根据经验,这种表通常需要一个时间戳)。
(作为附注;我将这些表命名为报价、房间和酒店,因为它们包含许多)
编辑:我有点怀念这个问题..为了让我的模型像OP所希望的那样,我需要添加带有pk room_type_id的ROOM_TYPES,它将是房间中的fk (非空),但不是pk的一部分。
https://stackoverflow.com/questions/59282114
复制相似问题