mysql - mysql 上没有主键的弱实体

标签 mysql sql database entity-relationship

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

假设我有一张酒店表,其中我有每个酒店的主键 ID,名为 id。

然后我想为房间创建一张 table 。一个房间被认为是弱实体,因为如果不引用酒店就无法识别它,并且没有酒店它就不可能存在。

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

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

如何将其放入表格中? 我不能将数字声明为唯一的,因为它不是唯一的,出于同样的原因,我也不能将其声明为主键。那么我是否创建了一个没有主键的表?

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

总结一下。 我的问题是如何创建表房间,除了明显的房间​​(通过选择具有特定编号和 hotel_id 的房间来识别房间)之外,是否有任何方法可以自动识别每个房间?

提前谢谢你。

最佳答案

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

关于mysql - mysql 上没有主键的弱实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21960555/

相关文章:

mysql - 如何并排呈现单表查询的结果

MYSQL 日期时间到 mongoDB

MySQL计算CRC16的函数

PHP/MySql 登录表单 - 验证密码不起作用

sql - 交换两个主键值并规避ORA-00001的更好方法:违反唯一约束?

mysql - 如何使用外键将不同表的多值属性存储在一张表中?

python - 使用 Peewee ORM 池连接的正确方法

sql - 使用 SQL Server 2008 计算列中存在的组数

sql - 将数据从 txt 文件导入 IBM netezza SQL 数据库时出错

database - 从 postgres 表列中删除括号但保留其中的单词