ホームページ > バックエンド開発 > PHPチュートリアル > mysql - Thinkphp の RBAC 認証では、「user-role」テーブルに独立したテーブルが必要なのはなぜですか? ?

mysql - Thinkphp の RBAC 認証では、「user-role」テーブルに独立したテーブルが必要なのはなぜですか? ?

WBOY
リリース: 2016-08-18 09:15:46
オリジナル
918 人が閲覧しました

ここで 5 つの表を参照できます: http://www.lyblog.net/detail/...

実際にはテーブルがあります:
mysql - Thinkphp の RBAC 認証では、「user-role」テーブルに独立したテーブルが必要なのはなぜですか? ?

ユーザーとロールの間には 1 対 1 の対応関係があります。別のテーブルを作成する代わりに、ロール フィールドをユーザー テーブルに追加するだけではどうでしょうか。
これを行うメリットは何ですか?

補足:
ユーザーとロールの関係は 1 対多であると言う人がいますが、なぜ 1 対多に設定する必要があるのか​​知りたいです。
1対1の関係のほうがやりやすいんじゃないでしょうか?

返信内容:

ここで 5 つの表を参照できます: http://www.lyblog.net/detail/...

実際にはテーブルがあります:
mysql - Thinkphp の RBAC 認証では、「user-role」テーブルに独立したテーブルが必要なのはなぜですか? ?

ユーザーとロールの間には 1 対 1 の対応関係があります。別のテーブルを作成する代わりに、ロール フィールドをユーザー テーブルに追加するだけではどうでしょうか。
これを行うメリットは何ですか?

補足:
ユーザーとロールの関係は 1 対多であると言う人がいますが、なぜ 1 対多に設定する必要があるのか​​知りたいです。
1対1の関係のほうがやりやすいんじゃないでしょうか?

私の理解では、ユーザーは複数の役割を持つことができるということです

こんな感じです:

1 人が複数のロールを持つことができます
1 つのロールを複数の人が使用することもできます
多対多のリレーションシップでは、通常、マッピング用に中間テーブルを構築する必要があります。

redis のような非リレーショナル データベースを使用している場合を除く

1対多ではなく、多対多です。

あなたのプロジェクトには必要ないかもしれませんが、フレームワークとしては、より広範なニーズを考慮する必要があります。多対多テーブルは 1 対 1 テーブルとして使用できます。 many には 1 対 1 が含まれますが、1 対 1 1 対 1 の設計では、必然的に多対多のニーズを満たすことができなくなります。ここに別の関係テーブルが存在することになりますね?

ユーザーには複数の役割があります。

実際には、別のテーブルを作成しないことも可能です。

デカップリング、単一責任モデル

ManytoMany の関係には中間テーブルが必要です。

多対多のニーズを満たすため
私の理解は正確ではないかもしれません。たとえば、いくつかのロール a、b、c が存在します。あなたの理解によれば、ユーザー 1、2、3 が a に対応できます。 、b、cはそれぞれ大丈夫です。別のユーザー 4 が来た場合、そのユーザーが必要とするロールはたまたまロール a とロール b の権限を持っているため、ユーザー 4 は直接ロール a とロール b に属します。ユーザー 4 のニーズを満たすために新しいロールを作成する必要はありません

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート