Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Optymalizacja bazy danych, jedna tabela, czy kilka mniejszych tabel
coolos
post
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 15.04.2009

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


Witam,

Wiem że już podobne tematy były na forum (nawet przeczytałem kilka (IMG:style_emoticons/default/smile.gif) ), chciałbym jednak żeby ktoś rozważył mój konkretny przypadek.

Mam mały dylemat przy tworzeniu bazy danych dla strony z bazą programów, gier i sterowników. Oto kilka wariantów o których myślę.

Wariant 1
Dosyć prosty i w porządku dla małej liczby rekordów, ale co w przypadku dajmy na to 10 000 aplikacji, 500 kategorii, 100 000 komentarzy? i około 500-1000 ludzików na stronie? Mogłoby być ciężko jak dla mnie.

Tabela Aplikacje
Id | IdProducenta | IdLicencji | IdKategorii | Nazwa | Wersja | Opis | DataDodania | NazwaProducenta | LinkDoProgramu | TypAplikacji <--- (tzn. Czy sterownik, program czy gra, wartości 1,2 lub 3)

Tabela Kategorie
Id | Nazwa

Tabela Komentarze
Id | IdUzytkownika | IdAplikacji | Komentarz

Tabela Obrazki <-- do jednej aplikacji może być więcej niż 1 obrazek stąd osobna tabela
Id | IdAplikacji | LinkDoObrazka



Wariant 2
Czyli rozbicie wszystkiego na tabele, pasuje od strony logicznej, bo gry, programy i sterowniki maja rożne kategorie. Wszystko jest rozłożone na klilka tabel, więc obciążenie danej tabeli jest mniejsze. Nie podoba mi się natomiast że obrazki rozbite są w 3 różnych tabelach, wolałbym mieć je wszystkie w 1 tabeli, jest to w zasadzie nie możliwe z powodu różnych indexów w każdej z tabel gry, sterowniki, programy.

Tabela Gry
Id | IdProducenta | IdLicencji | IdKategoriiGry | Nazwa | Wersja | Opis | DataDodania | NazwaProducenta | LinkDoProgramu |

Tabela Programy
Id | IdProducenta | IdLicencji | IdKategoriiProgramy | Nazwa | Wersja | Opis | DataDodania | NazwaProducenta | LinkDoProgramu |

Tabela Sterowniki
Id | IdProducenta | IdLicencji | IdKategoriiSterownikii | Nazwa | Wersja | Opis | DataDodania | NazwaProducenta | LinkDoProgramu |

Tabela KategorieGry
Id | Nazwa

Tabela KategorieProgramy
Id | Nazwa

Tabela KategorieSterowniki
Id | Nazwa

Tabela KomentarzeGry
Id | IdUzytkownika | IdGry | Komentarz

Tabela KomentarzeProgramy
Id | IdUzytkownika | IdProgramu| Komentarz

Tabela KomentarzeSterowniki
Id | IdUzytkownika | IdSterownika | Komentarz

Tabela ObrazkiProgramy
Id | IdProgramu | LinkDoObrazka

Tabela ObrazkiGry
Id | IdGry | LinkDoObrazka

Tabela ObrazkiSterowniki
Id | IdSterownika | LinkDoObrazka





Wariant 3 - i ostatni (IMG:style_emoticons/default/tongue.gif)
Czyli wolna amerykanka - możliwość wyboru co chcemy mięć w 1 tabeli, a co w wielu tabelach

Tabela Aplikacja
Id | IdAplikacji | typ | <--- (IdAplikacji to id programu, sterownika lub gry, a Typ określa czy to jest sterownik, program czy aplikacja), dzięki tej tabeli pośredniczącej, każdy z rekordów tabeli, ma swój unikalny indeks.

Tabela Gry
Id | IdProducenta | IdLicencji | IdKategoriiGry | Nazwa | Wersja | Opis | DataDodania | NazwaProducenta | LinkDoProgramu |

Tabela Programy
Id | IdProducenta | IdLicencji | IdKategoriiProgramy | Nazwa | Wersja | Opis | DataDodania | NazwaProducenta | LinkDoProgramu |

Tabela Sterowniki
Id | IdProducenta | IdLicencji | IdKategoriiSterownikii | Nazwa | Wersja | Opis | DataDodania | NazwaProducenta | LinkDoProgramu |

Tabela KategorieGry
Id | Nazwa

Tabela KategorieProgramy
Id | Nazwa

Tabela KategorieSterowniki
Id | Nazwa

Tabela Obrazki
Id | IdAplikacji | LinkDoObrazka




Myślę nad tym i nie wiem który wariant wybrać. Te tabele o których napisałem wyżej są bardziej rozbudowane, ale nie chciałem przytaczać zbędnych danych tylko nakreślić problem. Nie wiem które rozwiązanie jest bardziej optymalne. Czy wariant 3, wprowadzenie dodatkowej tabeli z indexem jest dobrym pomysłem? Obstawiałbym za tym bo dałoby mi to szersze pole manewru. Sam już nie wiem i liczę na podpowiedź mądrzejszych odemnie.

pozdrawiam

Ten post edytował coolos 23.03.2010, 14:54:14
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: 18.09.2025 - 23:08