将单个 table 分解为两个 table

break up of single table into two tables

考虑一个有 50 列的 table dbo.order。将它的 30 个字段分成另一个 table bill_invoice 是不是一个好方法?详情如下:

table(顺序)

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

table ( bill_invoice )

id(pk); order_id(来自 dbo.order table); field_1; field_2 ....最多field_30

...他们的详细信息 table 是:

table (bill_detail_01)

id(pk); bill_invoice_id(来自 dbo.bill_invoice 的 fk); field_1,字段 2... 最多 field_10

table (bill_detail_02)

id(pk); bill_invoice_id(来自 dbo.bill_invoice 的 fk); field_1,字段 2... 最多 field_10

table (bill_detail_03)

id(pk); bill_invoice_id(来自 dbo.bill_invoice 的 fk); field_1,字段 2... 最多 field_10

。 . . .

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

那么我们是否应该将这个主要的 dbo.[order] 字段分解为另一个 table ( bill_invoice )?如上所述?

这是减少插入负载的好方法吗?或者我们应该更喜欢规范化以仅使用 dbo.[order] 和 50 个字段?

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

如果把数据拆分到不同的表中,那么如果要删除一条记录,则需要删除所有“拆分”表中的所有“链接”记录。工作量会更重

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