Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Optymalizacja zapisu danych do bazy
Forum PHP.pl > Forum > Bazy danych
Mephis
Witam.

1. Załóżmy, że mamy tabelę dot. profilu użytkownika. Znajdują się w niej takie kolumny, jak 'imię', 'nazwisko', 'miasto'.
Wiadomo, że zarówno imiona jak i nazwiska, a tym bardziej miasta będą się powtarzać. Z nazwiskami co prawda mniej co imiona, ale też jednak powtórzą się nieraz. W szczególności, gdy profili będzie np. ok. 300 tyś.
Czy warto zrobić coś takiego, aby utworzyć osobne tabele zawierające właśnie dane dot. tych kolumn, czyli zawierające imiona, nazwiska i miasta?
Oczywiście takie dane jak imię czy nazwisko, czy miasto zostanie wprowadzone tylko za pierwszym razem. Następnie, jeżeli już będzie istnieć odpowiednie 'imię' w bazie, w tabeli profilu zostanie zapisane tylko odwołanie pod postacią identyfikatora.

2. Wiadomo, że domeny adresów poczty elektronicznej będą się powtarzać. To jest jeszcze bardziej pewne niż to wyżej. Czy warto w takim przypadku rozdzielić użytkownika poczty od domeny? Zasada działania jak ta wyżej, czyli raz wprowadzona domena zostanie zapisana, a następnie w danych o użytkowniku zostanie zapisane tylko odwołanie do domeny.
Do tego, jeżeli to wyżej ma sens, to czy warto rozdzielić domeny na subdomeny (i już na nic więcej)? Subdomena łączyła by się wtedy z rodzicem (domeną) i tworzyła pełną domeną.
Ta sama tabela domen będzie mogła posłużyć do blokowania dostępu z odpowiednich hostów, czy do pozbawienia możliwości rejestracji w serwisie z odpowiedniej domeny (lub subdomeny domeny) adresu mail.

Pozdrawiam, Xerphis.
mmmmmmm
Nie warto. Tylko sobie krzywdę zrobisz.
Dla 300 tys szkoda zachodu. Przy 300 milionach, gdyby mi się miejsce w bazie kończyło (w hostingu znaczy się) bym się zastanowił.
Pyton_000
Taniej by Ci było dokupić miejsce niż zmieniać wtedy strukturę bazy biggrin.gif
Mephis
Zapomniałem wspomnieć, że to wszystko tyczy się projektowania bazy a nie modyfikację aktualnej.

Czyli, że nie opłaca się ani jedno ani drugie? Chodzi tutaj o niewielki wpływ na wagę bazy, czy o wydłużenie czasu wykonywania zapytań?
Pyton_000
Rozbijając komplikujesz sobie życie, a zysku z tego nie ma tak wielkiego żeby to było must have.

Czasami warto zostawić takie pierdoły. Rozdzielenie miałoby sens gdybyś ręcznie dodawał/usuwał opcje tak jak np. w statusach zamówień itp.
Mephis
Sobie nie komplikuję w żadnym wypadku.

Chodzi mi właśnie o to, czy w ten sposób skomplikuję życie tylko i wyłącznie serwerowi bazy danych, gdyż zależy mi na jej wydajności.
Pyton_000
A w czym problem utworzyć sobie 2 struktury, wypchać danymi i przetestować obie formy? Wrzuć sobie nawet 2 mln danych. Wg. mnie rozbijanie tych danych jest bez sensu. Dla Ciebie może ma sens.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.