【问题标题】:Mysql Structure for rental availability用于出租可用性的 Mysql 结构
【发布时间】:2011-12-06 09:00:09
【问题描述】:

我必须将包含 30,000 个位置的可用性日历导入 MySQL,而我被困在结构设计上。我需要一些可以让我轻松子查询和加入给定日期的 checkIn 可用性的东西。

其实每天都有几个选择

  • 可以签入和签出
  • 不可用
  • 只能签到
  • 可以结账
  • 按要求

现在什么是表格的最佳解决方案?

PlaceId Day AvailabilityCode    ???

那么我会有 366 * 30, 000 行吗?我害怕那个。

有没有更好的办法?

我应该解析的xml数据是这样的

<?xml version="1.0" encoding="utf-8" ?>
<vacancies>
<vacancy>
<code>AT1010.200.1</code>
<startday>2010-07-01</startday>
<availability>YYYNNNQQ</availability>
<changeover>CCIIOOX</changeover>
<minstay>GGGGGGGG</minstay>
<flexbooking>YYYYY</flexbooking>
</vacancy>
</vacancies>

在哪里


重要的附加信息:问题是可用性日历是作为 XML 提要提供的,我必须每隔 10-20 分钟导入它并重新填充我的数据库。

【问题讨论】:

  • 您只需要在某些内容不可用时添加行。日期和房间的缺失行可以隐式解释为可用性
  • 只能入住:我想那应该是贝茨汽车旅馆。
  • 问题是可用性日历是由 XML 提要提供的,我必须每 10-20 分钟将其拉出并重新填充到我的数据库中...

标签: mysql sql database-design data-modeling


【解决方案1】:

我认为您的问题是 XML 提要,而不是表结构。最简单的解决方案是要求提要提供者只提供一个增量而不是整个转储。但大概有一个很好的理由说明为什么这是不可能的。

所以你必须这样做。您应该以某种方式存储 XML 提要,并将新文件与前一个文件进行比较。这将为您提供增量,然后您可以将其应用于您的数据库表。您可以采用多种方法,您选择哪种方法在很大程度上取决于您的编程能力和数据库产品的功能。

例如,MySQL 自 5.1 和it is still pretty limited 起仅具有 XML 功能。因此,如果您想预处理 XML 文件,您可能必须在数据库之外进行。另一种方法是将最新文件加载到临时表中,并使用 SQL 查找和应用差异。

【讨论】:

  • 你能帮我解决一下表格结构吗?我使用 mysql 服务器作为数据库,并使用额外的脚本导入 XML。这没什么大不了的。问题是以这样的方式创建一个表,以便它易于处理(通过让我们说左连接查询可用性)并使表可复制......
【解决方案2】:

您只需要在某些内容不可用时添加行。日期和房间的缺失行可以隐式解释为可用性

【讨论】:

    【解决方案3】:

    365 * 30000 是一个表中的超过 1000 万条记录,只有小字段(int id、日期或日期,以及一个代码,它也可能是一个 int 或一个 char(1))。这在 MySQL 中是非常可行的,并且只有当您对该表进行多次读取和频繁更新时才会成为问题。如果只是不时更新,那么拥有 10 或 2000 万条记录的表不会有太大问题。

    但也许有更好的解决方案,虽然它可能更复杂。

    在我看来,这听起来像是某种预订计划。如果是这样,每个地方都可能有可以预订的季节。您可以为每个地方指定一个默认值,甚至可以为每个季节指定一个默认值。例如,一个地方从 3 月到 8 月可用,而在其他月份不可用。然后,当一个地方在夏季被预订并且它变得不可用时,您可以将该值放入您建议的表格中。

    这样,您可以检查所请求地点在给定日期是否存在记录。如果不存在,请检查“地点”表(30000 条记录)或“季节”表中的默认值,其中每个地点每个季节都有记录(每个地点可能有 2 到 4 条记录)。这样你可以减少很多记录的数量。

    但请记住,如果您几乎每天都有每个地方的预订,这将不起作用。在这种情况下,您几乎不需要默认值,并且每天状态表中仍然会有数百万条记录。就像我之前说的,这可能根本不是问题,但无论如何你应该考虑更复杂的解决方案是否真的会帮助你减少数据。这取决于你的情况。

    【讨论】:

    • 问题是我应该以 XML 方式获取可用性并每 10-15 分钟重新更新所有日历...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    • 2014-09-20
    • 1970-01-01
    相关资源
    最近更新 更多