Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL] prawidłowa normalizacja, czyli jak podzielić tablicę użytkowników
norgoth
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 31.01.2008

Ostrzeżenie: (0%)
-----


Właśnie walczę z problemem, podziału tabeli użytkowników na mniejsze. Wszystko dlatego, że w tabeli mają być dwa typy użytkowników, dla przykładu student i wykładowca. Oba typy mają mieć takie same kolumny z informacją o użytkowniku, przy czym dla wykładowców ma być o kilka kolumn więcej z ustawieniami konta (~6 kolumn z danymi typu ENUM 'Y', 'N' opisujące opcje w stylu "wyślij powiadomienie email kiedy nadejdzie nowa wiadomość", przy czym studenci wykorzystują tylko ~2 z nich).

I teraz 4 dopuszczalne rozwiązania:

- 1 tablica "uzytkownicy"
gdzie wszystkie kolumny opcji niedostępnych dla studentów mają wartość NULL (raczej wykluczam że to poprawne)

- 2 tablice "studenci" i "wykładowcy"
gdzie studenci mają tylko ~2 kolumny ustawień, a wykładowcy ~6 (z tego ~2 są identyczne jak te u studentów)

- 2 tablice "uzytkownicy" i "ustawienia"
gdzie tablica ustawienia zawiera klucze obce wg. ID wykladowcow, ale w tablicy uzytkowników też muszą znaleźć się ~2kolumny ustawień które dotyczą wszystkich użytkowników

- 3 tablice "uzytkownicy", "ustawienia_s" (dla studentów), "ustawienia_w" (dla wykladowcow)

Które z tych rozwiązań jest najbardziej poprawne?

Ten post edytował norgoth 3.07.2008, 19:39:53
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mike
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


~qrees nie cały świat w okół CMSów się kręci.
Rozdzielenie na dwie tabele jest poprawne jełśi są to dwa odrębne obiekty.

Jeśli są to zaś dwa typy tego samego obiektu to powinna być wprowadzona tabela z ustawieniami. Ale tego nie wiemy.

Jeśli studenci i wykładowcy mają wspólny tylko login i hasło to nie są to te same obiekty i wypadają do dwóch tabel.
Go to the top of the page
+Quote Post
qrees
post
Post #3





Grupa: Zarejestrowani
Postów: 275
Pomógł: 44
Dołączył: 23.11.2007

Ostrzeżenie: (0%)
-----


Cytat(mike @ 3.07.2008, 21:06:40 ) *
~qrees nie cały świat w okół CMSów się kręci.
Rozdzielenie na dwie tabele jest poprawne jełśi są to dwa odrębne obiekty.

Jeśli są to zaś dwa typy tego samego obiektu to powinna być wprowadzona tabela z ustawieniami. Ale tego nie wiemy.

Jeśli studenci i wykładowcy mają wspólny tylko login i hasło to nie są to te same obiekty i wypadają do dwóch tabel.

No niestety nie zgodzę się. Jeżeli mają wspólny login i hasło i obaj mogą korzystać z jakiegoś interfejsu do logowania (prawdopodobnie tego samego), to jest podstawa do tego żeby umieścić ich w jednej tabeli. zarządzanie użytkownikami znacznie się uprości. CMS to był tylko przykład. To że w CMS'ach robi się to w ten sposób, to nie znaczy że to jest jakaś fanaberia twórców CMS'ów, tylko jest za tym jakaś głębsza myśl. Poza tym, nie tylko w CMS'ach się tak robi, ale praktycznie wszędzie. Mamy tabelę z użytkownikami której używamy do zarządzania nimi, a to że ktoś tam w niej jest wykładowcą, ktoś studentem, od tego są rzeczy takie jak grupy, klucze obce itd.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.09.2025 - 18:39