• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Czy rozbijać tabelę user na dwie osobne tabele?

VPS Starter Arubacloud
0 głosów
284 wizyt
pytanie zadane 15 maja 2018 w PHP przez Alterwar Dyskutant (7,650 p.)
Witam,

zastanawiam się czy tabelę user rozbić na user i user_properties. W userze trzymałbym:

id, id_log, login, hasło, rola (admin, user), email, imię, nazwisko, stopień (doktor, magister), zdjęcie, krótki opis

czy rozbić to na user:

id, login, haslo, e-mail, rola, id_user_properties, id_log

 

Który sposób jest wydajnieszy i lepszy?

1 odpowiedź

0 głosów
odpowiedź 15 maja 2018 przez Tomek Sochacki Ekspert (227,510 p.)
wybrane 15 maja 2018 przez Alterwar
 
Najlepsza
Nie ma sensu tego rozbijać. Nie musisz przecież zawsze pobierać wszystkich dane ale tylko te, które Cię interesują.

Zastanów się tylko nad polem stopień. Musisz się zabezpieczyć przed wpisywaniem np. "mgr", "magister", "mgr.", "magist." (tak.... raz widziałem nawet taki twór :D).

Możesz to pyknąć np. serwując userowi listę możliwych stopni do wyboru, żeby nie wprowadzał ich ręcznie. W bazie natomiast możesz trzymać id stopnia i mieć drugą tabelę albo zapisywać w tej. Ja bym się raczej skłaniał do osobnej tabeli ze stopniami, a w razie czego aby przyspieszyć odczyty można zrobić na bazie tzw. widok, ale to już kwestia indywidualna.
komentarz 15 maja 2018 przez Alterwar Dyskutant (7,650 p.)
Ok dzięki, tak stopnie bym narzucił odgórnie, aby można było tylko je wybierać z listy. Chciałbym, aby każda osoba mogła zarezerwować sobie sale. Czy idę dobrym tokiem myślenia aby zrobić tabele: user, room(numer sali, ilość miejsc, id_bulding), building(nazwa sali), calendar(godzina rozpoczęcia, zakończenia, dzień), i tab rezervation (id_user, id_room, id_calendar) ?

Wydaje mi się ze sensowne jest takie rozplanowanie bazy. I w tabeli rezerwacji będę sprawdzał czy dana sala jest dostępna czy już zarezerwowana
komentarz 15 maja 2018 przez Ehlert Ekspert (212,630 p.)

@Tomek Sochacki, nie lepiej enum wink

komentarz 15 maja 2018 przez Tomek Sochacki Ekspert (227,510 p.)

@Elhert wiesz co, enum czy set to są pewne typy w bazach np. MySQL i korzystałem z nich czasami, ale jednak wygodniejsze wg mnie jest stworzenie osobnej tablicy i poruszanie się po prostu po odpowiednich relacjach z ewentualnymi foreign key i constraints. W ten sposób możesz zawsze łatwo pobrać np. tę listę "stopni" i zaserwować ją userowi np. w polu wyboru. Gdyby było to zapisane w ENUM to już trudniejsze, można by co prawda kombinować np. z poleceniem show columns i potem oblecieć wynik jakimś regexp ale to wg mnie zbyt przekombinowane rozwiązanie.

Moim zdaniem lepiej stosować bardziej tradycyjne podejście, a enum czy set zostawić na na prawdę jakieś wyjątkowe sytuacje. Co innego jeśli np. pracowalibyśmy tylko na bazie i operowali na jakiś raportach itp. ale tutaj mówimy o aplikacji, gdzie baza jest jakby z boku.

A złączeń nie ma co się bać. MySQL bardzo fajnie pozwala tworzyć widoki co osobiście często stosuję i dzięki temu w back-endzie mam proste selecty bez żadnych "dżojnów" :), a co się dzieje pod spodem to już kwestia struktury bazy, która jest w tym momencie w pewien sposób odizolowana od aplikacji i jej back-endu. 

1
komentarz 15 maja 2018 przez Tomek Sochacki Ekspert (227,510 p.)
W bazach danych jest jeszcze jedna, co prawda nieformalna, ale często spotykana zasada, aby tabele nazywać liczbą mnogą, czyli nie user ale users, nie room ale rooms itp. Łatwiej wtey obracać się w bazie, szczególnie gdy z czasem dojdą bardziej zaawansowane związania itp. i od razu wiesz co jest nazwą tabeli, a co nazwą pola.
komentarz 15 maja 2018 przez Ehlert Ekspert (212,630 p.)
Z tym się nie zgodzę, szczególnie gdy schemat jest budowany z klas encji, lub modeli.

Podobne pytania

0 głosów
1 odpowiedź 281 wizyt
0 głosów
1 odpowiedź 249 wizyt
pytanie zadane 10 lipca 2019 w PHP przez Jano1890 Nowicjusz (200 p.)
0 głosów
2 odpowiedzi 378 wizyt

92,455 zapytań

141,263 odpowiedzi

319,100 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...