SQL外键,我的示例是否适合使用?

SQL外键,我的示例是否适合使用?,sql,foreign-keys,Sql,Foreign Keys,是否有人可以确认这是否是外键的适当使用(这只是一个示例): 申请预订会议室 tblBooking -> pkName,Time,fkRoomName; tblRoom -> pkRoomName, RoomNumber; 用户界面将使用pkRoomName数据填充下拉菜单,预订完成后,选定的pkRoomName将转到tblBooking fkRoomName 我是否正确理解了这一点?是的,如果您希望确保指定房间的任何预订都指向已知房间,则这是外键的适当使用 但是,请注意,仅声

是否有人可以确认这是否是外键的适当使用(这只是一个示例):

申请预订会议室

tblBooking -> pkName,Time,fkRoomName;
tblRoom    -> pkRoomName, RoomNumber;
用户界面将使用pkRoomName数据填充下拉菜单,预订完成后,选定的pkRoomName将转到tblBooking fkRoomName


我是否正确理解了这一点?

是的,如果您希望确保指定房间的任何预订都指向已知房间,则这是外键的适当使用

但是,请注意,仅声明外键关系与要求所有预订指定房间并不相同。允许tblBooking中fkRoomName值为空的记录。如果要要求指定房间,还必须在fkRoomName字段上使用NOTNULL约束


最后是一个语义方面的小问题。我不会在列名中使用“fk”作为RoomName。这是因为外键是与其包含的列不同的实体。包含多个列的外键并不少见,在一个表中具有多个不同的外键关系也不少见。因此,fkRoomName对于外键本身来说是一个合适的名称,但对于列来说则不是这样。

是。在我看来,这是一个合理的结构。fk->pk的关系似乎是正确的。是的,似乎很好……但是在现实生活中,考虑一下把预订ID放在那里……甚至可能还有房间ID:)太好了,谢谢你。我刚刚读完外键,只是需要一点自信,让我了解全局……我的阅读还在继续!