哪个设计更好,在数据库中存储天数
我想让用户看到课程的日期。例如,计算机课程将在 2019 年 12 月举行
1/9, 2/9, 3/9.
,那么,如何将这些日期存储在数据库中呢? 一列存储一个像这样的字符串:
1/9/2011,2/9/2011,3/9/2011
或一个单独的表,像这样:
event_id date
1 1/9/2011
1 2/9/2011
1 3/9/2011
谢谢。
I would like to let user see the date about the course. For example, a computer course will held on
1/9, 2/9, 3/9.
So, how to store these day in the database?
one column the store a string like this:
1/9/2011,2/9/2011,3/9/2011
or a separate table like this:
event_id date
1 1/9/2011
1 2/9/2011
1 3/9/2011
Thank you.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
单独的表是正确的设计,因为这就是您的架构标准化的方式。表列应包含单一类型的值。
数据库规范化的第一范式指出:
The separate table is the right design, because that's how your schema will be normalized. A table column should hold a single type of value.
First normal form of database normalization states:
几乎每个数据库都有一个
DATE
数据类型,它正是可以做到这一点。另外:使用数据标准化:单独的表是正确的方法。
Almost every database under the sun has a
DATE
datatype, which will do exactly this.Also: use data normalisation: The separate table is the way to go.
我将有一个包含(至少)3 列的表格,使用
date
类型作为开始日期和结束日期I would have a table with (at least) 3 columns, using the
date
type for the start and end date一列应该只存储一个值。单独的桌子。
作为 CSV,如何
A column should store exactly one value only. Separate table.
As a CSV, how can you
两种方法都有自己的优点
第一种方法适合简单的数据结构,
这意味着您的数据量可能很小,
您的项目工作范围很小,
并且您不希望花费太多精力
从长远来看,不好的事情很难维持
第二种方法更适合标准化
但需要更多代码/JOIN 才能获取相同的信息
(您可以在第一种方法中一步完成)
d/m/Y
中的日期字符串BAD,让演示语言确定区域设置
ISO 格式 YYYY-MM-DD 将是更好的选择
both methods has it own benefits
first method will suit for simple data structure,
that's mean your data size could be small,
your project job scope is small,
and you don't wish to spent too many effort on that
the bad is hard to maintain in long run
second method will better for normalization
but require more code / JOIN to get the same piece of information
(you can do in one step in the first method)
Is BAD for date string in
d/m/Y
,let the presentation language to determine the locale
ISO format YYYY-MM-DD will be the better choice