ユーザーがさまざまな部分への特定のアクセスレベルを持つリレーショナルデータベースを設計しています。これらの部分Company
を 、Site
、 と呼びましょうDepartment
。ACompany
は 1 つ以上の で構成されSite
、それぞれSite
は 1 つ以上の で構成されますDepartment
。これらの各エンティティ間には多対多のUser
関係があり、各関係にはアクセス レベルがあります。
たとえば、へUser1
のアクセス レベル、 へのアクセス レベル、へのアクセス3
レベルなどがCompanyA
あります。が会社などの特定のエンティティにアクセスできる場合、そのエンティティのメンバーにもアクセスできると見なされます。User2
2
CompanyA
Site1
User3
1
Site1
DepartmentX
User
Department
そのために、それぞれUser
の関連するアクセス レベルを一覧表示するビューを作成したいと考えていますDepartment
。
これは私がこれまでに持っているものです:
SELECT
Dept.Id AS 'DeptId', User.Id AS 'UserId',
DeptAccess.RightsLevel AS 'DeptRightsLevel',
SiteAccess.RightsLevel AS 'SiteRightsLevel'
FROM (Dept, User)
LEFT JOIN DeptAccess
ON DeptAccess.DeptId=Dept.Id AND DeptAccess.UserId=User.Id
LEFT JOIN SiteAccess
ON SiteAccess.SiteId=Dept.SiteId AND SiteAccess.UserId=User.Id
WHERE DeptAccess.RightsLevel IS NOT NULL OR SiteAccess.RightsLevel IS NOT NULL
DepartmentY
これにより、次のような表が得られます (も の一部であると仮定しますSite1
)。
DeptId | UserId | DeptRightsLevel | SiteRightsLevel
-------+--------+-----------------+------------------
X | 2 | NULL | 2
X | 3 | 1 | NULL
Y | 2 | NULL | 2
CompanyRightsLevel
全社的な権限を持つユーザーがテーブルに表示されるように、このテーブルにを組み込むにはどうすればよいですか?
データベースの設定が不明な場合は、コメントで説明を求めてください。