MySQL - 将数据作为json存储在一列或单独的列中

问题描述 投票:0回答:1

我正在使用PHP和MySQL创建一个页面,显示各个商店的开放时间。

数据来自另一个站点的API。目前有一个cron脚本将商店信息复制到本地数据库,这使得显示数据时更快。

我的计划是将开放时间添加到此cron任务并将它们存储在本地数据库中。是否更好的做法是在一周中的每一天向数据库添加7列,或者有一列并将开放时间添加为json编码的字符串?

mysql json
1个回答
0
投票

像往常一样,存储数据的最佳方式取决于您将如何查询数据。

使用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)
);
© www.soinside.com 2019 - 2024. All rights reserved.