質問: 30テーブル 実装はできると思うのですが、テーブル数が多くなるため 「これで良いのかな、、、?」と判断ができません。 皆さんは上記の場合、どうされているのでしょうか? ###### shop | id | name | | --- | --- | | 1 | 山田商店 | | 2 | スーパータナカ | | 3 | 青木ストア | ###### shop_holiday | shop_id | holiday | | --- | --- | | 1 | 1 | | 1 | 2 | | 2 | 1 | | 2 | 2 | | 2 | 3 | | 3 | 1 | | 3 | 4 | ###### holiday | id | name | | --- | --- | | 1 | 月曜日 | | 2 | 火曜日 | | 3 | 水曜日 | | 4 | 木曜日 | | 5 | 金曜日 | | 6 | 土曜日 | | 7 | 日曜日 | ###### 余談 皆様のお陰で、3テーブルを`join`してサブクエリを発行してと、、、 色々なことができるようになってきました。本当にありがとうございます。
回答: 確かに、正規化でテーブルはすっきりしてきます。 ただ、無計画に正規化を進めるとやはりテーブル数が多くなったり、SQL文でサブクエリやjoinが多くなりSQL文自体のメンテナンスも困難になってきます。 (僕が長いSQL文がきらいなので・・・) 確かに正規化するとサブクエリも簡単なものになると思われますが、やはりSQLが複雑になると苦手になってくる方はいるのではないでしょうか。 そう考えると、システムに合わせてテーブル定義をしたほうが良いかもしれません。 上記のようなテーブル構成であれば、レコード数が少なければ正規化はそこまで必要なく、 多ければ多少正規化しておく、など状況にあわせるのも手かもしれません。