ご意見を伺いたいです。
会員機能があるサービスを構築しているのですが、ユーザーのテーブルが大きくなってしまい、
テーブル構成を見直したいと思っています。
例えば、下記のようなカラム構成のテーブルがあるとします。
カラム名 | 概要 |
---|---|
id | ユーザーID |
password | パスワード |
name | 名前(漢字、ページ内の表示するユーザー情報) |
name_kana | 名前(ひらがな) |
age | 年齢 |
is_service_a | Aサービスを利用できる権限がある |
is_service_b | Bサービスを利用できる権限がある |
ログインに必要な情報はIDとPasswordだけです。
仕様上、IDとPassword以外はnullにはなりませんし、必ず1ユーザーあたり必ず1件のデータです。
そのため、必ずし正規化する必要性はないかもしれません。
このような構成の場合、テーブルを分けますか?
私が考えている構成
テーブル構成を見やすくするために下記に分けるのも有効なのではないかと思います。
- age、name_kanaは、
user_profiles
のようなテーブルを用意して表示情報を分ける - is_service_a、is_service_bは、
user_options
のようなテーブルを用意してサービスの利用情報を分ける
users
ログインに必要な最低限の情報テーブル。
ユーザー名も頻繁に使うのでこっちに含める
カラム名 | 概要 |
---|---|
id | ユーザーID |
password | パスワード |
name | 名前(漢字、ページ内の表示するユーザー情報) |
user_profile
サービスに関係ない個人情報をまとめたテーブルです。
カラム名 | 概要 |
---|---|
user_id | ユーザーID |
name_kana | 名前(ひらがな) |
age | 年齢 |
user_options
サービスに関係する情報をまとめたテーブル。
カラム名 | 概要 |
---|---|
user_id | ユーザーID |
is_service_a | Aサービスを利用できる権限がある |
is_service_b | Bサービスを利用できる権限がある |
懸念点
- テーブルを分ければ分けるほどリレーションが大きくなるので不用意に分ける必要性はないのではないかと考えています。
- もしかしたら、見やすいと思うのは自分だけかもしれないため、分けない方が良いのではないか?
回答4件
あなたの回答
tips
プレビュー