Ilość tabel z użytkownikami w bazie danych.

0

Witam. Miałbym pytanie dotyczące projektowania baz danych. Załóżmy, że mam np. 3 typy kont administrator, klient i pracownik. Konta te posiadają wspólne pola takie jak np. imię, nazwisko, pesel, email, ale np. konto klienta posiada dodatkowo pola z adresem takie jak miasto, ulica, a konto pracownika dodatkowo jeszcze pole stanowisko. Moje pytanie jest, jak lepiej zaprojektować to w bazie? Tworzyć jedną tabelę user ze wszystkimi polami i w przypadku tworzenia admina, nadmiarowe pola wypełniać nullami? Czy rozbić to na 3 tabele admin, klient i pracownik?

Jeszcze jedno pytanie, załóżmy, że dwa typy kont mają możliwość zarządzania pewnym zasobem np. dodawaniem, usuwaniem i edycją jakiegoś wpisu w bazie. Czy zazwyczaj tworzy się jakąś tabelę, która np. przechowuje informacje o tym, że dany użytkownik dokonał jakichś operacji na danym wpisie? Załóżmy, że mamy konto lekarza i sekretarki, oba konta mogą dodawać, usuwać i edytować wizyty. Czy tworzyć dodatkową tabelę odnotowującą zdarzenia, że np. sekretarka ABCD dodała wizytę itp?

0

Zdecydowanie częściej tworzy się tabelę z wszystkimi użytkownikami, chociażby dlatego że pracownik może być w pewnym momencie również klientem.
A logowanie zmian też może okazać się kiedyś całkiem ważne np. jakaś zapisana wizyta niespodziewanie wyparowała z bazy? Klient czeka na wizytę, a w sali jest już inny, zapisany na tę godzinę. Pytanie: Czemu tak się stało? Kto zawinił?

0
olek1 napisał(a):

Witam. Miałbym pytanie dotyczące projektowania baz danych. Załóżmy, że mam np. 3 typy kont administrator, klient i pracownik. Konta te posiadają wspólne pola takie jak np. imię, nazwisko, pesel, email, ale np. konto klienta posiada dodatkowo pola z adresem takie jak miasto, ulica, a konto pracownika dodatkowo jeszcze pole stanowisko. Moje pytanie jest, jak lepiej zaprojektować to w bazie? Tworzyć jedną tabelę user ze wszystkimi polami i w przypadku tworzenia admina, nadmiarowe pola wypełniać nullami? Czy rozbić to na 3 tabele admin, klient i pracownik?

Rozbij to na tabele: użytkownik, adres, stanowisko irola (administrator, klient, pracownik).

Jeszcze jedno pytanie, załóżmy, że dwa typy kont mają możliwość zarządzania pewnym zasobem np. dodawaniem, usuwaniem i edycją jakiegoś wpisu w bazie. Czy zazwyczaj tworzy się jakąś tabelę, która np. przechowuje informacje o tym, że dany użytkownik dokonał jakichś operacji na danym wpisie? Załóżmy, że mamy konto lekarza i sekretarki, oba konta mogą dodawać, usuwać i edytować wizyty. Czy tworzyć dodatkową tabelę odnotowującą zdarzenia, że np. sekretarka ABCD dodała wizytę itp?

Sposobów jest wiele, najprostszy to chyba dodanie pola z id użytkownika który utworzył i edytował dany rekord tabeli, oraz datami tych operacji.

0

Chyba dodanie pola przy wpisie nie będzie zbyt dobrym rozwiązaniem w wypadku gdy wpis może edytować wielu użytkowników? Nie lepiej np. coś takiego mamy tabelę z wizytami i w momencie operacji na jakiejś wizycie np. dodanie czy edycja wykonywany jest wpisy do tabeli np. o nazwie historia, która zawiera id wizyty, id osoby wykonującej operacje, datę oraz typ operacji (dodanie, edycja)?

0

Pozwolę sobie odświeżyć. Wcześniej pisałem o dodaniu dodatkowej tabeli, która przechowywała by informacje o edycji, dodawaniu, usuwaniu danych w systemie. Czy nie można by tego zastąpić np. zapisując logi na serwerze np. za pomocą biblioteki log4j? Czy może takie coś nie jest raczej praktykowane?

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