【问题标题】:Store all dates in one table将所有日期存储在一张表中
【发布时间】:2018-04-05 02:00:27
【问题描述】:

我的数据库中有很多表,每个表都有一个或两个字段,即 DATE 字段。这增加了我的数据库大小,所以我正在考虑将所有 DATE 字段存储在一个表中并添加到所有表的关系。这可能是个好主意吗?

My database, example:
Old design
tblCustomer  = > CustomerID, Surname,    Name,        DateFirstVisit,  DateStopped
tblOrder     = > OrderID,    CustomerID, DateOrder,   Order,           DateShiped
tblPayment   = > PaymentID,  CustomerID, DatePayment, Price,           DateCheck


New design
tblCustomer  = > CustomerID, Surname,    Name,        DateInID,  DateOutID
tblOrder     = > OrderID,    CustomerID, DateInID,    Order,     DateOutID
tblPayment   = > PaymentID,  CustomerID, DateInID,    Price,     DateOutID
tblDateIn    = > DateInID,   DateIn
tblDateOut   = > DateOutID,  DateOut

我可以合并 tblDateIn 和 tblDateOut 吗?

谢谢...

【问题讨论】:

  • 这没有多大意义 - 您仍将存储日期,现在您必须将这些表多次连接到其他表。 OrderDate 属于orders 表,payment date 属于payments 表。您担心的数据库有多大?
  • 有可能吗? 是的。 好主意与否? 不是。除了,也许,对于一些非常特殊的情况,这不是。

标签: database ms-access database-design


【解决方案1】:

从技术上讲,是的,您可以通过这种方式进一步规范化您的数据库。您甚至可以拥有一个包含每个日期的 Dates 表,并通过引用 DateID 来使用这些日期,但这是过度规范化。

除了使简单查询变得更加复杂(因为您每次都必须加入日期表)之外,我认为您会发现您并没有节省那么多空间,而且可能会使用更多空间。我不确定 Access 使用什么,但日期通常在内部存储为十进制值或表示自开始日期以来的秒数的整数。在任何情况下,通过使用整数键与 Access 的内部日期值相比,您在表中节省的空间会很小,并且可能会通过在外键中涉及额外的表和索引来抵消。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多