いろいろなジャンルの店舗を管理するシステムを作成しています。
ジャンルごとに共通のカラムも多いのですが、特有のカラムもあり、このような構造のテーブル設計をどうすればよいかご教示いただけますと幸いです。
現状では、opt1-opt10とフリーで入力いただけるカラムを用意しています。
■利用データベース
・MySQL
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ベストアンサー
- ジャンルテーブル
ID
ジャンル名
全ジャンルに共通するカラムを必要な数だけ
- 個別データテーブル
ID
ジャンルID
ジャンル内での順番
データ名
データ
みたいな感じでテーブルを分割して、使用する時はジャンルテーブル.IDと個別データテーブル.ジャンルIDをJOINさせるのが典型的な設計かなと思います。
考え方としてはデータベース 正規化
あたりをキーワードにして調べてみると良い資料が多くあります。(DB設計に関しては書籍を一冊しっかり読んでみるのをお勧めします)
投稿2018/12/02 05:02
編集2018/12/02 05:19総合スコア18713
0
「特有のカラム」での検索・集計などが一切不要であれば、extra
のような列を作っておいて、そこにJSONなりでシリアル化したデータを入れておく、というような手段もあります。
投稿2018/12/02 03:12
総合スコア145183
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ジャンルごとに共通のカラムも多いのですが、特有のカラムもあり、このような構造のテーブル設計をどうすればよいか
エンティティの洗い出しと正規化を再度実施してみては?
普通は特有のカラムなんて作らなくて良いです。
ただ、なんらかの要件によって特有のカラムを作る設計にしているのであれば、その要件が無いと回答は出来ないんじゃないかなぁ。。。
投稿2018/12/02 02:13
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/02 03:29
退会済みユーザー
2018/12/02 03:54
0
・共通カラムは1つのテーブルにまとめる
・ジャンル特有のカラムはジャンルごとにテーブルを分ける
・共通ののカラムのテーブルとジャンル特有のカラムのテーブルはJOINでつなぐ
詳細仕様がわからないため、この程度のことしか申し上げられませんが。。。
投稿2018/12/02 01:52
総合スコア2321
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/02 05:24