我有一个关于将弱实体从e-r模型转移到sql表的问题。 具体来说我使用的是mysql。
假设我有桌子酒店,其中我有每个酒店的主键ID,名为id。
然后我想为房间创建一张桌子。一个房间被认为是弱实体,因为它不能在没有酒店的情况下被识别出来,因为没有酒店就不能存在。
因此,假设房间包含带有数据的列和另外两列。 第一列是酒店ID的外键,第二列是房间号。
请注意,许多房间可以拥有相同的号码,但同一酒店的房间不能有相同的号码。所以这是一种识别特定房间的方法。
我怎么把它放到桌子里? 我不能将该数字声明为唯一,因为它不是唯一的,我不能因为同样的原因将其声明为主键。那我在创建一个没有主键的表吗?
此外,外键“hotel_id”是唯一键,因为它是酒店表中的主键。 我想我会在使用许多具有相同外键的房间时遇到问题。
总结一下。 我的问题是如何创建餐厅,有没有办法自动识别每个房间除了明显(通过选择具有特定号码和hotel_id的房间来识别房间)?。
提前谢谢。
答案 0 :(得分:3)
Rooms表中的主键由两列(HotelID,RoomNumber)组成。该组合必须是唯一的,才能使您的数据模型正常运行。
答案 1 :(得分:0)
您创建一个以rooms
列为主键的表id
。此表还包含hotel_id
列(FK到hotels
)和room_number
。您可以在(hotel_id, room_number)
上定义唯一索引。
这就是全部;)