哪个设计更好,在数据库中存储天数

发布于 2024-12-01 10:55:39 字数 317 浏览 0 评论 0原文

我想让用户看到课程的日期。例如,计算机课程将在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

纸短情长 2024-12-08 10:55:39

单独的表是正确的设计,因为这就是您的架构标准化的方式。表列应包含单一类型的值。

数据库规范化的第一范式指出:

每个行和列的交集恰好包含一个来自
适用的域(仅此而已)。

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:

Every row-and-column intersection contains exactly one value from the
applicable domain (and nothing else).

似狗非友 2024-12-08 10:55:39

几乎每个数据库都有一个 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.

风蛊 2024-12-08 10:55:39

我将有一个包含(至少)3 列的表格,使用 date 类型作为开始日期和结束日期

event_id start_date end_date
1         1/9/2011  3/9/2011

I would have a table with (at least) 3 columns, using the date type for the start and end date

event_id start_date end_date
1         1/9/2011  3/9/2011
日久见人心 2024-12-08 10:55:39

一列应该只存储一个值。单独的桌子。

作为 CSV,如何

  • 找到从 2/9/2001 开始的课程
  • 通过
  • 删除 2/9/2001、添加 4/9/2011 等

A column should store exactly one value only. Separate table.

As a CSV, how can you

  • find course starting 2/9/2001
  • order by
  • delete 2/9/2001, add 4/9/2011 etc
哑剧 2024-12-08 10:55:39

两种方法都有自己的优点

第一种方法适合简单的数据结构,
这意味着您的数据量可能很小,
您的项目工作范围很小,
并且您不希望花费太多精力

从长远来看,不好的事情很难维持

第二种方法更适合标准化
但需要更多代码/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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文