Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MYSQL] Zaplanowanie bazy danych.
Patman
post 30.07.2009, 13:46:15
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 1
Dołączył: 16.06.2009

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


Witam. Prosiłbym o poradę dotyczącą nie skryptu, lecz zaplanowania bazy danych. Często na stronach internetowych pod zdjęciami, filmami, artykułami itd. można dodawać komentarze. Dla przykładu przyjmijmy, że chcę utworzyć galerię zdjęć i każde zdjęcie będzie można komentować.
Pytanie jest następujące: czy każde zdjęcie powinno mieć własną tabelę w mysql z komentarzami, czy komentarze z wszystkich zdjęć galerii mają znajdować się w jednej tabeli z informacją o id zdjęcia do którego później mają zostać przypisane? Sensowniejsza wydaje się być druga metoda, ale powiedzmy, że będzie to strona z grafiką i zdjęć do komentowania będzie kilka tysięcy i więcej...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Fifi209
post 30.07.2009, 13:53:15
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Masz tabelki z komentarzami do zdjęć,filmów,artykułów razem 3 tabelki.

W każdej z nich masz pola:

id, user_id, content

I po problemie. Id ustawiasz jako auto_increment i primary key, user_id jako index + robisz powiązanie z tabelą userów (wymaga silnika innoDB)


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
skowron-line
post 30.07.2009, 13:58:31
Post #3





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Cytat(fifi209 @ 30.07.2009, 12:53:15 ) *
Masz tabelki z komentarzami do zdjęć,filmów,artykułów razem 3 tabelki.

W każdej z nich masz pola:

id, user_id, content

I po problemie. Id ustawiasz jako auto_increment i primary key, user_id jako index + robisz powiązanie z tabelą userów (wymaga silnika innoDB)

Ja bym dal jedna tabele do komentowania wszystkiego
dodal bym tylko pole.

id_kat ( enum ( 0-film, 1-foto, 2-artykul, ... )


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
Fifi209
post 30.07.2009, 14:02:06
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(skowron-line @ 30.07.2009, 13:58:31 ) *
Ja bym dal jedna tabele do komentowania wszystkiego
dodal bym tylko pole.

id_kat ( enum ( 0-film, 1-foto, 2-artykul, ... )


Moje rozwiązanie przy kilu tysiącach zapewne będzie bardziej wydajne. winksmiley.jpg
Dlatego użyłbym swojego. ;d


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Patman
post 31.07.2009, 16:44:35
Post #5





Grupa: Zarejestrowani
Postów: 14
Pomógł: 1
Dołączył: 16.06.2009

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


Jest możliwość przesyłania sobie wiadomości prywatnych między użytkownikami. Czy mogą wiadomości wszystkich użytkowników zostać dopisane do jednej tabeli? Tabela posiada 5 pól (id wiadomości, id nadawcy, id odbiorcy, treść, czas przesłania). Czy można to rozwiązać w taki sposób? Wiadomości będzie bardzo dużo.
Go to the top of the page
+Quote Post
TrevorGryffits
post 31.07.2009, 21:01:16
Post #6





Grupa: Zarejestrowani
Postów: 139
Pomógł: 24
Dołączył: 29.07.2007
Skąd: Tarnowskie Góry

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


W obecnym kształcie raczej nie - chyba, że zadowoliłoby cię, że userzy, nie wiedzą komu (od kogo) wysłali (otrzymali) wiadomość, gdy druga strona skasowałaby wiadomość. W tym kształcie możnaby usuwać id z odpowiedniego usera (nadawcy lub adresata).

A tak normalnie to chyba dodać dwa pola adresat_usuniete i nadawca_usuniete. I podczas usuwania z jednej ze stron to sprawdzać, czy druga strona też już chciała usunąć. Jeśli nie - to tylko ustawiamy odpowiednie dodane pole na true, jeśli tak, to usuwamy cały rekord.
Go to the top of the page
+Quote Post
Crozin
post 31.07.2009, 21:57:56
Post #7





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Co do komentarzy: jeżeli masz absolutną pewność, że dla każdego typu (komentarze do np.: obrazów, filmów, piosenek) będą miały dokładnie taką samą strukturę i nigdy nie dojdzie do sytuacji, gdzie jeden typ różni się czymś od pozostałych to możesz tak jak radzi skowron-line dodać kolumnę identyfikującą typ.

Ale mimo wszystko odradzam taki sposób i radziłbym zrobić osobne tabele o takiej samej strukturze dla każdego z typów. Pewna niewielka część aplikacji się niepotrzebnie powtarza, ale za to zyskujemy dosyć dużo na jej elastyczności.

Co do wiadomości: jak najbardziej tak... jest to dobre rozwiązanie. A jeżeli chcesz do tego dodać możliwość usuwania wiadomości ze swojej skrzynki wystarczy dodać jedno pole typu enum, określająca kto usunął - jeżeli w ogóle.
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: 19.07.2025 - 06:18