テーブル設計について考えてみる
■やりたいこと
・商品をもつ
・商品はユーザがみているデバイス(PC、スマホ、フューチャーフォン)にって表示・非表示などをきりかえる
・さらにCMSぽく?したいので同じプログラムで3サービス別々の商品にきりかえる
・mysqlつかう
商品数=30万件
サービス種=3種(サービス1〜3)
デバイス種=3種(PC、スマホ、フューチャーフォン)
■案1
・商品テーブル
商品ID(PK)
商品名とか
・商品出し分けテーブル
商品ID(FK)
サービスID(サービス1、サービス2、サービス3とか)
デバイスID(PC、スマホ、フューチャーフォンとか)
販売開始日とか
この場合のレコード数は30万*3*3でマックス270万レコードが必要。。。
■案2
・商品テーブル
商品ID(PK)
商品名とか
・商品出し分けテーブル
商品ID(FK)
サービス1のPC用販売開始日とか
サービス1のスマホ用販売開始日とか
サービス1のフューチャーフォン用販売開始日とか
サービス2のPC用販売開始日とか
サービス2のスマホ用販売開始日とか
サービス2のフューチャーフォン用販売開始日とか
サービス3のPC用販売開始日とか
サービス3のスマホ用販売開始日とか
サービス3のフューチャーフォン用販売開始日とか
この場合のレコード数はマックス30万レコード
けどサービス増やしたり、レコードふやすたびにカラム追加。。。
■案3
商品テーブル
商品ID(PK)
商品名とか
・商品出し分けテーブル(サービスごとに別データベースにする)
商品ID(FK)
デバイスID(PC、スマホ、フューチャーフォンとか)
販売開始日とか
案2は難しいかな。。。
個人的には案3なんだよなー。
サービスごとに異なる部分だけ別DBにして、共通な部分は共通DB的な。ジョインとかもきにしなくてはならなくなるはなるのだけど。。。
案1が一般的?な気がしないでもないけど、テーブルの種類も増えるとレコード数も増える。のでクエリのチューニングも必要になってきそうだし。。。
まーやりたいことしだいなのだけど。