2010-03-24 40 views
0

大多数网站将日期(例如出生日期)信息捕获为单个实体(即通过日历控件),或者作为单独的字段(日期,月份,年份)捕获。用户界面中的日期表示

  1. 将它们显示为单独的字段有什么好处吗?
  2. 它们在数据库中表示为DATE数据类型还是单独的字段。

我只是想了解代表日期字段的优点&缺点。

回答

2

千万不要把日期分解成单独的数据库字段。它是一个事情:一个日期。它在数据库中作为单个日期字段。

您不会将金额分成美元和美分的单独数据库字段。你会怎么做数学?你必须重新构建件的数量。

您不会将其他数字分解为独立数据库字段中的单个数字。你会怎么做数学?你必须重新构建件的数量。

日期也是如此。你很少需要这些作品。当你这样做时,简单的功能将提供件。你更经常需要整个日期来进行数学运算。

此外,日期片段(特别是月份和日期)具有如此复杂的关系(每月28到31天,基于看似随机的规则),您永远不想尝试在自己的应用程序软件中进行数据运算。使用库。使用数据库库。

UI显示可能有单独的字段,以使用户“更容易”。 [就我个人而言,我发现很多领域都是视觉混乱。]但数据库不应该有单独的领域。

+0

我确实认同变得难以管理的验证部分,如果他们单独管理 – Sam 2010-03-24 17:23:06

+1

@Samuel:不是“硬”:“不可能”。日期计算真的很难正确。试图在数据库数据方法之外进行日期计算非常难以得到正确的结果,我宁愿将其称为“不可能的”。 – 2010-03-24 17:56:09

2

这取决于你打算如何使用数据。如果您只是简单地显示它,或者需要从日期中计算出某个人的年龄,请将其存储在一个日期字段中。如果您需要查看5月份的生日,那么单独的字段可能会更好。如果您需要同时执行这两种操作,则可以通过两种方式进行存储,尽管计算的字段最多可以避免必须不断删除部分日期的代价。

+0

即使我必须在5月份查找所有的出生日期,如果在组合日期字段上执行查询,是不是可能的? – Sam 2010-03-24 17:21:50

+0

感谢您对我的评论 – Sam 2010-03-24 17:47:16

+0

的输入哦,是的,这是可能的,但如果你经常这样做,你必须使用日期函数来找到它,如果你有一个单独的计算字段,你只需要在当时使用日期函数插入或更新,而不是每次查询。 – HLGEM 2010-03-24 17:56:06

1

如果您将其作为单独的字段进行编码,则更容易对页面进行编码。但将它们作为一个单一的实体来做它绝对会更好 - 更好的用户体验。

您可以在数据库中使用任一表示法。我个人可能会将它们合并到一个日期中,以便所有相关数据尽可能以小单元封装。

任何你需要检查的东西(比如上面的生日例子)都可以很容易地作为一个日期字段存储。

相关问题