Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wydajnosc - problem
lukaskolista
post
Post #1





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

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


Witam. Zastanawiam sie, jak zaprojektowac baze danych.
Mam tabele

produkty
id
nazwa

firmy
id
nazwa

firmy_produkty
id
id_firmy
id_produktu

1 rekord w tabeli firmy_produkty to 1 produkt wyprodukowany przez dana firme. Zakladajac, ze firm jest bardzo duzo i produktow tez, a firmy sie szybko rozwijaja i produkuja duze ilosci produktow liczba 100 000 000 000 szybko zostanie osiagnieta. Czy ta struktura jest dobra? Moze jest jakas lepsza do przechowywania tego typu danych? Samo zliczanie produktow poszczegolnych firm bedzie trwalo dosc dlugo. Z gory dziekuje za pomoc (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Przekombinowales. Skoro produkt jest produkowany przez jedną firmę to dwie tabele w zupelnosci wystarcza

firmy
id
nazwa

produkty
id
nazwa
id_firmy

Go to the top of the page
+Quote Post
lukaskolista
post
Post #3





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

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


firmy, czyli duzo (IMG:style_emoticons/default/tongue.gif) duzo firm i duzo roznych produktow, kazda firma moze produkowac kazdy produkt
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




100 miliardów produktów.... czy ty piszesz aplikacje dla Stanów zjednoczonych? No nie sądzę (IMG:style_emoticons/default/smile.gif)
100 miliardów produktów.... czy u ciebie produkt to pojedyncza zapałka? Czy może ogólnie produkt zapałka i już. Jak ktoś wyprodukuje milion zapałek to u Ciebie w bazie pojawi się milion rekordów zapałek, czy może jednak jeden produkt zapałka? Jesli pojawi ci się milion rekordów zapałek - źle zaplanowałes baze. Jesli pojawi ci się jeden produkt zapałka - jakim cudem chcesz osiągnąc 100 miliardów produktow (IMG:style_emoticons/default/smile.gif)
Powód edycji: [nospor]:
Go to the top of the page
+Quote Post
lukaskolista
post
Post #5





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

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


produkt to na przyklad paczka ciastek

10000 firm produkujacych dziennie 1000 paczek akzda to sie szybko uzbiera, dlatego pytam czy dobrze to zrobilem. Nie zrobie tak:

firmy_prodykty
id_firmy
ciastka (int)
batoniki(int)

bo typow produktow moga byc setki, chipsy, czekolady itp
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




1) Czy kilka firm produkuje tę jedną paczke ciastek? No raczej nie.
2) po co ci kazdy oddzielny rekord na kazda paczke ciastek? Sledzisz losy kazdej pojedynczej paczki ciastek?

tabela firma
id
nazwa

tabela produkt
id
nazwa
id_firma
ilosc
Go to the top of the page
+Quote Post
lukaskolista
post
Post #7





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

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


2 rozne firmy moga produkowac ten sam produkt, np. batonik. Batoniki moze produkowac dowolna ilosc firm, jednak dalej chodzi o batonik, ktorego cena sprzedazy wynosi 1,5zl
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #8





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Nie, dwie firmy nie mogą produkować tego samego batonika. To będą 2 różne batony. A poza tym jak mówi nospor, po co ci każdy egzemplarz produktu w bazie? Chcesz ich ilość? Dodaj takie pole do tabeli.
Go to the top of the page
+Quote Post
Crozin
post
Post #9





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Tak na początek. Tabele łączące relacje wiele-do-wielu (czyli firmy_produkty z Twojego przykładu) nie wymagają kolumny id. id_a, id_b w zupełności wystarcza. To tak swoją drogą.

Co do tych produktów. Jeżeli firma A, B, C i D produkują batoniki (nawet dokładnie takie same) powinny Ci się pojawić 4 nowe rekordy w tabeli produktów, bo z logicznego punktu widzenia są to 4 różne produkty. Natomiast fakt, że firma A wyprodukowała 1000, B 10000 a C i D po 500 batoników powinieneś uwzględnić zmieniając jedynie wartość "ilość" przy każdym produkcie. Bo to już jest ten sam produkt.

To jest standardowy model, ale może on w zależności od Twoich potrzeb wyglądać inaczej. Baza może wymagać zmiany struktury jeżeli przykładowo będziesz miał różną ilość tego samego produktu w różnych terminach albo będziesz śledzić losy pojedynczego produktu (o czym wspomniał nospor). Jeżeli masz jakieś niestandardowe wymagania, to podaj je najpierw.
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: 4.10.2025 - 12:45