实体关系图 - 酒店

时间:2018-05-02 17:56:12

标签: sql database entity entity-relationship erd

我正在为酒店创建一个ERD,我是关系数据库的新手。我正在努力解决关系以及在哪里链接实体。到目前为止,这是我粗略的问题:Link to image for ERD

我想到的问题是:

如何通过房间收取客房服务? 我需要可用性实体吗? 我应该将房间或预订链接到账单而不是客人吗? 酒吧服务是否可以直接收据或账单? 我应该将roomType添加到预订实体吗?

以下是给出的描述:

对系统要求的初步调查引出了以下事实:

  • 客房数量从101到359(虽然总共只有20间客房,但超过3层)
  • 部分客房适合轮椅使用者入住,其他客房则不适合
  • 客房有三种类型:
    1. 单人收费,每晚40英镑
    2. 双倍收费,每晚52英镑
    3. 套房(适合一家四口) - 每晚收费95英镑 •

客户按标准价格收取房费,但房间内的人数会保留一份记录

为客户提供唯一的“客户ID”,其信息目前保存在卡片索引

客户可以订购特定物品,这些物品可以作为账单上的额外费用计入他们的房间。这些按标准收费如下:

  • 传统早餐 - 收费10英镑
  • 欧式早餐 - 收费5英镑
  • 晚餐 - 每人25英镑
  • 酒吧小吃系列 - 收费15英镑
  • 客房服务餐 - 收费30英镑 •
    顾客可以从酒吧购买其他物品,例如饮料,但这些物品是单独支付的,不会向客户的房间收费。 阳光海岸酒店目前使用预先印制的文具,接待人员在客人离开时为他们写出发票。

1 个答案:

答案 0 :(得分:0)

我发现了一些事情:

  • FloorNumber设置两次。在roomType和房间。它不应该在roomType中设置。
  • 为什么将BookingID FK放在房间里?预订条目通过空房情况表链接到客房。预订不是房间的属性。
  • roomType不需要RoomNumber FK。房间作为一种类型。该类型没有房间。
  • 那么对于你的FK,问问自己哪个对象有哪个对象?它们不应该双向设置。

你的ERD大部分都是有意义的,尽管roomServices不在正确的位置。如果你像对待房间一样直接与房间联系,你怎么知道那个房间的那个客人1号订购了什么东西? roomServices 应该与账单相关联,就像你为barServices所做的那样。这样,当您生成账单时,您有:

  • 预订详情
  • barServices
  • roomServices

我将使用FK房间建立roomServices,并通过barServices之类的收据将其链接到帐单。另外不要忘记您的roomServices有一个类型,价格不同。所以另一个表roomServicesType。 roomService描述了1种服务的一个订单。

我的方式是:

  • 定义我的对象(即表格)。这些必须代表问题中的1个且仅1个元素。
  • 定义我的链接(即关系)。根据关系的类型(1-1,1-n,m-n),我使用FK或链接表(我不记得计算机科学的官方名称,但就像你对可用性所做的那样)。
  • 然后我定义我的对象具有的每个属性(即表中的行)。这是我确保一个属性永远不会在多于一个表中定义的时候。
  • 然后我在脑海里尝试了几个问题。比如:客人要离开,我怎么知道他必须要收取什么费用?客人点了一顿晚餐,我记录下来了吗? ...