Как правильно сформировать таблицу и связи в БД?
Попалась очень сложная задача. Помогите пожалуйста.
Есть роль (user), есть категории (bank, private, work), есть права чтение/запись (read/edit). Как правильно оформить таблицы в БД и как правильно оформить связи. Как я себе это представляю на данный момент:
Role:
id: 1
title: user
Category:
id: 1
title: bank
id: 2
title: private
id: 3
title: work
readEdit
id: 1
title: read
id: 2
title: edit
Что нужно в целом, если у пользователя стоит галочка read и edit на против категории private, то все записи этой категории он может видеть и редактировать, а если только read то только видеть.
Подскажите, может кто сталкивался с таким, может где похожее есть. Буду рад любой помощи, спасибо.

Ответы (1 шт):
В терминах MySQL:
CREATE TABLE privileges ( user_id BIGINT NOT NULL FOREIGN KEY user (user_id),
category ENUM('bank', 'private', 'work') NOT NULL,
UNIQUE (user_id, category),
access_mask SET('read', 'edit') NOT NULL DEFAULT '');
Если список категорий динамический, то вместо поля ENUM будет поле-FK в таблицу категорий.
Если ситуация, когда edit установлено, а read нет - недопустима, то
access_mask SET('read', 'edit') NOT NULL DEFAULT '' CHECK (access_mask != 'edit')