Рассмотрим следующий сценарий (немного надуманный, но менее сложный, чем реальный сценарий, с которым я борюсь):
Университет с онлайновой системой управления документами хочет ограничить, какие преподаватели могут видеть, какие документы.Некоторые профессора могут видеть документы, принадлежащие любому отделу, но некоторые могут видеть только документы, принадлежащие определенным отделам.
Вот схема:
create table Professors (
ProfessorId int primary key,
ProfessorName varchar(50)
);
create table Departments (
DepartmentId int primary key,
DepartmentName varchar(50)
);
create table ProfessorDepartments (
ProfessorId int,
DepartmentId int
);
insert into Professors values (1, 'Professor A'), (2, 'Professor B');
insert into Departments values (1, 'Chemistry'), (2, 'Computer Science'), (3, 'Math'), (4, 'Physics');
insert into ProfessorDepartments values (1,2), (1,3);
И вот сложная часть: у профессора с неограниченным доступом не будет ни одного отдела, перечисленного в таблице ProfessorDepartments .(Таким образом, указанный профессор будет автоматически получать доступ к любым новым кафедрам.)
Как я могу получить список разрешенных кафедр для конкретного профессора?Список должен быть взят из таблицы ProfessorDepartments, если у профессора ограниченный доступ, и из таблицы Departments, если у профессора неограниченный доступ.