我正在使用PHP和MySQL创建一个页面,显示各个商店的开放时间。
数据来自另一个站点的API。目前有一个cron脚本将商店信息复制到本地数据库,这使得显示数据时更快。
我的计划是将开放时间添加到此cron任务并将它们存储在本地数据库中。是否更好的做法是在一周中的每一天向数据库添加7列,或者有一列并将开放时间添加为json编码的字符串?
像往常一样,存储数据的最佳方式取决于您将如何查询数据。
使用JSON可以轻松地将一周中的所有日期存储在一个JSON结构中,但这使得很难进行任何搜索(如上面评论的andrew)。这取决于哪些任务对您的应用程序更重要。
使用七列可以轻松搜索特定日期的开放时间,但更难以搜索所有七天的开放时间。或者在最早的开放时间找到星期几。或者总结每周开放的小时数。
我将它存储为一个单独的表,每个商店每周一行:
CREATE TABLE ShopOpen (
shop_id INT NOT NULL,
day_of_week TINYINT NOT NULL,
open_start TIME NOT NULL,
open_end TIME NOT NULL,
PRIMARY KEY (shop_id, day_of_week)
);