0

通常のユーザー名、パスワード、電子メール フィールドを持つユーザー データベース テーブルがあるとします。特定のユーザーの機能を有効/無効にするブール値フィールドを追加する賢明な方法は何ですか。

例えば、

user_can_view_page_x
user_can_send_emails
user_can_send_pms
etc

既存のユーザー テーブルに一連のブール列を追加するのは、間違った方法のように思えます。

4

2 に答える 2

1

3つのテーブルを使用します。

1つは既存のユーザーテーブルです。

USER table
----
user_id (pk)
name
email
...

もう1つは、可能なユーザー権限を含むテーブルです。

PRIVILEGE table
----
privilege_id (pk)
name

最後に、各ユーザーの各特権設定のエントリを含む結合テーブルがあります。

USER_PRIVILEGE table
----
user_id (pk) (fk)
privilege_id (pk) (fk)
allowed

2人のユーザーのサンプルデータを次に示します。1人はメール送信特権とpms送信特権を持ち、もう1人はページ表示特権を持っています。

ユーザーデータ

USER_ID  NAME   EMAIL
-------  -----  -------------------
1        USER1  user1@somewhere.com
2        USER2  user2@somewhere.com

特権データ

PRIVILEGE_ID  NAME
------------  -----------
1             view_page_x
2             send_email
3             send_pms

USER_PRIVILEGEデータ

USER_ID  PRIVILEGE_ID  ALLOWED
-------  ------------  -------
1        1             'N'
1        2             'Y'
1        3             'Y'
2        1             'Y'
2        2             'N'
2        3             'N'
于 2012-09-26T18:12:51.953 に答える
1

はい、これは間違ったアプローチだと思います。

むしろ作成したい

User_Features Table 

のような列で

UserID
FeatureName

また、特定のユーザーが問題の機能を有効にしているかどうか、またはテーブルに入力されているかどうかを確認します。

Users_Groupsユーザーがグループに関連付けられ、グループ設定から機能を継承/禁止できるテーブルを作成することもできます。

于 2012-09-26T17:59:22.940 に答える