当前位置:  开发笔记 > 数据库 > 正文

在数据库中建模1到1..n的关系

如何解决《在数据库中建模1到1..n的关系》经验,为你挑选了1个好方法。

您如何为客人关系建模预订酒店房间(如果重要的话,在PostgreSQL中)?一个房间可以有几个客人,但至少有一个.

当然,人们可以通过外键将客人与预订联系起来booking_id.但是,如何在DBMS级别强制执行一个房间必须至少有一个访客?

可能是不可能的?



1> paxdiablo..:

实际上,如果您阅读了该问题,则说明已预订的酒店客房.这很容易做到如下:

Rooms:
    room_id primary key not null
    blah
    blah

Guests:
    guest_id primary key not null
    yada
    yada

BookedRooms:
    room_id primary key foreign key (Rooms:room_id)
    primary_guest_id foreign key (Guests:guest_id)

OtherGuestsInRooms:
    room_id foreign key (BookedRooms:room_id)
    guest_id foreign key (Guests:guest_id)

这样,当OtherGuests为0或更多关系时,您可以强制执行至少有一个访客的预订房间.没有客人,您无法创建预订的客房,如果没有预订的客房,您将无法添加其他客人.

如果你想要一个n对n的关系,你应该遵循相同的逻辑,这种关系应该被规范化为一个单独的表,其中包含1到n和n对1的两个表.

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有