在 mySQL 数据库中存储阵列的替代。每个订单的多个日期

标签: MySQL PHP
发布时间: 2017/4/9 22:06:19
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我建立一个预订系统,可存储的预订日期,你的关注,如何存储这些数据。

我想要有这样的表

order_id     DateRSVP   
----------   ------------ 
1            1/1-1/3, 1/5, 1/7

我应该将它作为字符串存储和内爆爆炸 ,

order_id     DateRSVP   
----------   ------------ 
1            1/1, 1/2, 1/3, 1/5, 1/7

或者我应该做

order_id     DateRSVP
----------   ------------
1            1/1
----------   ------------
order_id     DateRSVP
----------   ------------
1            1/2
----------   ------------
order_id     DateRSVP
----------   ------------
1            1/3

或者是有更多的效率方式来完成它

解决方法 1:

我将创建两个表。Orders and Order_dates.Orders将只列出订单信息包括 order_id。 Order_dates会使用存储的日期 DATE 数据类型如下所示︰

+----------+------------+------------+
| order_id | start_date | end_date   |
+----------+------------+------------+
| 1        | 2016-01-01 | 2016-01-03 |
+----------+------------+------------+
| 1        | 2016-01-05 | 2016-01-05 |
+----------+------------+------------+
| 1        | 2016-01-07 | 2016-01-07 |
+----------+------------+------------+
| 2        | 2016-02-07 | 2016-01-07 |
+----------+------------+------------+

这样您可以方便地查询它以正确的方式如果需要在将来使用 SQL 函数和索引。正如 @Oliver 所说在他的评论之一︰ "存储序列化数据没关系如果你不需要搜索通过它,尤其是如果它将需要大量的甚至专用的表或列。然而,如果从来人需要用它来搜索,订购,分组......然后都别想序列化此类的数据。"

官方微信
官方QQ群
31647020