前提・実現したいこと
データベース初心者です。
キャンペーンと、そのキャンペーンに参加したいユーザーのマッチングサイトのようなものを作っています。
Webからは以下の操作が可能です。
-
キャンペーンには、キャンペーンに参加できるユーザーの年齢層を設定できる
-
年齢層は、以下のような10歳刻みで複数選択できる
"1019", "2029", "3039", "4049", "5059", "60"
このとき、MySQLでどうテーブル設計するべきか、アドバイスいただけると助かります。
最初に考えた案
MySQLのSET型で、上記の年齢層をそのまま定義すれば良いかと考えました。
create table campaigns ( id int primary key auto_increment, name varchar(20), age_range set("10~19", "20~29", "30~39", "40~49", "50~59", "60~") );
しかしこれだと、あるユーザーの年齢からそのキャンペーンに参加できるかの判定するのが難しいと感じました。
2番目に考えた案
以下のような年齢の下限・上限が格納されたマスタを作ることを考えました。
id | age_from | age_to |
---|---|---|
1 | 10 | 19 |
2 | 20 | 29 |
3 | 30 | 39 |
4 | 40 | 49 |
これであれば、ユーザーの年齢が対象かどうか判定しやすくなります。
しかし、以下の点が気になり、これがベストなのか不安になりました。
-
age_from, age_to に任意の数字が入ってしまう
-
年齢層の定義が変わる可能性は低いが、ここまで柔軟にしなくてもよいのではないか。
-
そもそもこの程度のことでマスタを作るべきなのかどうか
このようなケースの場合、
- どちらが良いのか
- どのように格納するのがよくあるパターンなのか
- 他に適切な方法があるか
など、教えていただけると幸いです。
よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/11/14 10:59