Pokaż wyniki 1 do 6 z 6

Temat: [mysql]Optymalizacja struktury bazy danych.

  1. #1
    Avatar eMCe
    eMCe jest offline Emil Grzegorz Gubała
    Zarejestrowany
    Dec 2006
    Skąd
    Kielce
    Postów
    1,767

    Domyślnie [mysql]Optymalizacja struktury bazy danych.

    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 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 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.
    Może jest jeszcze jakieś mądrzejsze rozwiązanie...

    Z góry dzięki wszystkim za odpowiedzi!

    ps. dodam że wszelkie_rozności nie oznacza ze resztę śmieci tam trzymam - bo np. dane teleadresowe trzymane będą gdzie indziej...

    to tyle chyba czekam na wasze zdanie
    Agencja reklamy kielce (mały kilkudniowy case pozycjonerski )

  2. #2
    Avatar michalski007
    michalski007 jest offline michalski
    Zarejestrowany
    Sep 2006
    Skąd
    Warszawa
    Postów
    137

    Domyślnie re:

    witam
    według mojej opini (oczywiście mogę sie mylić), tak jak mówisz druga opcja jest napewno szybsza i wydajniejsza, wiesz jeden z minusów to zbezpieczenia, wydaje mi się że bazę z jedną tabelą będzie łatwiej zabezpieczyć, tak też robiliśmy z kolegą. Jednak w bardziej skomplikowanych projektach, jedna tabela.. hmm? to chyba troszke syzyfowe prace. Taka moja opinia.

    pozdrawiam

  3. #3
    h3x
    h3x jest offline Banned
    Zarejestrowany
    Dec 2007
    Postów
    271

    Domyślnie

    Jesli z gory okreslisz kategorie (kompy, moto) i nie bedzie mozna dodawac to zdecydowanie 2gi sposób.

    A co tu zabezpieczac, magic_quotes = on i uzywac ` oraz ' w zapytaniach.

  4. #4
    Avatar michalski007
    michalski007 jest offline michalski
    Zarejestrowany
    Sep 2006
    Skąd
    Warszawa
    Postów
    137

    Domyślnie re:

    odnosze się do linku który już wcześniej tutaj gościł w innym poście

    http://www.security-hacks.com/2007/0...ction-scanners

  5. #5
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Odnosnie optymalizacji struktury bazy - proponowalbym zatrudnic DBA (Database Architect) do zaprojektowania bazy. Wiadomo ze wymagania sie zmieniaja ale z doswiadczenia powiem, ze najgorsze co mozna miec to baze ktora zmienia sie i rozrasta w sposob organiczny, czyli jak cos nowego trzeba to sie dodaje kolumny do tabel itd... po 4-5 latach calos nie bedzie nadawac sie do jakiejkolwiek obslugi i dodanie 1 linii kodu czy nowego search'a bedzie pochlaniac miesiac pracy dla 4-osobowego zespoly - znam to z praktyki...

    Co do struktury tabel - pakowanie calosci do 1 tabeli zaprzecza calkowicie relacyjnemu modelowi baz danych. Dane powinny byc zatomizowane - jedno pole, jedna wartosc... Kategoria - ok, tylko nie zapisana razem z firma ale w osobnej tabeli wykaz kategorii. Do ktorej kategorii nalezy firma? Tez nie w tabeli opisujacej firme tylko w osobnej tabeli laczacej...

    Kod:
    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';
    W ten sposob jestes elastyczny bo kto powiedzial ze firma musi siedziec w jednej branzy np, kto powiedzial ze firma musi miec 1 telefon, kto powiedzial ze musi byc 1 notatka od klienta - jak niby chcialbys to zalatwic majac wiekszosc pol w 1 tabeli?

    5000 rekordow to jest doslownie nic... Do niedawna pracowalem na bazie ktora miala ponad 20mln rekordow i jedna tabela (transakcje) zajmowala ponad 40GB... a to tylko dla tego ze system rosl w sposob 'organiczny' i byl tam jeden wielki bajzel. Staraj sie tego uniknac albo oddaj system klientowi i zmien email, adres domowy, telefon itd... po prostu zniknij, bo nigdy nie opedzisz sie od problemow.
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  6. #6
    Avatar eMCe
    eMCe jest offline Emil Grzegorz Gubała
    Zarejestrowany
    Dec 2006
    Skąd
    Kielce
    Postów
    1,767

    Domyślnie

    ok dzięki wszystkim!
    chyba zrozumiałem właśnie o co chodzi z tym 3NF

    dzięki TQM - jak to mówią jeden przykład jest lepszy od miliona kursów
    Agencja reklamy kielce (mały kilkudniowy case pozycjonerski )

Podobne wątki

  1. przywrócenie usuniętej bazy
    By michalski007 in forum Bazy danych
    Odpowiedzi: 3
    Autor: 01-19-2008, 21:37
  2. Założenie bazy danych MySQL poprzez skrypt PHP
    By Abik in forum PHP/CGI/ASP/JSP/J2EE
    Odpowiedzi: 11
    Autor: 12-27-2007, 13:04
  3. Zapytanie do bazy danych.
    By calibra in forum Newbie - dla początkujących!
    Odpowiedzi: 14
    Autor: 12-15-2007, 19:43
  4. [php/mysql] polskie znaki przy zapisie do bazy danych!
    By eMCe in forum PHP/CGI/ASP/JSP/J2EE
    Odpowiedzi: 6
    Autor: 05-07-2007, 17:39

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52