如何在 MySQL 内的一个单元格中存储多个数据?

0 mysql database-design

我想连续存储多个日期。每行都有一个唯一的id,每个对应的id可以有多个操作日期。每行的日期数可能不同。我有多个 ID,每个 ID 都有多个日期。

ID 日期1 日期2 日期3 ... ... ...
1 2018-05-19 2018-04-09 2018-08-09
2 2016-01-30 2017-05-04 2016-06-07 2020-05-17 2021-06-23 ...
3 2001-05-06
4 2018-11-05 2013-06-09

为给定存储多个日期的最佳方法是什么id

Dav*_*ett 7

除非每个日期都是特定的属性(开始日期、结束日期、截止日期、创建日期等),否则将它们存储为列可能是不好的形式。

您可能会更好地将日期存储在单独的行中,如下所示:

ItemDates
===========
ID     (PK)
ItemId 
Date
Run Code Online (Sandbox Code Playgroud)

所以:

ID   Item   Date
 1   1      2018-05-19   
 2   1      2018-04-09
 3   1      2018-08-09
 4   2      2016-01-30
 5   2      2017-05-04
 6   2      2016-06-07
 7   2      2020-05-17
 8   2      2021-06-23  
 9   3      2001-05-06
10   4      2018-11-05
11   4      2013-06-09
Run Code Online (Sandbox Code Playgroud)

或者,如果每个项目的日期都是唯一的,您可以不用代理键 ( ID) 并声明ItemId,Date为主键。

如果你不小心,这可能会变成一个属性包(实体/属性/值或 EAV 模式,这通常被认为是一种反模式)。有关您的用例的更具体建议,您应该使用有关日期值在您正在建模的系统中代表什么的更多信息来更新问题。