CREATE TABLE role
(
role NVARCHAR(50) NOT NULL PRIMARY KEY,
create BIT NOT NULL,
read BIT NOT NULL,
update BIT NOT NULL,
delete BIT NOT NULL
)
CREATE TABLE item
(
id INT NOT NULL PRIMARY KEY,
name NVARCHAR(50) NOT NULL,
id_parent INT,
CONSTRAINT FK_item_item FOREIGN KEY(id_parent) REFERENCES item(id)
)
CREATE TABLE user
(
id INT NOT NULL PRIMARY KEY,
adUserName NVARCHAR(50) NOT NULL,
role NVARCHAR(50) NOT NULL,
CONSTRAINT FK_user_role FOREIGN KEY(role) REFERENCES role(role)
)
CREATE TABLE user_item_rights
(
id_user INT NOT NULL,
id_item INT NOT NULL,
create BIT NOT NULL,
read BIT NOT NULL,
update BIT NOT NULL,
delete BIT NOT NULL,
CONSTRAINT PK_user_item_rights PRIMARY KEY(id_user,id_item),
CONSTRAINT FK_user_item_rights_user FOREIGN KEY(id_user) REFERENCES user(id),
CONSTRAINT FK_user_item_rights_item FOREIGN KEY(id_item) REFERENCES item(id)
)
Это должно дать вам представление о том, как вы могли бы реализовать это. Вы также можете перевести его на занятия. Вы также можете реализовать наследование CRUD и т. Д. Или определить таблицу role_item_right.
По моей идее user_item_rights переопределяет настройки по умолчанию в роли.