• 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?

0 głosów
80 wizyt
pytanie zadane 15 maja 2018 w PHP, Symfony, Zend przez Alterwar Mądrala (7,280 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 Mędrzec (178,450 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 Mądrala (7,280 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 Mędrzec (164,560 p.)

@Tomek Sochacki, nie lepiej enum wink

komentarz 15 maja 2018 przez Tomek Sochacki Mędrzec (178,450 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 Mędrzec (178,450 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 Mędrzec (164,560 p.)
Z tym się nie zgodzę, szczególnie gdy schemat jest budowany z klas encji, lub modeli.

Podobne pytania

0 głosów
2 odpowiedzi 93 wizyt
0 głosów
3 odpowiedzi 210 wizyt
pytanie zadane 19 września 2018 w SQL, bazy danych przez molik Użytkownik (520 p.)
+2 głosów
3 odpowiedzi 115 wizyt
pytanie zadane 29 czerwca 2018 w SQL, bazy danych przez hiper007 Stary wyjadacz (10,860 p.)
Porady nie od parady
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.Podgląd posta

64,043 zapytań

110,429 odpowiedzi

231,263 komentarzy

47,812 pasjonatów

Przeglądających: 253
Pasjonatów: 21 Gości: 232

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...