Spykaj
16.06.2008, 09:18:15
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

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

)
tommy4
16.06.2008, 09:48:07
Zrób w jednej tabeli (trzymasz wszystko w kupie), a pole int oznaczające gdzie ma być komentarz możesz np. oznaczyć jako INDEX
Spykaj
16.06.2008, 12:06:44
I to dobrze będzie ?
mike
16.06.2008, 12:08:48
Tak, będzie dobrze.
Spykaj
16.06.2008, 12:36:37
OK, dzięki, to właśnie tak zrobię, sporo mi się uprości w zapytaniach :]
Buziaczki :*
cojack
16.06.2008, 18:25:50
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.
kwiateusz
16.06.2008, 18:41:47
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
cojack
16.06.2008, 19:40:27
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.
dr_bonzo
16.06.2008, 20:46:20
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?
kwiateusz
16.06.2008, 21:10:02
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
Spykaj
16.06.2008, 21:26:07
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

ogólnie sposób z tymi indeksami w tabeli rox
cojack
16.06.2008, 21:30:12
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
kwiateusz
16.06.2008, 21:54:43
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
Joachim Peters
17.06.2008, 19:17:53
Możecie jeszcze powiedzieć jak to później wybierać? Gdzie ma być przechowywana informacja dla jakiego konkretnie pliku/newsa jest komentarz?
kwiateusz
17.06.2008, 19:27:01
jesli chodzi o moj przyklad to był klejony na szybko zeby wykazac ogolna koncepcje

zwyczajnie dodajesz jeszcze jedno pole z id tego do czego nalezy
Sedziwoj
18.06.2008, 11:14:03
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.
Spykaj
18.06.2008, 11:38:48
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.
Vengeance
28.06.2008, 22:58:25
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
Tytuł newsa: <?=$this->news->title;?>
Komentarze:
<?=$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.
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.