web-dev-qa-db-ja.com

設計変更を非正規化する

私たちのDBAは病欠中です、私は自分の役割を果たそうとしている開発者です。当初、BeanカウンターはQuickBooksを使用する予定でした。しかし、カスタム開発でどれだけの時間を節約できるかを見た後、彼らは私の範囲を忍び寄りました。

特定の種類の靴を特定のサイズ(ShoeInventory.Quantity)で数量にするのではなく、個々の靴のペアを考慮する必要があるため、Id、LeatherCost、ManufacturingCost、- InventoryCostおよびTotalCost。

私の質問:LeatherCost、ManufacturingCost、InventoryCostおよびTotalCostからShoeに移動した場合、予測可能な問題はありますか?テーブルからShoeInventoryテーブル?

ShoeOrderから靴の注文が届いたら、数量を更新するのではなく、注文したペアごとにShoeInventoryにレコードを追加しますか?

これが悪い考えだと思う理由はありませんが、実際には正しい答えになるのは簡単なようです。 enter image description here

2
stink

これらの追加コストをShoeInventoryに移動すると、それらはShoeInventoryエンティティに関連付けられます。このエンティティは、ShoeSizeとも関係があります。私があなたのスキーマを理解している場合(そして私が間違っている場合は私を訂正しないかもしれません)、これは、同じ靴の種類のサイズが異なると、サブコストが異なる可能性があることを意味します。これにより、柔軟性が向上したり、事態がさら​​に複雑になったりする可能性があります。このデータをshoesから分離し、他のテーブルに添付したくない場合(意味がない場合)、shoeCostテーブルを作成できます。

 shoeCost 
 --------- 
 id(PK)
 shoe_id(FKからshoe.shoeId)
 Leather_cost 
 manufacturing_cost 
 inventory_cost 
 total_cost(これは、
 Leather_cost + Manufacturing_cost + Inventory_cost、
の計算された列である可能性があります)