Relacje zamykają tabele bazy w pętli - czy to jest poprawne?

0

Witam

Mam pytanie o poprawność projektu bazy danych:

Moim zamierzeniem jest zaprojektować bazę tak żeby:

  • móc definiować domyślne uprawnienia dla stanowiska na którym pracuje pracownik
  • móc rozszerzać/ograniczać uprawnienia nadane pracownikowi przez jego stanowisko

przypadek użycia byłby np. taki:

  1. admin dodaje nowego użytkownika do systemu
  2. definiuje dla nowego pracownika stanowisko pracy
  3. system w oparciu o nadane stanowisko kopiuje uprawnienia ze stanowiska dla danego pracownika
  4. admin może rozszerzyć lub ograniczyć uprawnienia dla pracownika z puli wszystkich uprawnień do systemu

Projekt który mi wyszedł, wygląda jakby tabele zamknęły się w pętli a gdzieś czytałem ze jeżeli takie coś wychodzi to coś jest nie tak, tylko nie pamiętam czym to się może objawić. Może ktoś podpowiedzieć czy to jest dobry projekt, ewentualnie jak go poprawić żeby spełniał moje wymagania.

PS. uprawnienia muszą być tak rozdrobnione po prostu tego wymaga cały projekt, nie mogę ograniczyć się do roli, czasami paru pracowników na takim samym stanowisku będą mieli różne uprawnienia.
Uprawnienia to np.:

  • dodawanie nowych wyrobów
  • edycja wyrobów
  • kasowanie wyrobów
    itp.

user image

0

pętla by wskazywała na redundancję / denormalizację danych
i faktycznie informacje by były powtórzone jeżeli po stanowisku dałoby się stwierdzić uprawnienia
ale jeżeli uprawnienia stanowiska tak naprawdę nijak się mają do uprawnień pracownika na tym stanowisku (co jest trochę dziwne i proponowałbym zmianę nazw pól na mniej mylące - na przykład dopisać DomyślneUprawnieniaStanowiska)

0

Na oko wygląda sensownie (przy założeniu że uprawnienia pracownika to jest jakaś inna "kategoria" niż uprawnienia stanowiska na którym pracuje i nie są powiązane). Nie wiem tylko po co to hasło w osobnej tabeli ;]

0

fsdafsdafg :
to nie jest tak ze uprawnienia stanowiska mają się nijak do uprawnien pracownika;
przypadek 1) moze byc tak ze stanowisko technologa ma jakis pakiet uprawnien standardowych, ale jezeli odchodzi z pracy planista, technolog jako najbardziej kumaty w temacie przejmuje czesc jego roboty zanim pojawi sie w firmie/wyszkoli, nowy planista. Technolog na jakis czas musi miec dostep do funkcji planisty
przypadek 2) nowa firma, podzial obowiazkow dopiero sie klaruje przewiduje częste roszady uprawnien na niektorych stanowiskach - stad takie podejscie.

Shalom :
pula wszystkich uprawnien w systemie jest jedna, czesc uprawnien jest domyslna dla stanowiska, te uprawnienia chciałbym KOPIOWAC do puli uprawnien pracownika w momencie nadawania stanowiska dla pracownika a dopiero potem ewentualnie poszerza lub ograniczac uprawnienia indywidualnego pracownika.
DomyslneUprawnieniaStanowiska bylyby wykorzystywane w systemie tylko raz w momencie nadawania/zmiany stanowiska na ktorym pracuje pracownik.

Edit. z tym hasłem gdzies tak widzialem w jakis tutorialach, nie bede wyciągał hasłą z bazy do systemu dlatego odsunałem je w inna tabelke

2

Uprawnienia domyślne to nic innego jak parametr konfiguracyjny. Wpływ na całą bazę powinien być żaden. Co to oznacza? Otóż w momencie tworzenia nowego pracownika/zmiany stanowiska sięgasz w logice takiego procesu do konfiguracji zawierającej domyślny zestaw uprawień. Później już z niej nie korzystasz.
Tym samym tabelę z konfiguracją domyślnych uprawnień można pominąć w rozważaniach modelu ponieważ nie wpływa ona na jego kształt i cykl znika. Równie dobrze można by trzymać takie dane np. w pliku CSV, czy zaszyć w kodzie.
Finalnie model to Pracownik mający listę uprawnień i pracujący na danym stanowisku.

0

Koziołek - właśnie tak na początku myślałem żeby zrobić, żeby w logice systemu przy nadawaniu/zmianie stanowiska pracownika wprowadzać zestaw uprawnień domyślnych. Ale potem pomyślałem że w przypadku gdy zmieni się zestaw uprawnień domyślnych albo zróżnicuje się stanowiska to będę musiał wprowadzać zmiany w dwóch miejscach (pula uprawnień w bazie i w logice systemu), dlatego chciałbym wszyć to w baze danych.

2

Niezależnie gdzie będziesz trzymać listę domyślnych uprawnień nie ma ona żadnego wpływu na aplikację jako taką. To jest coś co technicznie jest w bazie danych, ale nie wpływa na model. Gdzieś te dane musisz składować i baza jest wygodnym rozwiązaniem. Nic więcej. Nie przejmuj się tym "cyklem", bo on nie istnieje w logice aplikacji.

0
Varran napisał(a):

Koziołek - właśnie tak na początku myślałem żeby zrobić, żeby w logice systemu przy nadawaniu/zmianie stanowiska pracownika wprowadzać zestaw uprawnień domyślnych. Ale potem pomyślałem że w przypadku gdy zmieni się zestaw uprawnień domyślnych albo zróżnicuje się stanowiska to będę musiał wprowadzać zmiany w dwóch miejscach (pula uprawnień w bazie i w logice systemu), dlatego chciałbym wszyć to w baze danych.

To może pogrupuj pojedyncze uprawnienia w grupy, wówczas zmieniając uprawnienia danej grupy, zmienisz je wszystkim powiązanym pracownikom.

1 użytkowników online, w tym zalogowanych: 0, gości: 1