主要实体:
客户
客人
预订
房间分配
我想实现一个多房间预订数据库设计。首先我想先解释一下这个概念:
- The Client是获得预订的人。
- The Client一次只能有 1 个预订
- The Client可以预订多个房间。
-
The Guest是被分配到特定房间的人。
所以对于表:
Client (client_id(PK), Name)
Guest (guest_id(PK), Name)
Reservation (reservation_id(PK), client_id(FK), roomAss_id(FK), checkInDate);
RoomAssignment (roomAss_id(PK), guest_id(FK), roomno(FK));
Room(room_id(PK), roomDetails);
//这里的问题是我不知道如何实现一对多关系。我的预订应该处理多个 RoomAssignment?或者我的 RoomAssignment 将处理多个 guest_id 和 roomno,然后我将 1 个 roomass_id 传递到我的预订表中?
谢谢,我对这种一对多的关系真的很困惑。我希望有人能好心地帮助我,而不是给我负面的分数。 T_T
另一种尝试:
Room(room_id(PK), roomDetails);
Client (client_id(PK), Name)
Guest (guest_id(PK), Name)
Reservation (reservation_id(PK), client_id(FK), checkInDate);
Booking(book_id(PK), reservation_id(FK), room_id(FK));
Lodging(lodge_id(PK), guest_id(FK), book_id(FK))
(客户、房间、客人已填),添加预订,添加预订,添加住宿
它是否正确??
(Edit经过更多思考后改变了我的建议。这是一个比我最初想象的更深的谜题。)
我的偏好是让预订与房间建立多对多关系(使用桥接表)。使用 ReservationID 和 RoomID 外键调用此表,例如 . 。 。Booking。也许你可以想出一个更好的名字。预订是预订的特定房间。然后,我会有另一个桥接表来表示“客人”和“预订”之间的关系。你也许可以称之为Lodging。住宿是指被分配到特定预订(预订的房间)的特定客人。
这是一个巧妙的谜题。关键是你有几个单独存在并且显然是必要的具体事物(预订、房间、客人),但也有几个其他概念,每个概念都有自己的属性,并且源于这些事物之间的关系。如果要正确标准化,您最终可能会得到比您想象的更多的表。不要认为这会变得更加复杂。拥有足够的正确表格最终会简化这个过程。以下是一些其他建议:
- 花时间在每张桌子的名称上。我上面的建议非常好,但你可以改进它们。预订既是其他事物之间的关系,又成为一种思考本身,在另一张桌子上至少有一个外键。
- 您应该能够描述表中的记录代表什么。如果你做不到这一点,那么你的桌子就很糟糕。请参阅上面我如何描述什么是预订和住宿。您的设计最终可能会有所不同,但是当您对不同的表进行头脑风暴时,请确保您可以描述该表上的记录实际上是什么。
- 考虑让客人和客户来自同一张桌子。他们俩确实是“联系人”。有人可能在某一时刻是客人,但下个月就成为客户。当联系人是联系人时,您可能有一个额外的数据表(1 到 0 或 1)Client。如果某人只是充当访客,您的系统只需要基本的联系信息,但如果他们充当客户,则需要更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)