mysql上的弱实体没有主键

时间:2014-02-22 21:05:57

标签: mysql sql database entity-relationship

我有一个关于将弱实体从e-r模型转移到sql表的问题。 具体来说我使用的是mysql。

假设我有桌子酒店,其中我有每个酒店的主键ID,名为id。

然后我想为房间创建一张桌子。一个房间被认为是弱实体,因为它不能在没有酒店的情况下被识别出来,因为没有酒店就不能存在。

因此,假设房间包含带有数据的列和另外两列。 第一列是酒店ID的外键,第二列是房间号。

请注意,许多房间可以拥有相同的号码,但同一酒店的房间不能有相同的号码。所以这是一种识别特定房间的方法。

我怎么把它放到桌子里? 我不能将该数字声明为唯一,因为它不是唯一的,我不能因为同样的原因将其声明为主键。那我在创建一个没有主键的表吗?

此外,外键“hotel_id”是唯一键,因为它是酒店表中的主键。 我想我会在使用许多具有相同外键的房间时遇到问题。

总结一下。 我的问题是如何创建餐厅,有没有办法自动识别每个房间除了明显(通过选择具有特定号码和hotel_id的房间来识别房间)?。

提前谢谢。

2 个答案:

答案 0 :(得分:3)

Rooms表中的主键由两列(HotelID,RoomNumber)组成。该组合必须是唯一的,才能使您的数据模型正常运行。

答案 1 :(得分:0)

您创建一个以rooms列为主键的表id。此表还包含hotel_id列(FK到hotels)和room_number。您可以在(hotel_id, room_number)上定义唯一索引。

这就是全部;)