将单个表分成两个表

问题描述

考虑具有50列的表dbo.order。将其30个字段分成另一个表bill_invoice的好方法吗?详细信息如下:

表格(订单)

id(pk); order_id; order_amont; ...最多20个字段

表(bill_invoice)

id(pk); order_id(来自dbo.order表的fk); field_1; field_2 .... up to field_30

....及其详细信息表是:

表(bill_detail_01)

id(pk); bill_invoice_id(来自dbo.bill_invoice的fk); field_1,field2 ...到field_10

表(bill_detail_02)

id(pk); bill_invoice_id(来自dbo.bill_invoice的fk); field_1,field2 ...到field_10

表(bill_detail_03)

id(pk); bill_invoice_id(来自dbo.bill_invoice的fk); field_1,field2 ...到field_10

。 。 。

如果我们有一个表dbo。[order]有50个字段,那么在插入50个字段记录时会很重吗?

那我们应该把这个主要的dbo。[order]字段分解成另一个表(bill_invoice)吗?如上所述吗?

这是减少插入负载的好方法吗?还是应该只使用dbo。[order]具有50个字段?

解决方法

我认为现代数据库系统无法处理50个数据字段的数据插入/更新操作。

如果将数据拆分到不同的表中,则说如果要删除一条记录,则需要删除所有“拆分”表中的所有“链接”记录。工作量甚至会更大。

另一方面,如有必要,将使用标准化。例如,如果您想减少冗余或类似目的。但这通常与数据插入加载问题无关。