在我的学生数据库中,我想存储例如每年的4月开始并且在下一年的3月结束的学校会议。我希望将会话年存储为2014-2015,2015-2016等。我不确定哪种数据类型最适合存储此类字符串。请帮忙并提出建议。
答案 0 :(得分:2)
存储2014-2015字符串的最佳数据类型是什么?
这取决于你想要做什么。因此,为了提供答案,我们必须对此做出一些假设。
如果您仅 存储字符串" 2014-2015"为了向人类观众识别会话,您可以简单地对待" 2014-2015"作为会话的任意标签,与调用会话"会话3"或" Frank"无异。因此,将其保存为具有适当长度的VARCHAR
就足够了。
但是,如果您希望系统具有与" 2014-2015"所代表的日期范围相关的逻辑,即要弄清楚如果" 2014-2015"会议在" 2015-2016"之前,之后或重叠进行。会话,将其保存为字符串数据突然是一个非常糟糕的主意。
由于您可能希望满足这些要求的两个是合理的,我建议将数据分开:有一个字符串字段,用于将会话标识为" 2014-2015& #34;并有两个DATE
字段,用于标识会话的开始和结束日期。这使您可以在正确的上下文中使用正确的数据类型,而不必强迫您根据需要编写大量逻辑来转换类型。
答案 1 :(得分:1)
对于数百行,只需CHAR(9) CHARACTER SET ascii
。
对于数百万行,请考虑以下几点:
ENUM('2014-2015', '2015-2016', ...)
- 1个字节TINYINT UNSIGNED
(1个字节)和JOIN
到包含字符串的表格YEAR
(2个字节),但随后有SELECTs'构造' ' 2014 - 2015年'来自' 2015'。