MySQL表或PHP在工作时间爆炸[关闭]

Posted

技术标签:

【中文标题】MySQL表或PHP在工作时间爆炸[关闭]【英文标题】:MySQL tables or PHP explode for business hours [closed] 【发布时间】:2013-05-01 15:24:46 【问题描述】:

我需要存储 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>

【问题讨论】:

好的,所以你的问题很漂亮,但是你需要进行适当的研究来帮助你确定如何解决它。当您在实施您的选择时遇到特定问题时,您可以回到这里提出问题。 FWIW,如果是我,我会采用你最初的方法。 您是否需要使用此数据作为连接、过滤、排序等标准来执行任何类型的数据库查询? 一般来说,如果您要分解存储在单个字段中的数据,则应改为将数据拆分为多个字段。此外,2800 行并不是一个重要的数量,在这里不应该是一个问题。只要索引得当,几十万甚至上亿都不是问题。接受它,做你想做的事。 谢谢大家!听起来,在这一点上,表格方法是要走的路。 @Mike Brant:在这一点上,我想不出除了输出数据之外我还需要做更多的事情。 【参考方案1】:

我肯定会使用表格 你可以用两种方式来组织它:

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

水平表: id,店铺ID, M,T,W,TH,F,S,SU

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

【讨论】:

这是一个非常好的观点。感谢您的周到回复。现在我只需要考虑垂直与水平。谢谢! 我个人认为垂直更好。只是因为它为您提供了更多的灵活性并且您的查询更容易。但这只是我的观点。 :D 如果我能以其他方式提供帮助,请告诉我。 谢谢,约翰。我也倾向于垂直。我在想,如果一家企业在午餐时间关门,我可以在第一组时间排一排,第二排排一排,然后在输出当天按时间排序。否则,水平,我必须在现场划定时间并爆炸。 没错!祝你好运:D【参考方案2】:

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

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

现在,如果您确实认为需要查询营业时间信息(即显示现在谁营业、谁星期六营业等信息),那么我会听取该线程上大多数其他评论者的建议并对数据进行规范化。

【讨论】:

以上是关于MySQL表或PHP在工作时间爆炸[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用10组不同的表或1组是否更好? [关闭]

PHP MySQL查询不返回结果[关闭]

MySQL 和 PHP 的 CRUD [关闭]

在隐藏的工作表或工作簿上可以执行哪些 Excel VBA 操作?

使用 Jquery、PHP、Mysql 进行 Ajax 分页 [关闭]

mysqlhotcopy 不工作。为啥? [关闭]