条件によって料金が異なるサービスがあり、次の要因があります。
- コース
- 個人/団体
- 利用時間(h)
- 平日/休日
カラオケやツアーのようなものをイメージしてもらうと近いかと思います。
サービスは複数あり、サービスによっては4つすべてを組み合わせて料金が決まるものや、コース、利用時間の2つだけで料金が決まるものなど様々で、今後要因が増える可能性もあります。
足し算や掛け算では値段は決まらず、すべての組み合わせに対して人間が料金を決めています。
そこでひとまず3つのテーブルを用意しました。
- services ... サービスの名称
- factor_groups ... 要因をカテゴリー分けしたもの(コースなど)
- factors ... 値段を決める要因(Aコース、Bコースなど)
あとは組み合わせた結果の値段を登録するテーブル(service_charges)を作りたいのですが、要因数が決まっておらずどのように列を用意すればわかりません。
思いつくのは次のようなものです。
- 最大10要因に制限して charge, factor_1, factor_2, ..., factor_10 という列を作る
- JOIN を諦めてカンマ区切りか JSON などで複数の要因を1つの列に格納する
- 何らかの中間テーブルを作る(具体的にどう作ればいいのかはわかりません)
数が決まっていない組み合わせをテーブルに保存するにはどのような形をとるのが良いのでしょうか?
よろしくお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/26 09:58 編集