多房间预订的数据库设计:一对多

2024-02-19

主要实体: 客户 客人 预订 房间分配

我想实现一个多房间预订数据库设计。首先我想先解释一下这个概念:

  1. The Client是获得预订的人。
  2. The Client一次只能有 1 个预订
  3. The Client可以预订多个房间。
  4. 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(使用前将#替换为@)

多房间预订的数据库设计:一对多 的相关文章

随机推荐

  • JQuery,setTimeout 不起作用

    我对 JQuery 还很陌生 在让我的 ajax 示例工作的过程中 我因 setTimeout 而陷入停滞 我已经把它分解到应该添加 的地方 每秒到div 相关代码在两个文件中 索引 html div Text div and myCode
  • ASP.NET MVC 路由在虚拟目录中不起作用

    我有一个 asp net mvc 2 应用程序 使用 net 4 0 在虚拟目录中托管时无法正确路由 我有以下简单的路由规则 routes MapRoute Default Route name action URL with parame
  • 如何在 Node.js 中创建附加 writeStream

    当前文档here http nodejs org api html fs writestream 152似乎没有提到任何控制流行为的参数 无论是每次重新创建文件还是只是附加数据 有没有办法创建一个附加数据的 writeStream 有一个创
  • IE 9 jQuery 不设置输入值

    我的问题很简单 我有一个输入文件字段 我想将其限制为仅通过 Jquery 接受 GIF 如果格式错误 请将输入值设置为空白 问题是 在 IE9 上 val 不起作用 有任何想法吗 我的 jQuery input type file chan
  • MSI 安装程序的可执行文件

    我有一个文件夹 其中包含两个 EXE 文件和许多其他文件 如何将其转换为 MSI 安装程序或某种自解压安装程序以便安装Main exe到 Windows 中的程序 第二个EXE文件是因为两个EXE文件之间的通信 我更希望它能够包含 桌面快捷
  • 转义字符串中的双引号

    如何在 Grails 中转义字符串中的双引号 string 12 10 On Going Submission of Made Up Samples 我尝试了很多方法 text artifact text encodeAsJavaScrip
  • 将变量传递给部分,rails 3?

    我有一个这样的循环 然后在我的中间部分 如何访问当前帖子 尝试这个 像这样你就会有一个局部变量post部分内可用
  • 如何将div添加到React Native?

    我刚刚开始我的反应本机应用程序并遇到了一些麻烦 我有一些反应经验 但这似乎没有多大帮助 文本周围的 div 应该是我的应用程序标题 所以我尝试对其进行样式设置 但由于某种原因它会抛出一个错误 指出无法识别 import StatusBar
  • Mercurial - 如何从分叉的父级获取最新更改?

    我接触 Mercurial 已经有一段时间了 现在我已经在 BitBucket 上建立了几个项目 一个是另一个项目的分叉 我已经能够毫无问题地对每个存储库进行更改 但我不明白的一件事是如何使分支与父存储库的更改保持同步 在我分叉了一个存储库
  • Mockito:想要但没有被调用

    我有以下测试方法 MyClass myClass Mockito mock MyClass class Mockito when myClass methodUsedInMethodBeingTested Matchers any MyTy
  • Python pandas:将字符串拆分为多列并从拆分参数中提取列的数据

    我对 Python 和 Pandas 很陌生 在一列中有一些 URL 路径 我想将其分成单独的列 字符串的每个参数都用分号分隔 我知道关于如何通过分隔符将数据拆分为多个列还有许多其他答案 但是在我的示例中 我想动态创建列并从参数本身提取要放
  • 一次为多个结构实现一个特征[重复]

    这个问题在这里已经有答案了 我有特质FooTrait它有很多功能 我也有结构FooStruct and BarStruct并想要实施FooTrait对于两个结构体 其方法完全相同 有没有办法实现FooTrait对彼此而言FooStruct
  • 我可以将我自己的 Python 类与 numpy 或其他矩阵库一起使用吗?

    我希望能够使用 Python 类作为元素进行矩阵运算 在本例中 是一个简单的伽罗瓦域 http en wikipedia org wiki Galois field执行 它实现了必要的 add mul sub etc 起初 我认为这应该可以
  • Javascript:iFrame 中的事件

    我正在建造一个WYISWYG编辑器与iframe with designMode on 问题是我无法在 Firefox 和 Opera 中的 iframe 上使用任何事件 IE 未经测试 例如我想跟踪 onkeyup 事件 document
  • 如何在 python 中使用带有可选字符的正则表达式?

    假设我有一个字符串 3434 35353 和另一个字符串 3593 如何创建一个能够匹配两者的正则表达式 而无需在另一个失败时将模式设置为其他内容 我知道 d 将匹配3593 但它对3434 35353 but d d 只会匹配带小数的那个
  • 无法在 GCP AI Platform 笔记本上安装 Jupyterlab 扩展

    我在安装 Jupyterlab 扩展时开始遇到以前从未遇到过的问题 安装 Jupyterlab 的新扩展后 我无法构建 我正在使用 GCP AI Platform Notebooks 运行 Jupyterlab 我在 Debian 10 上
  • socket.gaierror: [Errno -2] 名称或服务未知

    我是套接字编程的新手 以下程序是一个从服务器请求文件的客户端程序 但我收到如下所示的错误 我的输入是 GET index html 代码是 谁能帮我解决这个错误 usr bin env python import httplib impor
  • R 可以将表情符号字符转换为对应的文本吗?

    在我昨天的提问中 R 可以读取 html 编码的表情符号字符吗 https stackoverflow com questions 48142634 can r read html encoded emoji characters user
  • jQuery - 使用 .val() 函数检测值变化

    我们都知道使用val 不会触发change事件 所以我们也使用 trigger change 在 后面val 但问题是有人写了val 没有与trigger 这是一个外部文件 我无法编辑它 那么 如何通过如下代码检测值变化 elem on c
  • 多房间预订的数据库设计:一对多

    主要实体 客户 客人 预订 房间分配 我想实现一个多房间预订数据库设计 首先我想先解释一下这个概念 The Client是获得预订的人 The Client一次只能有 1 个预订 The Client可以预订多个房间 The Guest是被