Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql结构提供租赁服务_Mysql_Sql_Database Design_Data Modeling - Fatal编程技术网

Mysql结构提供租赁服务

Mysql结构提供租赁服务,mysql,sql,database-design,data-modeling,Mysql,Sql,Database Design,Data Modeling,我必须将一个30000个位置的可用性日历导入MySQL,而我一直在进行结构设计。我需要的东西,这将允许我轻松地子查询和加入一个给定日期的签入可用性 事实上,每天都有几个选择 您可以签入和签出 不可用 只有坎切金 坎切科特 应要求 那么,对于一张桌子来说,什么是最理想的解决方案呢 PlaceId Day AvailabilityCode ??? 那我就有366*30000行了?我很害怕 还有更好的办法吗 我应该解析的xml数据如下所示 <?xml version="1.0" en

我必须将一个30000个位置的可用性日历导入MySQL,而我一直在进行结构设计。我需要的东西,这将允许我轻松地子查询和加入一个给定日期的签入可用性

事实上,每天都有几个选择

  • 您可以签入和签出
  • 不可用
  • 只有坎切金
  • 坎切科特
  • 应要求
那么,对于一张桌子来说,什么是最理想的解决方案呢

PlaceId Day AvailabilityCode    ???
那我就有366*30000行了?我很害怕

还有更好的办法吗

我应该解析的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分钟导入一次并重新填充数据库。

365*30000在一个只有小字段的表中是1000多万条记录(int-id,date或day,以及一个代码,可能也是int或char(1))。这在MySQL中是非常可行的,并且只有在多次读取和频繁更新此表时才会成为问题。如果只是偶尔更新,则具有1000万或2000万条记录的表不会有多大问题

但也许有更好的解决方案,尽管它可能更复杂

对我来说,这听起来像是一些预订计划。如果是这样,每个地方可能都有可以预订的季节。你可以给每个地方一个默认值,甚至每个季节都有一个默认值。例如,一个地方从3月到8月可用,其他月份不可用。然后,当一个地方在s期间预订时当它变得不可用时,您可以将该值放入您建议的表中

通过这种方式,您可以检查所请求地点的某一天是否存在记录。如果不存在,您可以检查“地点”表(30000条记录)或“季节”表中的默认值,在该表中,每个地点每个季节都有一条记录(每个地点可能有2到4条记录)。这样您就可以将记录数量减少很多


P>但是记住,如果你几乎每天都有预订的话,这是行不通的。在这种情况下,你几乎不需要默认值,而且在每天的状态表中仍然有成百上千的记录。正如我之前所说的,这可能根本不是问题,但是无论如何你应该考虑是否更复杂的解决方案。是否帮助您减少数据。这取决于您的情况。

您只需要在某些数据不可用时添加行。日期和房间缺少行可能会隐式解释为可用性

我认为您的问题是XML提要,而不是表结构。最简单的解决方案是让提要提供商提供JU这不是一个三角洲,而不是整个垃圾场。但大概有一个很好的理由说明这是不可能的

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


例如,MySQL自5.1和之后仅具有XML功能。因此,如果要预处理XML文件,可能必须在数据库之外进行。另一种方法是将最新的文件加载到暂存表中,并使用SQL查找和应用差异。

您只需在不存在差异时添加行可用。日期和房间缺少一行可以隐式地解释为可用性只允许签入:我想那应该是贝茨汽车旅馆。问题是可用性日历是由XML提要提供的,我必须每隔10-20分钟将其提取并重新填充到我的数据库中……问题是我应该以XML方式获取可用性和可用性每10-15分钟重新更新一次所有的日历…你能帮我一点表结构吗?我使用mysql服务器作为数据库,并用额外的脚本导入XML。这没什么大不了的。问题是以这种方式创建一个表,这样就很容易处理(比如说通过左连接查询可用性)并使表可复制。。。