Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wydajnosc - problem
Forum PHP.pl > Forum > Bazy danych
lukaskolista
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 winksmiley.jpg
nospor
Przekombinowales. Skoro produkt jest produkowany przez jedną firmę to dwie tabele w zupelnosci wystarcza

firmy
id
nazwa

produkty
id
nazwa
id_firmy

lukaskolista
firmy, czyli duzo tongue.gif duzo firm i duzo roznych produktow, kazda firma moze produkowac kazdy produkt
nospor
100 miliardów produktów.... czy ty piszesz aplikacje dla Stanów zjednoczonych? No nie sądzę 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 smile.gif
lukaskolista
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
nospor
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
lukaskolista
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
Mephistofeles
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.
Crozin
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.