1

パーティ モデル データベース スキーマがあります。

Modules
-------------------------------
id, name, description


Modules_fields <--- Relationship which fields will be in each module
--------------------------------
module_id, field_id


Fields <--- Module_records fields (will define which table field will user see)
--------------------------------
id, name, type


Module_records <--- Entity child - real records
--------------------------------
id, name, description


Entity <--- Central records table - there stores all real record id's
-------------------------------
id, module_id, module_record_id

私が必要とするのは、可能なすべての権限を定義するテーブル関係です。そのような:

  1. ユーザーはグループに所属できます。権限に応じて、自分のレコード、グループのレコード、またはすべてのレコードを表示できます。権限に応じて閲覧、書き込み、編集、削除が可能。行レベルの権限。

  2. ユーザーは役割 (または役割) を持つことができます。位置に応じて - 親ロールのユーザー レコードを表示できます。行レベルの権限。

  3. グループにはプロフィールがあります。それは簡単です。Fields-to-GroupProfile テーブルを追加し、プロファイルの子を表示するフィールドを設定するだけです。列レベルの権限。

私の考えは、エンティティ テーブル フィールド user_id を設定することです。エンティティ作成者ユーザーを定義します。その後、この user_id で UserGroups を検索し、group_id を取得できます。モジュールごとに、グローバル権限を定義するテーブルをもう 1 つ作成します。どのグループ/ユーザーがモジュールを表示しますか。しかし、私はそのような解決策が好きではありません。

だから私は、ユーザー、グループ、プロファイル、および役割を追加することを考えています:

Profiles - define which fields will user see (User has many profiles), column level
id, name

UsersProfiles - relationships
user_id, profile_id

Users - just user table
id, user_group_id

User_UserGroups - relationships
user_id, user_group_id 

UserGroups - define in which groups user will be, rowlevel (Salesgroup1, Salesgroup2)
id, parent_id

UserRoles - relationships
user_id, role_id

Roles - define user hierarchy (Boss, employee)
id, parent_id

RolesProfiles - relationships
role_id, profile_id

多分あなたはより良いアイデアを持っていますか?

4

0 に答える 0