MySQL表或PHP在工作时间爆满


MySQL tables or PHP explode for business hours

我需要为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>

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

垂直表:id,店铺id,星期几,小时数

水平表:id、Store id、M、T、W、TH、F、S、SU

每种方法都有利弊,但遵循这种方法可以让您快速列出特定日期的所有商店营业时间。否则,您将不得不解析每一行并将其扩展到当天的位置,或者使用类似于课税的语句。

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

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

现在,如果你确实认为你需要查询营业时间信息(即显示信息,如谁是开放的现在,谁是开放的星期六,等),那么我会采取大多数其他评论的建议在这个线程和规范化的数据。