![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 190 Pomógł: 1 Dołączył: 20.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Mam problem z zamodelowaniem sytuacji, w ktorej system ma uzytkownikow, a kazdy uzytkownik moze posiadac jedna lub wiecej rol. Wezmy dla przykladu szkole: moga byc tu takie role jak: nauczyciel, administrator, rodzic, uczen, bibliotekarz... Przy czym nauczyciel moze byc jednoczesnie bibliotekarzem, rodzicem czy administratorem. Ale to nie taki problem - najgorsze jest to, ze oprocz wspolnych wlasciwosci (takich jak imie, nazwisko, PESEL), dodatkowo nauczyciel posiada jakies wlasciwosci (np. dataZatrudnienia, zarobki), ktorych nie moze posiadac rodzic... Jakie klasy mozna by stworzyc w takim przypadku (Osoba, Rola itp... (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ) i jak to wszystko zapisac w bazie danych? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 190 Pomógł: 1 Dołączył: 20.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cytat Jedna z opcji: trzymanie wszystkich mozliwych pol w jednej tabeli Osoba, i wstawianie tam NULLi gdzie te dane nie istnieja. Marnotrastwo miejsca w bazie ale spelni twoje wymagania. Tez to rozwazalem i to na pewno lepsze niz alternatywna struktura tabel, jaka sobie wymyslilem, w ktorej do wyciagniecia danych trzeba by bylo robic zlaczenie 6 tabel (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Lepiej juz zmarnowac miejsce niz pojechac po wydajnosci. Cytat Ja bym utworzył klasę Osoba, która by dziedziczyła po klasie: Nauczyciel, Administrator, Rodzic, Uczen i tak dalej... Rozumiem, ze mialo byc odwrotnie? No ok, zalozmy ze tworze klase Osoba i jej klasy potomne: Rodzic, Nauczyciel, Administrator itp., a w bazie danych tabele Osoby, ze wszystkimi mozliwymi polami, jakie tylko moze posiadac ktoras z rol. Ale jak tu uwzglednic, ze jedna osoba moze wystepowac w dwoch rolach? |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Wydaje mi się, że powinieneś rozdzielić to na trzy części: pracownicy, uczniowie oraz rodzice. Co do pracowników robisz osobną tabelę, w której są ich uprawnienia. Jeśli jakiś nauczyciel jest także rodzicem to dublujesz niestety dane.
Ten post edytował sf 11.03.2007, 12:48:49 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 16:44 |