Create Table Employee
(
Id int not null Primary Key
, ....
)
Create Table Property
(
Id int not null Primary Key
, ....
)
Create Table Role
(
Name varchar(10) not null Primary Key
, ....
)
В таблицу ролей вы помещаете такие вещи, как «Менеджер» и т. Д.
Create Table PropertyEmployeeRoles
(
PropertyId int not null
, EmployeeId int not null
, RoleName varchar(10) not null
, Constraint FK_PropertyEmployeeRoles_Properties
Foreign Key( PropertyId )
References dbo.Properties( Id )
, Constraint FK_PropertyEmployeeRoles_Employees
Foreign Key( EmployeeId )
References dbo.Employees( Id )
, Constraint FK_PropertyEmployeeRoles_Roles
Foreign Key( RoleName )
References dbo.Roles( Name )
, Constraint UK_PropertyEmployeeRoles Unique ( PropertyId, EmployeeId, RoleName )
)
Таким образом, один и тот же сотрудник может выполнять несколько ролей в одном и том же свойстве. Эта структура не будет работать в ситуациях, когда вам необходимо гарантировать наличие одного и только одного элемента (например, HomeProperty), но позволит расширить список ролей, которые сотрудник может иметь в отношении данного свойства.