Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql]Optymalizacja struktury bazy, Jak zrobić zeby działało szybciej ?
emilgubala
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 31.01.2008

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


OK. Mamy mały problem. Planujemy właśnie bazę do pewnego projektu.
Jak to mówią gdzie polaków dwóch tam trzy zdania (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Nie możemy dojść do porozumienia wiec postanowiłem aby zapytać kogoś z zewnątrz...
Chciałbym was poprosić o podanie które z przedstawionych przezemnie rozwiązań będzie działać szybciej...

Projekt to coś w stylu bazy firm. Wiadomo może sie rozrosnąć (wiadomo też że nie musi... ale lepiej pomysleć o optymalizacji na początku dlatego zakładamy że sie rozrośnie...)

Przyjmijmy że będziemy mieli około 5000 rekordów. (sprawdzałem po innych takich projektach jest nawet i ponad 10000 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

problem pojawił się przy zaplanowaniu bazy danych
w skrucie przyjmijmy ze informacje jakie chcemy przechować to:

nazwa firmy i branża i wszelkie_różności

z powodu przeznaczenia projektu - nawet budowy samego layouta gdzie w menu na pierwszej stronie
są kategorie (nie wspominając o wyszukiwarkach)
bardzo czesto bede musiał z bazy wybierać firmy z danej branży praktycznie każde wejscie na strone = wybranie informacji o firmach z danej branży...

pierwsza propozycja jest taka aby trzymać to wszystko w jednej tabeli wiec tak jak leci:

-------------------------------------------------
ID | Nazwa firmy | Branża | wszelkie_różności |
-------------------------------------------------
1 | bla bla bla | kompy | @#$%^&*()_%^ |
**************************************
5000 | rla rla bra | moto | @#$%^&*()_%^ |

wedłóg mnie każdorazowe przeszukiwanie tej tabeli po to by wybrać firmy z danej branży potrwa dłużej niżeli:

(pomysł nr. 2)

utworzenie w bazie tabeli do karzdej branży:

$tabela kompy
---------------------------------------
ID | Nazwa firmy | wszelkie_różności |
---------------------------------------
1 | bla bla bla | @#$%^&*()_%^ |
******************************
500 | rla rla bra | @#$%^&*()_%^ |

$tabela motoryzacja
---------------------------------------
ID | Nazwa firmy | wszelkie_różności |
---------------------------------------
1 | bla bla bla | @#$%^&*()_%^ |
******************************
500 | rla rla bra | @#$%^&*()_%^ |

$tabela budownictwo
---------------------------------------
ID | Nazwa firmy | wszelkie_różności |
---------------------------------------
1 | bla bla bla | @#$%^&*()_%^ |
******************************
500 | rla rla bra | @#$%^&*()_%^ |

wtedy wybieram wszystkie rekordy z tabeli która mnie interesune (czyli z branży która mnie interesuje) - według mnie takie coś będzie szybsze i praktyczniejsze - ale oczywiście moge się mylić - dlatego proszę was o opinie.

Z góry dzięki wszystkim za odpowiedzi!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
legorek
post
Post #2





Grupa: Zarejestrowani
Postów: 411
Pomógł: 35
Dołączył: 27.06.2004
Skąd: Kraków

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


Każdy z tych pomysłów jest zły.

Potrzebujesz tabeli firmy i kategorie

Zapoznaj się: 3NF
Go to the top of the page
+Quote Post
emilgubala
post
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 31.01.2008

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


ok (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) zapoznałem sie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) tylko nie mam pojęcia jak niby miałbym to odnieść do tego projektu (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

może troszkę to źle opisałem - wszystkie rużności nie oznaczają że wszystko trzymam dalej (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

potem się rozbije tabelę na np. firmy_adres - gdzie są wszelkie informacje teleadresowe (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

nie wiem co miałbym niby trzymać w tabeli kategorie ? i po co ?
skoro nie mam żadnych rzeczy opisujących kategorie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
jedynie firmy przynależace do danych kategorii...

tak wiec dalej proszę o pomoc (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował emilgubala 31.01.2008, 16:31:11
Go to the top of the page
+Quote Post
BirdWatcher
post
Post #4





Grupa: Zarejestrowani
Postów: 21
Pomógł: 1
Dołączył: 14.12.2006

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


Witaj!

NA PEWNO nie tabela z firmami kazdej kategori, bo jesli sie 'rozrosnie' to nie bedziesz co chwile recznie dodawał nowej branży (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)


Nie wiem dokladnie jakich informacji będziesz używał na każdej stronie, ale w odniesieniu do samej branży.

Najlepszym rozwiązaniem, w mojej opini będzie utworzenie tabeli ID|branża i tabeli ID|Nazwa_firmy|id_branzy|cala reszta

I wtedy szybko wyciągniesz po prostu firmy których pole id_branzy jest takie, jak branża której poszukujesz (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

mam nadzieje ze pomogłem, a jeśli ktoś ma jeszcze lepszy pomysł, to z chęcią sie naucze (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

pozdro
Go to the top of the page
+Quote Post
mxm
post
Post #5





Grupa: Zarejestrowani
Postów: 46
Pomógł: 1
Dołączył: 9.06.2005

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


Jeśli mogę coś zasugerować to to, że jesli rozbijesz firmy na poszczególne branże to jak skatalogujesz firmy które będą należały do dwóch lub trzech branż(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?
Go to the top of the page
+Quote Post
emilgubala
post
Post #6





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 31.01.2008

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


heh jak to mówią jeden przykład lepszy od miliona kursów (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

dostałem od kogoś z innego forum:

CREATE TABLE firmy (id unique serial, nazwa, adres, telefon, www, email, fax... )
CREATE TABLE branze (id unique serial, nazwa, kod, id_rodzica)
CREATE TABLE firmy_branze (firma_id, branza_id);

SELECT firmy.nazwa as nazwa, firmy.adres as adres ... branze.nazwa FROM firmy, branze WHERE firmy_branze.firma_id=firmy_branze.branza_id and firmy.nazwa like '$szukaj';
i zrozumiałem o co chodzi z 3NF.
Cóż ja mam takie podejście ze nikt sie geniuszem nie rodzi ale głupcem zostaje ten, który nie zdobywa wiedzy (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
2 dni z głowy ale chociaz nowe wiadomości doszły!
Dzięki wszystkim za pomoc! Każdy dostaje pomugł!
Go to the top of the page
+Quote Post

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: 23.08.2025 - 11:05