单个外键的多个表

时间:2019-03-19 06:24:37

标签: sql database-design

我目前正在为我的旅游Java Web应用程序创建数据库。

只有注册用户可以预订旅游,但可以带几个人。 为此,我分为User表和Guest表,每个表都有自己的主键。

到目前为止,一切都已设置好,但是在制作BookRoomDetail表时,我必须填写房间中哪个插槽的哪个人。当注册用户和来宾都可以填补这个空位时,就会出现问题,它们来自2个不同的表。

Screenshot

如何为此设置外键(或其他任何内容)?

2 个答案:

答案 0 :(得分:0)

当我遇到问题时,您可以在tblBookRoom详细信息中为MainUser添加一个字段作为外键。而且,只要有任何用户预定房间,您都可以在forwhom字段中添加他/她的主键和来宾主键。

 **tblBookRoomDetail**
      ID (Primary key Of Table)
      RoomId 
      For Whom (For MainUser or Guest)
      MainUser (MainUser Primary Key Who is doing this reservation)
      Slot
      FromDate
      ToDate
      BookId

答案 1 :(得分:0)

如果在两个表中有关系,则不可能在另一个表的列中插入两个不同的主键值。

您可以在不建立任何关系的情况下执行此操作。 但这不是一个好过程,因为如果在这种情况下两个键值相同,则您将无法确定实际值。

如果要实现此目标,则应该有一个表tblAllUsers,该表的主键也是tblGuest和tblUser的主键,然后可以将与tblBookRoomDetail表的关系直接指向tblAllUsers。在这种情况下,您可以区分来宾用户或注册用户。

可以在tblBookRoomDetail中创建两个不同的列,一个列用于来宾用户,第二个列用于注册用户。