![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 12.01.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witam,
jestem na etapie projektowania struktury bazy danych dla dosyć dużego serwisu (baza obiektów turystycznych) i zastanawiam się czy dane jednego obiektu lepiej przechowywać w jednej dużej tabeli czy w kilku mniejszych (dokładnie jak rozplanowałem to wyszło mi 8 małych), do wyświetlenia kompletnego wpisu potrzebny będzie dostęp do 7 z 8 tabel + 3 z danymi stałymi (z których będą pobierane np. nazwy województwa itp. - w opisie obiektu będzie tylko id rekordu z nazwą województwa), ale np do wyświetlenia wyników wyszukiwania już tylko 4-5 + 2-3 z danymi stałymi. Najkorzystniej zapewne byłoby to zrobić właśnie w ten sposób tylko jestem ciekaw na ile pobieranie danych z różnych tabel w jednym zapytaniu jest mniej efektywne od pobierania danych z jednej dużej tabeli? Gdybym zrobił wszystko w jednej tabeli miałaby ona ok 40 kolumn, więc wydaje mi się, że jest to bezsensu. Co do ilości zapytań to zdecydowanie większy nacisk kładę na ograniczenie ich liczby przy pobieraniu danych z bazy niż przy dodawaniu (do dodania jest taka liczba danych, że to i tak pożre od 10 do 100 zapytań dla jednego obiektu, ale obiekty będą dodawane stosunkowo powoli). Dzięki serdeczne za pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Maciek |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
@muniekw:
Cytat Jak dla mnie lepiej jest używać kilku mniejszych tabel. Przy większej ilości użytkowników przetwarzanie jednej większej tabeli może być sporym obciążeniem dla bazy. O_O - a to od kiedy? ze niby szybiej sie wykona siedmiotabelowy join niz przegladanie jednej tabeli? @phppion No ale widok to nic innego jak skrot do SELECTa, ulatwia pisanie zapytanek a nic nie przyspiesza. DO szukarki mozesz sobie przygotowac index w jednej tabeli - tak zebys tylko ja przeszukiwal, a do wyswietlania listy obiektow - albo skorzystaj z indeksu albo juz z joinow. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 243 Pomógł: 22 Dołączył: 1.06.2009 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Chodzi mi o to, że nie sztuką jest wszystko wpakować do jednej tabeli i tylko na niej operować. Istnieje przecież coś takiego jak postacie normalne.
@dr_bonzo Cytat O_O - a to od kiedy? ze niby szybiej sie wykona siedmiotabelowy join niz przegladanie jednej tabeli? Z tym się zgodzę, że złączenia 7 tabel będą się wolniej wykonywały niż operacje na jednej tabeli.
Ten post edytował muniekw 15.06.2009, 09:15:22 |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Chodzi mi o to, że nie sztuką jest wszystko wpakować do jednej tabeli i tylko na niej operować. Istnieje przecież coś takiego jak postacie normalne. @dr_bonzo Z tym się zgodzę, że złączenia 7 tabel będą się wolniej wykonywały niż operacje na jednej tabeli. + Cytat Według mnie poczytaj sobie o postaciach normalnych i myślę, że znajdziesz to czego szukasz, bo możemy dyskutować o tym, która metoda jest lepsza, ale tak na prawdę Ty sam wiesz najlepiej jakich Ci potrzeba tabelek i do czego mają być one używane, a jak poczytasz sobie o postaciach normalnych to tam jest napisane czym charakteryzuje się dobrze stworzona baza i jak powinna być prawidłowo zaprojektowana. To bedzie mial joina na 20 tabel. @awakening: pomysl o dodatkowej tabeli z indeksem (jak juz mowilem) - wrzucisz tam wszystko wg czego szukasz, i pokazujesz na wynikach wyszukiwania (nie wiecej). Albo tylko do szukania, przed pokazaniem pobierzesz ID rekordow i pobierzesz je normalnie WHERE ID IN ( 1,2,3,... ). No ale nie znam szczegolow twojej bazy wiec musisz sam to ocenic czy to bedzie mialo sens. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 243 Pomógł: 22 Dołączył: 1.06.2009 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
@dr_bonzo
Cytat To bedzie mial joina na 20 tabel. A czy w obsłudze rekordów w bazie potrzebne będą akurat złączenia tabel? Bo może nie będzie potrzeby robić złączeń i po co kombinować? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 04:58 |