2011-10-10 17 views
0

データベース設計のシナリオこれを行うための正しい方法を何

I実体RAW_MATERIAL_PRODUCTとFINISHED_PRODUCTの間に次の関係を有する:完成した製品があることも1つ以上の原材料製品と原料の製品で構成する必要があります完成した製品の一部(多くの人がそうです)。私は、私が、原材料製品が完成品であることを正確に教えてくれるASSEMBLYと呼ばれる交差の実体を持っています。

良い。今私は完成品を販売し、生産コストを計算する必要があります。 PRODUCT_OUTエンティティが入っています。これには1つの完成した製品のみを含めることができ、完成した製品は複数のPRODUCT_OUTに含めることができます。

たとえば、完成品Aが常にの3つの原材料製品a1,2、a2などであれば簡単です。問題は量が変更される可能性があることです。

原料製品の株式は証券を計算するとき、私は間違ったデータを取得してしまうためので、私は、アセンブリ内属性を置くことができない

 TotalIn - TotalOut 

として計算されます。 (クォンタイトが変更されている場合)

私の唯一のアイデアは、FINISHED_PRODUCTエンティティまであきらめて、PRODUCT_OUTとRAW_MATERIAL_PRODUCTの間にquantity属性を含む交差エンティティを結合することです。しかし、これは、FINISHED_PRODUCTが同じRAW_MATERIAL_PRODUCTSで作られているため、ほとんど愚かなようです。

良い方法はありますか?

答えて

1

私は理解しているとは思っていませんが、本質的にはレシピが変わる可能性があり、あなたのモデルはこれを考慮する必要がありますか?

しかし、ほとんどすべての時間が FINISHED_PRODUCTが同じRAW_MATERIAL_PRODUCTSで作られているので、これは一種の愚かなようです。

ほとんどすべての時間、またはすべて時間ですか?私はそれがかなり重要な質問だと思う。

レシピを変更すると、ASSEMBLYテーブルの関連付けに基づいて異なるRAW_MATERIAL_PRODUCTSが設定された新しいFINISHED_PRODUCT行を作成する必要があります。

同じFINISHED_PRODUCTの異なるレシピをグループ化したい場合(バージョン管理のようなもの)、FINISHED_PRODUCTテーブルに対して1:mの関係を持つFINISHED_PRODUCT_TYPEテーブルを作成します。

編集(コメントからの引用):

私は完全にあなたに同意、それは別の製品でなければなりませんが、私は、製品に ネジ1本を追加した場合、私は実際に商品Aとそれに名前を付けることができません1 extra ネジ。そして、これは起こることができるようです。私は の使用をFINISHED_PRODUCT_TYPEテーブルを作成することはできませんでした。説明していただけますか?

確かに。したがって、FINISHED_PRODUCT_TYPEは商品の名前、場合によってはその他のデータ(説明、カテゴリなど)を定義します。 FINISHED_PRODUCTの各行は基本的にその製品の「バージョン」です。したがって、「製品A」はFINISHED_PRODUCT_TYPE表の1つの行にしか存在しませんが、FINISHED_PRODUCT表には1つまたは複数のバージョンが存在する可能性があります。

+0

回答ありがとうございます。それは「ほとんどすべての時間」です。私は完全にそれは別の製品でなければならないことに同意しますが、もし私が製品に1つのネジを追加すれば、本当に1つの余分なネジで製品Aと名付けることはできません。そして、これは起こることができるようです。私はFINISHED_PRODUCT_TYPEテーブルの作成を使用していませんでした。説明していただけますか? –

+0

私の答えを更新しました。詳細が必要な場合はお知らせください。 –

+0

は素晴らしいアイデアのように聞こえます。ありがとう! –

関連する問題