如果我将多部分报告输入到数据库中,我应该将每个部分都设为单独的表格吗?
随着时间的推移,该报告可能会添加其他部分。
创建一个随着时间的推移将添加列的表是不好的做法吗?
谢谢
如果我将多部分报告输入到数据库中,我应该将每个部分都设为单独的表格吗?
随着时间的推移,该报告可能会添加其他部分。
创建一个随着时间的推移将添加列的表是不好的做法吗?
谢谢
“创建一个随着时间的推移会添加列的表是不好的做法吗?”
没有。只要是“一件事”。
将你的数据分成基本名词,然后计算出它们之间的关系类型。
如果它是一对多的,那么在指向一个的多个上放置一个外键。如果是多对多,则引入映射表。
编辑:使用替代答案中给出的示例进行扩展...
由等Invoice
组成Description
Date
Notes
,因此这些应该是发票上的字段。但是,由于它有很多 InvoiceItems
,因此这些应该是带有外键的单独表,以便于扩展。
我应该将[报告]的每个部分制作成单独的表格吗?
一般来说,没有。
报告是一种“显示”机制。一般来说,它们在数据库中没有任何结构。但是,报告结构可以从数据库结构派生。
例如,考虑一张发票。通常,发票(一种报告)将使用至少两个表格,每个表格代表发票的“部分”:
InvoiceHeader
Name
Address ...etc
InvoiceLineItems
ItemID
Quantity ...etc
此外,您可能拥有代表报告部分的表格,但这些表格不属于实际数据的一部分。 但是,如果不了解您的特定应用程序的更多信息,就很难推测这些可能是什么样子。
这实际上取决于报告的内容。“多部分”是由什么组成的?
例如,如果我要报告给定部门的员工,我希望有一张包含所有员工的表格(或者如果标准化有意义的话,也可以是一组表格 - 但为此目的,让我们对一张表格进行成像)。然后我可能会有一个包含多个部分的报告,每个工作人员一个。
但是,如果该报告有一个关于员工的部分,另一个关于他们制作了多少小部件,另一个关于他们工作了多少天,我希望有一张员工表,一张用于小部件,一张用于工作日。
然后我的报告将从适当的表格中提取以填充报告。
通常,规范化规则与有效存储数据的需要有关,而不是与报告的设计有关。规范化试图通过确保每条数据只保存一次并且不受其他数据条更改的影响来避免插入、删除和更新异常。这不仅仅是一份报告或任何其他单一活动推动了规范化。