1

嗨,我是编程方面的新手,尤其是数据库设计方面的新手。我刚刚开始使用数据库,我想知道其中哪一种设计给了我更好的性能并且更合理。我已经建立了预订酒店表这样的:

为每个 Resevation 设置 DateIn 和 DateOut 为每个 Resevation 设置 DateIn 和 DateOut

为每个房间/天设置标志 为每个房间设置标志

假设我们最多有 100 个房间,所以如果我想为第二张图片生成表格(50 年)大约需要 15MB((100(room)*8(bit)+3(Date))*365(Day)*50(年))的容量,但我认为当我想查询时,它会给我更好的性能。第一张图片的查询更复杂,如果你给我理由或更好的方法,我认为性能会降低。提前致谢

4

1 回答 1

1

我的意思是,这确实与您计划如何访问和更改数据有关。我几乎在所有情况下都推荐第一个,但我不会否认可能存在第二个更好的边缘情况。我怀疑你的情况是这样的。

第一个为人们对预订的看法提供了一个更合理的近似值(这很好)——它还巧妙地编码了谁将在哪天住在哪个房间,将其与您的数据库的其余部分相关联,并考虑到预订信息,客人信息。当您尝试从您收集的数据中收集洞察力时,这些为您提供了重新构想数据关系的能力。例如。十年后,如果 CEO 说:“嘿,我们历史上一年中最受欢迎的日期是什么?使用“预订”模型,您可以轻松编写程序查询来找出答案。使用“日期” /Room Matrix 模型,您将不得不手动检查每一列。毛。

虽然第二种模式非常适合从不打算改变的酒店,但如果房间需要轮换放置怎么办?另一个带有布尔值的 100 列表,哪些房间在哪几天可供公众使用?将混乱与混乱混为一谈?如果加一个翅膀呢?您是否要在此表中添加另外 25 列等?它可能会为您提供“哪些房间可用,知道吗?”的一些运营效率。- 但是您将如何构建“哪些房间将在 8 月 3 日至 6 日期间可用?”的查询?

请记住,在关系数据库中,您要根据列中的值选择一组特定的行,您将很难根据行值选择一组列。

于 2013-01-25T17:25:04.513 回答