将单个 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 个数据字段的数据插入/更新操作。
如果把数据拆分到不同的表中,那么如果要删除一条记录,则需要删除所有“拆分”表中的所有“链接”记录。工作量会更重
另一方面,如果有必要,将使用归一化。例如,如果您想减少冗余或类似目的。但一般与数据插入加载问题无关
考虑一个有 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 个数据字段的数据插入/更新操作。
如果把数据拆分到不同的表中,那么如果要删除一条记录,则需要删除所有“拆分”表中的所有“链接”记录。工作量会更重
另一方面,如果有必要,将使用归一化。例如,如果您想减少冗余或类似目的。但一般与数据插入加载问题无关