質問: 商品データベースを開発しています。 商品を表すのに基本情報、カラー情報、サイズ情報、詳細情報の4つのテーブルを使うような設計にしています。 商品の基本情報を登録した後にカラー情報とサイズ情報を追加し、カラーとサイズの組み合わせの数だけ詳細情報のレコードができあがります。 このカラー情報とサイズ情報のテーブルですがテーブルの内容が全く同じです、最初は何も考えずに別々のテーブルとしていましたが1つのテーブルに集約して区分で分けてしまおうと考えています。 1つのテーブルを区分でわけて複数のテーブルとして使うのはアンチパターンかと思いますが、このケースであればデータの種類が複数あるという感じです。(カラー/サイズは言い換えればオプション1/オプション2となりますので) 素人設計で不安だらけなので皆様のご意見を伺いたく質問しました。 よろしくお願いします。 --- 追記 テーブルのレイアウトはこんな感じです ■基本情報 basic_id brand name list_price ■カラー情報 id basic_id color_seq color_name ■サイズ情報 id basic_id size_seq size_name ■詳細情報 id basic_id color_id size_id model_code 上記カラー情報とサイズ情報を下記のテーブルにまとめようと考えています ■オプション情報 id basic_id option_type option_seq option_name
回答: 扱っているのはどんな商品でしょうか? 衣類でしたら、同じデザインで色やサイズが違うものもあります。コートのようなある程度高価な商品でしたら、同じデザインで別の色があるから、その色の在庫はどこの店舗にあるか調べたいとか、同じデザインで1サイズ大きいものが欲しいが、どこに置いてあるか? などと検索したい、などと要望が出てくるものです。 集計時に同じデザインで、店舗毎で、、、まとめたいとか、システムを使う人たちからのヒアリング情報も欠かせません。 どんなテーブル設計になるかが決まってから、どんなSQLになるか、このSELECTにはこのテーブルとこのテーブルをjoinして、、、って話になるかと。もちろん、後でテーブルの変更が発生することが多いですが。