数据库体系结构 - 有2个单独的列或1个

时间:2017-07-28 12:19:10

标签: database

Okey,上下文:

我的系统需要每月,每周和每日报告。

架构 A : 3桌: 1)每月报告 2)每周报告 3)每日报道

架构 B : 1表: 1)报告:使用额外列report_type,其值为:"每月","每周","每日"。

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

1 个答案:

答案 0 :(得分:0)

我使用的常用方法是使用两个表,类似于B方法。您可以使用报告数据和额外列来描述一个表,但是此列不会对值进行硬编码,而是将id保存到引用表。然后,参考表将保存这些值的名称。此设置允许您在以后需要时轻松引用其他表的间隔,但也可以使名称更新更加高效。将“每月”的名称更改为“月”将需要在此处进行一次更新,如果您将字符串存储在报告表中,则需要更新。

样本结构:

report_data | interval_id
xxxx        | 1

interval_id | name
1           | Monthly

作为旁注,由于它限制了更改输入数据的间隔类型,因此很少需要采用第一种方法,即方法A.如果您突然想要将每日条目的一半更改为每周条目,则需要执行n / 2次删除和n / 2次插入,这相当昂贵,尤其是如果您开始引入索引。通常,表格应描述数据类型(即报告),列应描述该类型(即报告发生的频率)