
ご教授お願いします。
靴マスタ(スニーカーA、スニーカーB、サンダルA・・・)
色マスタ(赤、青、黄色、黒・・・)
素材マスタ(皮、ビニール、木・・・)
上記3マスタがあるとします。
靴受注システムにおいて、靴マスタを選んだ際に、
組み合わせとして可能な「色(色マスタより)」、「素材(素材マスタより)」だけを選択させたいという仕様があります。
それらの組み合わせを制御するために、
下記画面の様な「組み合わせマスタ保守」を用意しようと思います。
靴:スニーカーA
----------------------
「選択可能色」 「選択可能素材」
黒 皮
赤
上記により靴受注画面においては
「スニーカーA」を選んだ時点で、色は(黒or赤)、素材は(皮)
という選択しか出来なくなります。
※色と素材の組み合わせは制御しません。
上の内容において「組み合わせマスタ」のテーブルレイアウトは
どのように設計すべきでしょうか?
考えているのは色も素材もある程度種類に上限があるので、
下記の様に列側に持たせようと思っているのですが・・・
靴 |区分(色 or 素材)|種類1|種類2|~|種類99|
スニーカーA|色 |黒 |赤 |
スニーカーA|素材 |皮 |
・
・
・
スニーカーB|色 |黒 |赤 |黄 |
スニーカーB|素材 |皮 |ビニル|合皮 |
このように色・素材を列側に持たせる方針がどうなんだろう・・・という思いがあるのですがいかがでしょうか?
同様な仕様の場合に、皆さんはどのように設計されますでしょうか?
お知恵を拝借できればと思います。
No.1ベストアンサー
- 回答日時:
>下記の様に列側に持たせようと思っているのですが・・・
これはいけません。正規化の原則以前に使いづらいですよ。
あとで「赤が選べる靴はどれか」「4色以上選べる靴はどれか」「色別の注文状況が見たい」って聞かれたときに死にます。
(OR文やUNIONの嵐になります)
外部制約も掛けられません。
1)「組み合わせマスタ保守」ではなく、「色組み合わせマスタ保守」と「素材組み合わせマスタ保守」を用意する
・色組み合わせマスタ保守(靴、色)
・素材組み合わせマスタ保守(靴、素材)
それぞれ、靴マスタと色マスタ、靴マスタと素材マスタに対する外部キー制約を掛けます。
2)「組み合わせマスタ保守」を以下のレイアウトにする
・組み合わせマスタ保守(靴、区分、連番、色、素材)
靴、色、素材にそれぞれ外部キー制約を掛けます。
色と素材のいずれかしか収録されないので、主キーがなくなり、代替キー(連番)を振って靴・区分・連番で主キーにします。
テーブルは1つで済みますが、NOT NULL制約も掛けられず、検索・更新効率は悪くなります。
普通は1)の考え方です。
横並びの情報がパッとみたいのであれば、別途CASE、MAXを使ったビューを作成すればよいと思います。
ありがとうございます!
少し考えましたが・・・色んな点で1)のメリットの多さを
理解しました。
1)のパターンだとたとえば色組み合わせマスタ保守内の
レコード数が「靴の種類×色の種類」となるので、かなり数が
多くなりそれはどうなのだろう・・・と考えていたのですが、
それは問題ではないのですね。
大変勉強になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(ビジネス・キャリア) 職場 靴 レディース 1 2023/06/18 11:54
- メンズ 自分は20代前半の男で、 ナイキのエアマックス90LTRかエアマックスSC LEAのどちらかを買おう 1 2023/07/11 16:54
- シューズ・ブーツ スニーカーは、何ブランド派ですか。 スニーカーの色は、何色派ですか。 スニーカーの素材は、何の素材派 2 2022/06/07 21:46
- シューズ・ブーツ PUMAの合皮素材の靴を買ったのですが、まだ履きません。 買った際についてきた箱に乾燥剤を入れて保管 1 2022/11/05 16:58
- レディース ファッション 3 2022/08/22 15:33
- ビジネスマナー・ビジネス文書 会社 靴 1 2023/01/29 12:40
- レディース ファッション 2 2022/09/11 21:16
- その他(住宅・住まい) アクリル素材の白系の表札を買おうと思ってますが、 やはりアクリル素材は経年劣化で黄色くなってきますか 4 2023/07/23 06:18
- その他(ビジネス・キャリア) ビジネス トートバッグ(本革) 3 2023/07/01 08:47
- 一戸建て 外壁材が隣軒と同じ 5 2022/06/19 17:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXISTSを使ったDELETE文
-
テーブル設計について
-
SQL文で、合計が0のレコードを...
-
Accessの実行時エラーについて
-
DBが複雑すぎる
-
inner join,left joi...
-
差し込み後、元データを変更し...
-
フィルターかけた後、重複を除...
-
for whichの使い方
-
エクセルで最後の文字だけ置き...
-
外部参照してるキーを主キーに...
-
列番号による項目の取得について
-
エクセルの関数について教えて...
-
不連続サブネットとEIGRPについて
-
IDの欠番
-
SELECT 文 GROUP での1件目を...
-
【VB.NET】日付型の列にNULLを...
-
SQLで特定の項目の重複のみを排...
-
Outlook 送受信エラー
-
JavaScriptの定数名が取り消し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXISTSを使ったDELETE文
-
SQL文で、合計が0のレコードを...
-
Accessの実行時エラーについて
-
日付により変動する「単価」を...
-
ACCESS 商品毎の最新の単価を設...
-
ACCESS ツリービューの作り方
-
ACCESSでクエリ作成時複数のフ...
-
アクセス フィールド名に変数...
-
異なるデータベース間のテーブ...
-
前月の取得について
-
最大値を含むレコードの抽出
-
AS400にてサブファイルレコード...
-
オートナンバーでの質問
-
PL/SQLの質問
-
ACCESSでDLookUpすると、不正な...
-
はじめまして。スーパーbeginne...
-
Access2013で商品に複数の単価...
-
Access 小計について
-
ACCESSのマスタの変更について
-
テーブル名の トラン マスタ...
おすすめ情報