【问题标题】:Best way to insert multiple dates to a row in MySQL在 MySQL 中的一行中插入多个日期的最佳方法
【发布时间】:2011-09-13 11:40:12
【问题描述】:

我有一个表格来预订多个日期的广告,这些日期是通过在表格中使用日历选择的,然后以 JSON 格式发布。一个例子是:

[20110915, [20110918, 20110925], 20110926, 20110927]

但我在为每个广告存储此 json 字符串时遇到问题。

  1. 您建议如何将此日期与广告相关联?
  2. 如何使用其中一个日期来选择广告。

我不想将每个日期分别存储在不同的表中(这会使数据库变得庞大)。

【问题讨论】:

  • 这是关于数据库结构的问题还是关于 PHP 的问题?
  • 大容量数据库比使用通配符搜索更好

标签: mysql database-design


【解决方案1】:

您建议如何将此日期与广告相关联?

您应该将它们存储在一个关系表中,其中包含广告的 ID 和预订日期。

ad_bookings

ad_id | booking_date

PRIMARY KEY 将是复合词(ad_id, booking_date)

示例数据为:

ad_id        | booking_date
---------------------------
1            | 2011-09-15
1            | 2011-09-18
1            | 2011-09-19
1            | 2011-09-20
1            | 2011-09-26
2            | 2011-09-27
2            | 2011-09-30

如何使用其中一个日期选择广告。

    SELECT *
      FROM ads a
INNER JOIN ad_bookings ab
        ON a.ad_id = ab.ad_id
       AND ab.booking_date = '2011-09-30'

【讨论】:

  • @Vaibhav Gupta:如果你已经在做,那就不要再看了。与在非规范化表模式中插入、更新和选择的噩梦相比,使其“表体积庞大”并不是一个糟糕的解决方案。
猜你喜欢
  • 1970-01-01
  • 2014-12-14
  • 2010-09-07
  • 1970-01-01
  • 2016-12-14
  • 1970-01-01
  • 2014-01-11
相关资源
最近更新 更多