2017-07-28 40 views
0

Okey,上下文:数据库架构 - 有2个独立的列或1

我有一个系统,需要做每月,每周和每天的报告。

架构: 3表: 1)每月报告 2)每周报告 3)每日报告

架构: 1表: 1)报告:与额外的列report_type ,数值为:“每月”,“每周”,“每日”。

哪一个会更高效,为什么?

+0

为什么要将数据以报告格式存储在数据库中? – HappyCoding

+0

@HappyCoding,也许这只是一个记录表,知道报告何时运行。我做了类似的事情。 –

+0

更好的问题是,您能否告诉我们您计划在这些表格或表格中列出哪些列? – HappyCoding

回答

0

我用来做这件事的常用方法是使用两个表格,类似于你的B方法。一个表格就像你所描述的报告数据和一个额外的列,但不是硬编码值,这个列将持有一个id到一个参考表。然后参考表将保存这些值的名称。这种设置使您可以轻松地在后续需要的时候参考其他表格的间隔,而且还可以使名称更新更加高效。如果将说“每月”的名称更改为“月”,则需要在此处进行一次更新,如果将字符串存储在报告表中,则需要进行更新。

结构示例:

report_data | interval_id 
xxxx  | 1 

interval_id | name 
1   | Monthly 

作为一个侧面说明,你很少会想利用你的第一种方法,方法A,因为它是如何限制改变输入的数据的时间间隔类型。如果突然想要将每日条目的一半更改为每周条目,则需要执行n/2次删除和n/2次插入,这在开始引入索引时尤为昂贵。一般而言,表格应描述数据类型(即报告),列应描述该类型(即报告发生的频率)。

+0

我们不打算改变过去的报告数据。但是,我正在考虑B计划。 – IvRRimUm

+0

您应该尽可能在将来尽可能地验证数据库,因为以后更改安装程序可能非常困难并且非常耗时。但显然,如果你知道你的数据库的绝对设置,你应该改进。 – yanman1234