Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Projektowanie bazy danych, tabele słownikowe
zzeus
post
Post #1





Grupa: Zarejestrowani
Postów: 441
Pomógł: 71
Dołączył: 3.09.2007
Skąd: wrocław

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


Witam, załóżmy że projektujemy bazę danych dla sklepu internetowego, i mamy tablicę z danymi użytkownika a w niej pola typu kraj, miasto, ulica, kod pocztowy. Lepiej takie pola trzymać dla każdego użytkownika w formie tekstowej, czy tworzyć tabele słownikowe a w tabeli z danymi użytkownika trzymać tylko powiązane id. Zaletą jest większa czytelność, ale z drugiej strony przy wyciąganiu danych z bazy rośnie złożoność zapytań. Co Wy o tym sądzicie ?

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
vokiel
post
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Jeśli chodzi o dane, które się często nie zmieniają to lepiej zrobić to w oddzielnyc tabelkach. Przykładowo kraj.
Dzięki temu możesz utworzyć liste rozwijalną z ich listą, wtedy użytkownik już tylko wybiera dany kraj (podczas tworzenia listy możesz ustawić zaznaczenia na wybrany kraj, tak, że wstępnie określasz z jakiego kraju użytkownik pochodzi i wybierasz ten kraj).
Jeśli chodzi o miasta, to już jest gorzej, bo odnośnie Polski to jeszcze luz, ale jakbyś chciał to rozszerzyć na inne kraje, to się robi spora baza. Możesz ewentualnie stworzyć liste miast w pl, a jeśli nie w pl to niech wpisują z palca.

Ogólnie uważam, że lepiej jak użytkownik wybiera z przedstawionych opcji, rejestracja jest szybsza, przyjemniejsza, i poprawniejsza.
W pole kraj mozna wpisac np: PL, Polska, Poland etc., a jak masz listę rozwijalną z wypisanymi krajami to wybierzesz to co masz do wybrania. Zapisujesz do bazy id kraju, a nie tekst, działa szybciej, i wyszukiwanie będzie szybsze.

No ale odnośnie innych pól (poza krajem) to uważam, że lepiej niech to będzie wpisywane z palca, bo tych danych jest za dużo, żeby to przechowywać. Najprawdopodobniej nieproporcjonalnie do ilości wykorzystanych. Przykładowo wpiszesz nazwy 5tys miast, a użytkowników będziesz mial z 30 różnych, wtedy nie zaoszczędzisz miejsa w bazie, nie zwiększysz szybkości.

Ewentualnie możesz zapisywać takie rzeczy na bieżąco. Co mam na myśli? Ktoś wpisuje miejscowość (kod, ulica etc), a Ty sprawdzasz czy taki już istnieje, jeśli nie to tworzysz nowy i zapisujesz jego id w tabeli usr, a jesli istnieje to pobierasz te id i je dodajesz. Wtedy unikasz redundancji danych, i nie przeładowujesz tabel niepotrzebnymi danymi, których nie wykorzystasz.

Dodatkowo byś mógł się pobawić w ajaxowe podpowiadanie pól z danych już wpisanych w bazie, dzięki czemu wpisy będą podobniejsze.
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: 13.10.2025 - 14:32