Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> jedna tabela czy wiele tabel ?
eyedropper
post 22.03.2013, 18:53:34
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 30.04.2006

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


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 ?



Ten post edytował eyedropper 22.03.2013, 20:32:18
Go to the top of the page
+Quote Post
memory
post 22.03.2013, 19:51:59
Post #2





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

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


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

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

Go to the top of the page
+Quote Post
eyedropper
post 22.03.2013, 20:12:50
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 30.04.2006

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


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ę

Ten post edytował eyedropper 22.03.2013, 20:34:36
Go to the top of the page
+Quote Post
ratosluaf
post 23.03.2013, 09:38:29
Post #4





Grupa: Zarejestrowani
Postów: 91
Pomógł: 4
Dołączył: 14.10.2012

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


Bardzo głupi pomysł. Lepiej zrobić to w jednej tabeli.
Go to the top of the page
+Quote Post
eyedropper
post 23.03.2013, 10:29:42
Post #5





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 30.04.2006

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


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.

Ten post edytował eyedropper 23.03.2013, 10:59:29
Go to the top of the page
+Quote Post
memory
post 23.03.2013, 12:26:49
Post #6





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

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


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.

Ten post edytował memory 23.03.2013, 12:27:36
Go to the top of the page
+Quote Post
eyedropper
post 23.03.2013, 14:13:52
Post #7





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 30.04.2006

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


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

Ten post edytował eyedropper 23.03.2013, 14:14:45
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.06.2025 - 06:29