Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wiele tabel czy jedna z wartością strażniczą ?
Spykaj
post
Post #1





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 30.05.2008
Skąd: Białystok

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


Lepiej stworzyć 5 tabel, np.
komentarze_newsów
komentarze_plikow_download
komentarze_artykulow
wpisy_w_ksiedze_gosci
komentarze_sondy

Czy jedną tabelę "komentarze" z polem int oznaczającym, do czego jest ten komentarz ? Mi się wydawało, że szybciej jest 5 tabel, bo baza ma mniej rekordów do przeanalizowania, a gdzieś przeczytałem, że lepiej ograniczać ilość tabeli (IMG:http://forum.php.pl/style_emoticons/default/sleep.gif) to jak w końcu ? Chodzi mi głównie o wydajność, ale też trochę o pamięć, no ale w końcu to tylko 5 szablonów, a rekordy i tak prawie tyle samo miejsca zajmują.

Nazwy tabel dałem takie tylko do wyjaśnienia przykładu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) )
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
tommy4
post
Post #2





Grupa: Zarejestrowani
Postów: 288
Pomógł: 12
Dołączył: 2.12.2005

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


Zrób w jednej tabeli (trzymasz wszystko w kupie), a pole int oznaczające gdzie ma być komentarz możesz np. oznaczyć jako INDEX
Go to the top of the page
+Quote Post
Spykaj
post
Post #3





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 30.05.2008
Skąd: Białystok

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


I to dobrze będzie ? (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
mike
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Tak, będzie dobrze.
Go to the top of the page
+Quote Post
Spykaj
post
Post #5





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 30.05.2008
Skąd: Białystok

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


OK, dzięki, to właśnie tak zrobię, sporo mi się uprości w zapytaniach :]

Buziaczki :*
Go to the top of the page
+Quote Post
cojack
post
Post #6





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


A ja zawsze jestem tego przekonania że jak ma być wszystko w kupie to *** z taką bazą danych...
Tam będzie tyle 0 w tej bazie danych że to jest w ogóle bez sensu robić jedną wielką tabelę z 5 różnymi w ogóle nie pasującymi do siebie rekordami, przecież on ich nigdzie nie będzie ze sobą łączył, wg mnie kolego zrób to na osobnych tabelach.
Go to the top of the page
+Quote Post
kwiateusz
post
Post #7


Admin Techniczny


Grupa: Administratorzy
Postów: 2 071
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




jakich zer? beda numerki badź inne rzeczy wskazujace tylko do czego wpis jest powiązany i jakich niepasujacych? wszystkie są praktycznie identyczne w koncu nie robi sie 5 różnych rodzai komentarzy na tej samej stronie

w tym wypadku bardzo dobrym wyjsciem jest trzymanie takichs samych wpisów w 1 tabeli
Go to the top of the page
+Quote Post
cojack
post
Post #8





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Np:

ID | komend_do_newsa | koment_do_artytuku | koment_do_księgi_gosci | koment_do_plikow | koment_do_sondy
1 | 0 | 1 | 0 | 0 | 0

A może chcesz tam jeszcze null wstawić? Standardem w ANSI SQL jest to by rekordy nie miały wartości NULL.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


cojack: goraczke masz?

Cytat
Czy jedną tabelę "komentarze" z polem int oznaczającym, do czego jest ten komentarz ?

JEDNO POLE, typ z wartosciami liczbowymi lub tekstowymi? Po co robic 5 kolumn? Przeciez wyraznie napisal

Cytat
Standardem w ANSI SQL jest to by rekordy nie miały wartości NULL.

Co za bzdura, to po co NULL jest w standardzie jak ma byc nieuzywany?
Go to the top of the page
+Quote Post
kwiateusz
post
Post #10


Admin Techniczny


Grupa: Administratorzy
Postów: 2 071
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




wypadałoby pomyśleć :]

naprosciej

id|tytul|tresc|mail|typ

1|test|komentarz|cos@cos.pl|1

gdzie 1 oznacza np komentarz do newsów
Go to the top of the page
+Quote Post
Spykaj
post
Post #11





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 30.05.2008
Skąd: Białystok

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


No dokładnie, chodzi o np. takie przyporządkowanie:
1 -> news
2 -> download
3 -> artykul
4 -> ksiega_gosci
5 -> sonda

Ma to jeszcze taką zaletę, że jak stworzę dodatkowe pole, np. takie plusy/minusy, co są na youtube, to nie muszę w 5 tabelach, tylko w jednej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ogólnie sposób z tymi indeksami w tabeli rox (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
cojack
post
Post #12





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Książka:
"PHP i MySQL Tworzenie stron WWW Vademecum Profesionalisty"

Optymalizowanie bazy danych, str.316
Cytat
Ponadto powinno się dążyć do tego by, tabele zawierały jak najmniej wartości NULL, a klucze podstawowe były jak najkrótsze.



Nie mam gorączki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
kwiateusz
post
Post #13


Admin Techniczny


Grupa: Administratorzy
Postów: 2 071
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




a czy w moim przykładzie masz chociaż 1 (nawet może być pół) null?

przy dobrym projekcie tabeli możesz i 10 rzeczy wrzucić byleby były ze sobą powiązane w stopniu znacznym
Go to the top of the page
+Quote Post
Joachim Peters
post
Post #14





Grupa: Zarejestrowani
Postów: 196
Pomógł: 2
Dołączył: 1.03.2006

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


Możecie jeszcze powiedzieć jak to później wybierać? Gdzie ma być przechowywana informacja dla jakiego konkretnie pliku/newsa jest komentarz?
Go to the top of the page
+Quote Post
kwiateusz
post
Post #15


Admin Techniczny


Grupa: Administratorzy
Postów: 2 071
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




jesli chodzi o moj przyklad to był klejony na szybko zeby wykazac ogolna koncepcje (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) zwyczajnie dodajesz jeszcze jedno pole z id tego do czego nalezy
Go to the top of the page
+Quote Post
Sedziwoj
post
Post #16





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


Jak ja to czytam, to aż ręce opadają...
Przecież to że mają te same pola, to nie znaczy, że to są te same informacje. Ja nie wiem jak można mieć wszystko w jednym, chyba tak dużo ludzi lubi...
Czyżby za dużo siedzieli w bazach bez FK, przecież jak jest komentarz, to aż się prosi o klucz obcy. To mi przypomina dziedziczenie, dom dziedziczy po drzewo, bo przecież oba mają wysokość, itp. bzdury. To jest to samu tu, to są różne komentarze, nie ważne, że mają te same dane, więc każdy rodzaj powinien być w swojej tabeli.
Go to the top of the page
+Quote Post
Spykaj
post
Post #17





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 30.05.2008
Skąd: Białystok

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


Hmm, czy ja wiem, jakoś nie widzę tej analogii z dziedziczeniem domu od drzewa oO w końcu one wszystkie są KOMENTARZAMI, a nie tylko mają wspólne pola.
Go to the top of the page
+Quote Post
Vengeance
post
Post #18





Grupa: Zarejestrowani
Postów: 657
Pomógł: 2
Dołączył: 15.08.2003
Skąd: Łódź

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


Kiedyś zrobiłem to tak jak tu opisujecie. Przy czym "typ" nie był liczbą a ciągiem znaków (nazwą modelu) i tak np.:

id | record_id | record_type | body

1 | 232 | News | bla bla
1 | 4424 | Photo | bla bla
1 | 2 | Subpage | bla bla

Rozwiązanie dla jednym może eleganckie, dla innych pewnie nie, ale pozwoliło mi na szybkie dodawanie komentarzy do jakiegokolwiek elementu strony.
Dodatkowo ograniczyła ilość kodu (chodź jest trochę abstrakcyjny) ale w widoku np. odpalam pomocnika przez
  1. Tytuł newsa: <?=$this->news->title;?>
  2. Komentarze:
  3. <?=$this->getComments($this->news);?>


I to samo wyświetla odpowiednie komentarze, dodaje formularz. CO więcej np. jeśli wcześniej nie przewidziałem np. komentowania Podstron serwisu, mogę je wprowadzić w 5 sekund bez dodawania kolejnej tabeli, robienia dla niej modelu, zapytań itd itd.
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: 22.08.2025 - 17:46