将所有日期存储在一个表中

时间:2017-10-24 10:06:17

标签: database ms-access database-design

我的数据库中有很多表,每个表都有一个或两个字段,即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吗?

谢谢...

1 个答案:

答案 0 :(得分:2)

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

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