- ベストアンサー
Access DB リレーションシップ
部品番号、名称、金額が格納されたテーブルがあります。レコードは10,000程度です。 これを各機種(約200)がここに異なった部品を使った「部品名称」テーブルなるものを作成しようとしてます。例えば機種Aは30程度の部品を使い、機種Bは機種Aと異なる部品30を使うことになります。 このような場合、リレーションはどのようにすればいいのでしょうか? 目的は、部品番号は一元管理できるように1テーブルで収め、機種テーブルは個々に修正ができるように分散したいと考えています。 よろしくお願いいたします。 Access 2000を使用しています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> このような場合、リレーションはどのようにすればいいのでしょうか? まず、テーブルですが、3つ用意することになります: 1)部品を一元管理する『部品名称』テーブル (「部品番号」が主キー) 2)機種を一元管理する『機種名称』(仮名)テーブル (「機種番号」が主キー) 3)各機種で使用する部品とその数などを記録する『構成一覧』テーブル (1機種内で同部品を複数使用する場合に、『数量』フィールドのみで 対応できるなら「機種番号」と「部品番号」の2フィールドで主キーに、 「1機種が複数ユニットから構成される」等の理由により同機種内でも 部品番号が重複するなら、別に通し番号を設定するなどして、そちらを 主キーに、それぞれ設定) ※このテーブルには、『機種名』や『部品名』は記録しません(念のため)。 その上で、リレーションシップは以下のように設定します: a)『機種名称』の『機種番号』(1)-(多)『構成一覧』の『機種番号』 b)『構成一覧』の『部品番号』(多)-(1)『部品名称』の『部品番号』 こうすることで、 1)部品メーカー等による部品自体の変更は『部品名称』で、 2)自社製機種の名称変更などは『機種名称』で、 3)自社製機種の設計変更(一部部品の置き換え等)は『構成一覧』で、 それぞれ対処すればよい、ということになります。 このあたりの考え方については、もしも余裕があるようでしたら、「正規化」と いうものを調べてみることをお勧めします。 参考までに、以前以下のQ&AのNo.6で提示したURLを再掲しておきます: http://okwave.jp/qa/q6153112.html テーブルの『正規化』: http://www.annyys.net/html/kihon_002.htm http://www.atmarkit.co.jp/fdb/rensai/db_enginer03/db_enginer03_1.html