![]() |
![]() |
![]()
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... |
|
|
![]() |
![]()
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 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa 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) 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/ |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
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. ![]() 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 |
|
|
![]()
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.
|
|
|
![]()
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. |
|
|
![]()
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. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 06:18 |