MySQL表或PHP在工作时间爆炸

时间:2013-05-07 15:34:11

标签: php mysql arrays multidimensional-array

我需要为200多个独特的业务(并且不断增长)存储营业时间。每个企业都有不同的营业时间,有些则午餐时间关闭。此外,企业可能会在某一天上午8点和另一天上午9点营业。我最初的想法是构建一个MySQL表来处理这个问题,但之后我考虑将它存储在一个单元格中并将结果展开。爆炸它,我会存储这样的东西......

// "8:00-17:00|9:00-18:00|8:30-12:30,13:30-17:30|8:00-17:00|8:00-17:00|8:00-11:00||"

// For Day Data:             Explode "|"
// For Open/Close Data:      Explode "-"
// For Converting to am/pm:  Explode ":"

对于单个单元存储,它是从clientData表(已经循环通过)中提取的数据的数组处理。使用单独的MySQL表,我看每个客户端7-14行(启动1,400 - 2,800行),具体取决于它的构建方式。有一种方式比另一种更好。你会怎么做到这一点?

谢谢!

期望的输出

<div class="businessHours" itemscope itemtype="http://schema.org/LocalBusiness">
    <time itemprop="openingHours" datetime="Mo 8:00-17:00"><strong>Monday:</strong> <span>8:00am-5:00pm</span></time>
    <time itemprop="openingHours" datetime="Tu 9:00-18:00"><strong>Tuesday:</strong> <span>9:00am-6:00pm</span></time>
    <time itemprop="openingHours" datetime="We 8:30-12:30,13:30am-17:30"><strong>Wednesday:</strong> <span>8:30am-12:30pm, 1:30pm-5:30pm</span></time>
    <time itemprop="openingHours" datetime="Th 9:00-18:00"><strong>Thursday:</strong> <span>9:00am-6:00pm</span></time>
    <time itemprop="openingHours" datetime="Fr 8:00-17:00"><strong>Friday:</strong> <span>8:00am-5:00pm</span></time>
    <time itemprop="openingHours" datetime="Sa 8:00-1:00"><strong>Saturday:</strong> <span>8:00am-11am</span></time>
    <time itemprop="openingHours" datetime="Su "><strong>Sunday:</strong> <span>Closed</span></time>
</div>

2 个答案:

答案 0 :(得分:2)

我肯定会使用表格你可以用两种方式构建它:

垂直表: ID,商店ID,星期几,小时

横向表: id,商店ID,M,T,W,TH,F,S,SU

每个人都有自己的利弊,但遵循这种方法可以让您快速列出特定日期的所有商店营业时间。否则你将需要解析每一行并将其分解到当天的位置,或者使用类似税收的陈述。

答案 1 :(得分:1)

我将在这里提出反对现行逻辑的反驳论点。如果如你所说的那样,你不希望将来某个时候有任何需要查询特定的营业时间数据,那么我建议整个数据集合只是业务的一个属性,可以存储像这样以序列化的方式。这将使每个业务的数据写入和检索更加优化(消除了许多表中更复杂的查询)。

我建议您也可以将数据存储为序列化格式(也许是JSON,也许是PHP的本机序列化格式),这样在检索时您可以简单地反序列化数据并使用它。

现在,如果你认为你需要查询营业时间信息(即显示谁现在开放,谁是星期六开放等信息)那么我会接受大多数其他评论员的建议并规范化数据。