![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 14:32 |