Я новичок sql, поэтому, пожалуйста, прости меня за то, что я задал тупой вопрос. Я создаю свое первое реальное приложение для проекта колледжа.
По своей сути, оно должно обрабатывать более тысячи пользователей, которые не могут читать или записывать данные друг друга, если им не предоставлены привилегии. как Linux делает с пользователем и группами.
в приведенной ниже схеме, которую я пробовал, пользователь может просматривать (читать) и редактировать (писать) других пользователей, если у них есть разрешения на чтение. (r = 2 w = 1 r + w = 3).
например, если cgroup_1
- администратор, а cgroup_2
- менеджер, а unixperm
- 32, то это означает, что пользователи в группе администраторов могут читать + писать (3), а пользователи в Группа менеджеров может только читать (2)
create table cgroups
(
id int unsigned primary key auto_increment,
title varchar(100) not null unique,
cunixperm tinyint unsigned not null default 32 ,# r=2 w=1
cgroup_1 int unsigned not null default 1 references cgroups (id) on delete cascade on update cascade,
cgroup_2 int unsigned references cgroups (id) on delete cascade on update cascade
);
create table users
(
id int unsigned auto_increment primary key,
username varchar(255) not null unique,
cunixperm tinyint unsigned not null default 30, # r=2 w=1 3=r+w
cgroup_1 int unsigned default 1 not null references cgroups (id) on delete cascade on update cascade ,
cgroup_2 int unsigned references cgroups (id) on delete cascade on update cascade
);
create table many_users_in_many_cgroups
(
user_id int unsigned references users(id),
cgroup_id int unsigned references cgroups(id),
primary key (user_id,cgroup_id)
);
insert into cgroups(title)
values ('admins'),('managers'),('writers');
insert into users(username, cunixperm, cgroup_1, cgroup_2)
values ('user1',30,1,null),
('user2',30,1,2),
('user3',22,2,2),
('user4',02,3,3);
insert into many_users_in_many_cgroups
values (1,1),(2,2),(3,3),(4,4);
Теперь предположим, что пользователь 2 вошел в мое приложение, Как я могу показать только те строки пользователя, для которых у него есть разрешения на чтение (2) или чтение + запись (3) .
если приведенная выше схема не является (вероятно) подходящей, пожалуйста, дайте мне пример с соответствующей схемой
В настоящее время я использую MariaDB, но открыт для решений и для других.