
#webdev #bazydanych #sql #postgresql
Mirki mam pytanie, otóż w pewnej bazie danych najważniejsze informacje o użytkownikach, przechowuję w 2 tabelach: users i settings (tu jest klucz obcy do id z users). Tabela users nie ma żadnych wartości NULL, natomiast settings ma większość wartości NULL dopóki użytkownik ich nie uzupełni.
Przy pobieraniu dużej ilości rekordów z users i settings JOINowanie tabeli settings zajmuje dużo czasu. Profesor od baz danych z polibudy powiedział, że on scalił by obie tabelę. Z drugiej jednak strony, jeżeli jakaś kolumna ma puste wartości to powinno się zrobić tabelę pomocniczą dla niej np users_lang (atomizacja itd). Co wy o tym sądzicie? Dodam, że baza będzie bardzo duża w przyszłości.
Mirki mam pytanie, otóż w pewnej bazie danych najważniejsze informacje o użytkownikach, przechowuję w 2 tabelach: users i settings (tu jest klucz obcy do id z users). Tabela users nie ma żadnych wartości NULL, natomiast settings ma większość wartości NULL dopóki użytkownik ich nie uzupełni.
Przy pobieraniu dużej ilości rekordów z users i settings JOINowanie tabeli settings zajmuje dużo czasu. Profesor od baz danych z polibudy powiedział, że on scalił by obie tabelę. Z drugiej jednak strony, jeżeli jakaś kolumna ma puste wartości to powinno się zrobić tabelę pomocniczą dla niej np users_lang (atomizacja itd). Co wy o tym sądzicie? Dodam, że baza będzie bardzo duża w przyszłości.
- Najlepsze
- Wszystkie komentarze






@Zaszczyk: To zalezy :)
Jesli wiedomo ze nic sie w tej sprawie nei zmieni to spokojnie mozesz to trzxymac w jednej tabeli. Ale jesli tak zrobisz a za pol roku ktos powie ze kazdy juzer ma miec nieograniczona liczbe adresow pocztowych to Cie szlag trafi i bedziesz w tym grzebal trzy tygodnie....
1) indexy!
2) normalizacja zapobiega zajmowaniu niepotrzebnie
@Zaszczyk: Joiny to podstawowa funkcjonalnosc przy pobieraniu danych z bazy. Przy takim problemie jak opisales chyba bym sprawdzil czy wszystko ok z joinem w tym przypadku (explain, execution plan, optimizer output).
MySQL przy joinach zwykle tworzy tabele tymczasowa, a jesli ktoras z laczonych tabel zawiera pola typu (o ile pamietam) blob czy text to tabela bedzie utworzona
1) wiadomo że są indexy ;)
2) no tak, bo więcej tabel
3)
email | phone | user
@Zaszczyk: Dlatego powstało NoSQL, dla tych sobie z tym nie radzili ( ͡° ͜ʖ ͡°)
@kowad: Jesli jedna z wlasciowosci klasy to wielowymiarowa tablica o nieokreslonej liczbie elementow to co wtedy? Mozne zserializowac i nadal trzymac w jednej kolumnie, tyle ze wyszukiwanie staje sie problematyczne....
@kowad: Moje doswiadczenie mowi mi ze lepiej sie przygotowac na zmiany w przyszlosci :)
Ale oczywiscie kazdy ma prawo do zdobywania wlasnegod doswiadczenia ( ͡° ͜ʖ ͡°)