DB_Design

5 отговора 275 прегледа
#1

DB_Design

Edno taka da se kaze design pitane. Imam table s users i table sas grupi, koito si imat opredeleni atributi toest stojnosti. I za wseki user zapiswam w koia grupa e, no ima user izkluchenia - te ne popadat w nikoia grupa zashoto imat razlichni stojnosti za atrubutite ot tezi na wsichki grupi. Kakwo da naprawia? Za wseki user izkluchenie nowa grupa ??? Ili druga tablica w koiato da sa samo izklucheniata?

Отговор
в отговор на Someone #2

Re: DB_Design

както и да го измислиш ще има недостатъци...
ако варианта нова група за всеки различен юзер те устройва - нищо не губиш, направи го...

[линк]
Отговор
в отговор на Someone #3

Re: DB_Design

По-интересен е въпроса как са свързани групите и атрибутите.

Аз не бих правил разлика м/у юсер и група освен по юзер-ид. Например усерите са 1 до 2^16, групите са на 2^16 (като в мс сял сержер sysusers):

create table users (
uid int
,gid int -- group id
--- whatever else you need to describe a user
)

create table attr (
aid int
, --- whatever else you need
)

усерс и аттрибуте имат мани-то-мени релация, която се решава с междинна таблица:

create table user-attr (
uid int
,aid int
)

По тоя начим можеш да присвояваш неогр. брой аттрибити както на усер, така и на група.
даден усер може да принадлежи на не повече от една група, което е малко кофти.

Добре е да създадеш форин кий на междинната таблица за да не може да се въвеждат лайна в нея:
alter table user-attr
add constraint valid_user foreign key (uid) reference users (uid)

alter table user-attr
add constraint valid_attr foreign key (aid) reference attr (aid)

Отговор
в отговор на бaй Любo #4

по таз логика....

най разумно ми изглежда да се използва системата за регистрация и раздаване на права на самата операционна система....ако няма други ограничения де...))

[линк]
Отговор
в отговор на Topбaлaн #5

Re: по таз логика....

Аз само давам за пример как подобна задача е решена в определена СУ база данни.
Атрибутите, за които говори човека едва ли са разрешения за достъп до БД обекти (таблици, процедури, тригери и т.н.), така че вероятно ще трябва да си направи собствена системка за управление на юзерите, групите и аттрибутите.

Ако пък ли не -- разбира се че е по-гот да използва нещо дето е готово, било то узерите на ОС или усерите на субд.


Отговор
в отговор на Baj L\bo #6

най е гот....

както е при мен на работа
Windows + MS SQL Server
и всичко се управлява от едно място

[линк]
Отговор