Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skladowanie danych w tabeli (many to many)
Forum PHP.pl > Forum > Bazy danych > MySQL
jacobson
Witam, mam takie pytanie. Powiedzmy ze mam 10 uzytkownikow i 10 produktow. Kazdy uzytkownik moze miec ile chce produktow. Musze to skladowac w bazie danych. Czy najlepiej jest stworzyc tabele np: Id, uzytkownik, produkt i tam dodawac kolejne rekordy np:
  1. id1 uzytkownik1 produkt1
  2. id2 uzytkownik1 produkt2
  3. id3 uzytkownik1 produkt3
  4. id1 uzytkownik2 produkt1

czy jest jakies lepsze wyjscie zeby nie dodawac do bazy danych miliona rekordow tylko 1 rekord dla kazdego uzytkownika? Czy takie rozwiazanie jest wystarczajaco optymalne ze nie potrzeba innego ? ;p

pozdrawiam
bpskiba
Cytat(jacobson @ 6.05.2012, 14:08:56 ) *
Witam, mam takie pytanie. Powiedzmy ze mam 10 uzytkownikow i 10 produktow. Kazdy uzytkownik moze miec ile chce produktow. Musze to skladowac w bazie danych. Czy najlepiej jest stworzyc tabele np: Id, uzytkownik, produkt i tam dodawac kolejne rekordy np:
  1. id1 uzytkownik1 produkt1
  2. id2 uzytkownik1 produkt2
  3. id3 uzytkownik1 produkt3
  4. id1 uzytkownik2 produkt1

czy jest jakies lepsze wyjscie zeby nie dodawac do bazy danych miliona rekordow tylko 1 rekord dla kazdego uzytkownika? Czy takie rozwiazanie jest wystarczajaco optymalne ze nie potrzeba innego ? ;p

pozdrawiam

Jedynie słusznym rozwiązaniem są trzy tabele:

1. użytkownicy
- id_użytkownicy
- nazwa

2. Produkty
- id_produkty
- nazwa

3 Zakupy
- id_zakupy
- id_użytkownicy
- id_produkty
- ilosc
jacobson
tak wiem tylko sie zastanawialem np w przypadku jak jest 100000 produktow i uzytkownik ma kazdy z nich to w tabeli jest 100000 rekordow dla kazdego produktu. Czy mimo to to jest najbardziej optymalne rozwiazanie ?
bpskiba
Cytat(jacobson @ 6.05.2012, 16:10:10 ) *
tak wiem tylko sie zastanawialem np w przypadku jak jest 100000 produktow i uzytkownik ma kazdy z nich to w tabeli jest 100000 rekordow dla kazdego produktu. Czy mimo to to jest najbardziej optymalne rozwiazanie ?

Jestem pewny, że trzy tabele będą lepszym rozwiązaniem od Twojej propozycji.
100 000 produktów... wydaje mi się, że nieco przeszacowałeś tą liczbę, gdyż nie widzę przedsiębiorstwa tak szerokim asortymentem.

Aby rozmawiać o wydajności należy jeszcze oszacować ilość klientów, a także ilość i częstość transakcji i dopuszczalny czas odpowiedzi serwera.
Do tego kwestia sprzętu, backupu, może replikacji.
Sama ilość rekordów nie musi być więc przerażająca. Możesz to oczywiście dzielić na części typu zakupy_2012, zakupy_2013, co ułatwi przeprowadzanie porządków.
Weź pod uwagę, że tabele klienci i towary zapewne będą wykorzystywane w innych mechanizmach. W przypadku Twojego pomysłu będzie z tym wielki problem.
Pójście na skróty z lubi się zemścić.
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.