パーティ モデル データベース スキーマがあります。
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
私が必要とするのは、可能なすべての権限を定義するテーブル関係です。そのような:
ユーザーはグループに所属できます。権限に応じて、自分のレコード、グループのレコード、またはすべてのレコードを表示できます。権限に応じて閲覧、書き込み、編集、削除が可能。行レベルの権限。
ユーザーは役割 (または役割) を持つことができます。位置に応じて - 親ロールのユーザー レコードを表示できます。行レベルの権限。
グループにはプロフィールがあります。それは簡単です。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
多分あなたはより良いアイデアを持っていますか?