powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Структура БД
10 сообщений из 10, страница 1 из 1
Структура БД
    #32219299
kGeo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите структуру для следующей БД: есть роли (roles, их много), есть пользователи (users), каждый из которых обладает ровно одной ролью. Требуется объединять пользователе в группы по следующим правилам:
1. В группу могут входить только пользователи с одинаковыми ролями

2. Пользователь может входить во много групп.

Как эти правила выразить на уровне БД? Можно конечно проверять, посредством триггера соответствие новых пользователей, но IMHO это не красиво.
...
Рейтинг: 0 / 0
Структура БД
    #32219374
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да просто:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
create table role
(
role_id int primary key
)

create table groups
(
groups_id int primary key,
role_id int not null,
FOREIGN KEY (role_id) REFERENCES  role(role_id),
UNIQUE(groups_id,role_id)
)

create table usres
(
usres_id int primary key,
role_id int not null,
FOREIGN KEY (role_id) REFERENCES role(role_id),
UNIQUE(usres_id, role_id)
)

create table usres_group
(
usres_id int not null,
groups_id int not null,
role_id int not null,
primary key (usres_id, groups_id)
)

alter table usres_group add CONSTRAINT usres_group_groups FOREIGN KEY (groups_id, role_id) REFERENCES groups(groups_id, role_id)
ALTER TABLE dbo.usres_group ADD CONSTRAINT usres_group_usres FOREIGN KEY (usres_id, role_id) REFERENCES dbo.usres(usres_id, role_id)
...
Рейтинг: 0 / 0
Структура БД
    #32219431
Jinn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 kGeo

А СУБД какая?
...
Рейтинг: 0 / 0
Структура БД
    #32219989
kGeo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно выразить указанные правила в структуре БД?

Вопрос скорее теоритический, так что конкретная БД не важна.
...
Рейтинг: 0 / 0
Структура БД
    #32220063
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Это отношение многие-ко-многим.
alexeyvg все правильно написал, через промежуточную таблицу usres_group
Это конструкции DDL, которые именно и описывают структуру баз. alexeyvg не вышел за стандарт SQL-92. Эту форму записи ДОЛЖЕН знать любой архитектор.

Предложенная alexeyvg структура будет работать в любой реляционной базе данных
...
Рейтинг: 0 / 0
Структура БД
    #32220125
Jinn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В Oracle нет нужды все это городить. Достаточно сделать нужные View's. Вся информация там уже хранится.
...
Рейтинг: 0 / 0
Структура БД
    #32220237
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Jinn
В MSSQL нет нужды городить все эти Oracle-овские View's. Достаточно сделать нужную структуру БД. Вся информация там уже хранится. :-)))
К тому-же это совместимо со стандартами и работает гарантированно быстро.

ЗЫ. А можно привести эти View's?
...
Рейтинг: 0 / 0
Структура БД
    #32220399
Jinn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg
ЗЫ. А можно привести эти View's?

Представление приводить не буду, а один запросик - пожалуйста:

select u.user# "ID", u.name "User", r.name "Role"
from sys.user$ u, sys.sysauth$ a, sys.user$ r
where a.grantee#=u.user# and a.privilege#>0
and a.privilege#=r.user#
order by u.name

На его основе легко можно сделать любое, из запрошенных, представлений. Достаточно сделать его PUBLIC и все можно просмотреть.
...
Рейтинг: 0 / 0
Структура БД
    #32221517
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Jinn. Человек же не про юзеров и роли в базе данных спрашивал. Может быть у него роли - профессиии, а группы - бригады.
...
Рейтинг: 0 / 0
Структура БД
    #32221800
Jinn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kGeo
Guest Подскажите структуру для следующей БД: есть роли (roles, их много), есть пользователи (users), каждый из которых обладает ровно одной ролью.

Cat2

Jinn. Человек же не про юзеров и роли в базе данных спрашивал. Может быть у него роли - профессиии, а группы - бригады.

Как видно из цитаты kGeo он использует терминологию СУБД, из этого я и сделал вывод о его проблеме :-)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Структура БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]