Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jedna tabela czy wiele tabel ?
Forum PHP.pl > Forum > Bazy danych > MySQL
eyedropper
Tytuł możliwe że nie brzmi zbyt mądrze, ale oddaje sedno problemu,
na stronie każdy z użytkowników (a będzie ich wielu, możliwe że bardzo bardzo wielu)
będzie dodawał artykuły, każdy artykuł będzie miał kilka właściwości, dlatego nie będą mogły być dodawane do tabeli z użytkownikami, to po prostu niewykonalne,
szczególnie że każdy z jego właściwości chciałbym efektywnie wyszukiwać, mógłbym stworzyć jedną tabelę dla artykułów i do niej dopisywać kolejne artykuły/produkty,
ale [użytkownicy * kilkakrotnie więcej artykułów niż użytkowników] oznacza bardzo dużą tabelę, co może skutkować długą odpowiedzią bazy przy próbie wyłuskania
produktów przypisancych do jednego usera, dlatego myślę że najlepiej będzie przy tworzeniu usera w tabeli users tworzyć nową tabelę produkty_userId,
co poskutkuje prawdopodobnie szybką odpowiedzią serwera przy zapytaniu o listę produktów tego usera, a to ona będzie wyświetlana najczęściej...
dobrze myślę ? czy może dla silnika bazy danych nie będzie problemem wyłuskanie z jednej tabeli po id usera ?

memory
Ciężko to zrozumieć.
O takie coś ci chodzi ?

http://sqlfiddle.com/#!2/3ba82/4

eyedropper
tak, Tylko że jeśli tam ma być tabela do każdego usera powinna mieć unikalną nazwę - schemat tego nie sugeruje
chyba że widzisz to tak że wszystkie artykuły są wstawiane do jednej tabeli

moje pytanie dotyczy bardziej możliwości silnika mysql i sposobu jego działania / przetwarzania danych niż tego jak zbudować tą relację
ratosluaf
Bardzo głupi pomysł. Lepiej zrobić to w jednej tabeli.
eyedropper
dlaczego ?
gdyby to był mała stronka bym to zamknął w dwóch tabelach, ale to może spuchnąć,
może być problem z wydajnością przy tak dużej tabeli, no właśnie, tu nie jestem do końca pewny, może dla mysql nie ma różnicy ?
między jedną tabelą a wieloma tabelami - jedna dla każdego usera.
memory
pomyśl masz 50 tys użytkowników i będziesz tworzył 50 tys tabel z artykułami ?. Wyobraź sobie , że musisz pokazać artykuły użytkowników w liczbie np 10 tys.
Spróbuj napisać takie zapytanie.

Jeżeli będziesz filtrował tabele
  1. SELECT * FROM artykuły WHERE
to tabela może mieć miliony rekordów.
eyedropper
i to rzeczywiście jest słabość tego rozwiązania, żeby dostać się do wielu tabel musiałbym wyłuskiwać nazwy tabel z tabeli users a potem jeszcze raz przekopywać baze wyciągając z tabel...
nie ma to sensu
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.