まず、対象のシステムでは2種類のユーザがいます。
- 管理者
- ユーザ
管理者とユーザは基本アカウント情報を持っています。
(名前、メールアドレス、パスワードetc...)
管理者は基本アカウント情報に加えて自分の権限レベルというフィールドを持っています。
ユーザは基本アカウント情報に加えて自分が所属するグループ名というフィールドを持っています。
つまり、
管理者 = 基本アカウント情報 + X
ユーザ = 基本アカウント情報 + Y
という構成になっています。
いま、このモデルをデータベース上で表現したいのですが、自分が作った構成がきちんと正規化されていないように思われ(正規化の認識についてはかなり曖昧です……)、プログラムから扱うときに面倒です。
以下に私が構成したデータベースを書きます。
AccountInfo テーブル
フィールド
- ID
- Name
- password
Admin テーブル
フィールド
- ID
- AccountID
- PermissionLevel
User テーブル
フィールド
- ID
- AccountID
- Group
Admin、UserのAccountIDフィールドでそれぞれAccountInfoにひも付きます。
一つのAccountInfoが複数のAdminやUserと対応することはありません。
また、管理者、ユーザは複数います。
共通項は抜き出したほうが良いと思ってこのような構成にしたのですがどうでしょうか?
Admin、Userでそれぞれ重複する基本アカウント情報フィールドを保持したほうがいいでしょうか?
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。