Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL][SQL]Ocenianie produktów - relacje między tabelami
mattix19
post 10.07.2012, 13:19:46
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 11.07.2010

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


Witam,
tworzę serwis z opiniami produktów. Robię to czysto dla nauki programowania i sql dlatego jako początkujący mam problem z relacjami w bazie. Otóż serwis według moich założeń ma pozwalać na kategoryzowanie produktów ich opinię przeż użytkownika raz dziennie oraz dodawanie produktów. Dlatego stworzyłem sobie taką oto struktórę bazy:
<soon>
tabela kategorii zawiera implementację drzewa nesed set. Mój problem natomiast jest taki czy połączone relacje są prawidłowe oraz jaką relacją połączyć użytkowników? Głowię się również jak rozwiązać problem jednorazowego opiniowania czy dodać tabelę z adresami ip czy możę lepiej będzie zrobić to na plikach?

Ten post edytował mattix19 10.07.2012, 17:07:02


--------------------
CI
Go to the top of the page
+Quote Post
SmokAnalog
post 10.07.2012, 13:36:13
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Ogólnie schemat wygląda nieźle. Niepotrzebnie jednak w tabelach opinions i photos masz pole z kategorią produktu. To redundancja, ta informacja wynika już z tabeli products.

Co do użytkowników do opinii, to występuje tu relacja jeden do wielu. Jedna opinia jest napisana przez jednego użytkownika, ale jeden użytkownik może napisać wiele opinii. Jeżeli nie chcesz, by Jan Kowalski napisał więcej niż jedną opinię do produktu Baton Mars, to w tabeli opinions, na grupę pól product_id i user_id musisz nałożyć indeks UNIQUE.
Go to the top of the page
+Quote Post
mattix19
post 10.07.2012, 13:44:54
Post #3





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 11.07.2010

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


dzięki wielkie za pomoc
co do pol z id kategorii w opiniach i zdjeciach to nałożył mi je automat w mysql workbench, z którego korzystam. Zaraz poprawię.

Ten post edytował mattix19 10.07.2012, 13:57:27


--------------------
CI
Go to the top of the page
+Quote Post
SmokAnalog
post 10.07.2012, 13:55:34
Post #4





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Zakładam, że chcesz pozwolić na opiniowanie również niezalogowanym, tak? Na pewno nie żadne pliki smile.gif Moim zdaniem najlepiej zrobić tak: w tabeli OPINIONS nie dodawać żadnego pola informującego o autorze opinii. Dodać tabelę zawierającą opinion_id i user_id (zalogowani autorzy opinii) oraz tabelę zawierającą ip oraz opinion_id (autorzy niezalogowani). Masz wtedy piękny schemat bazy danych, jednak mechanizmy dot. blokady opiniowania jednego produktu X razy musiałbyś zaimplementować w systemie. Wszelkie dane będziesz miał, najważniejsza tu będzie data opinii. Masz wtedy taką zaletę, że w łatwy sposób możesz ustalać konkretne wymogi, np. że jeden użytkownik może opiniować jeden produkt raz na X dni, raz na Y godzin, ogólnie tylko raz lub np. bez ograniczeń itd.
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: 24.07.2025 - 15:32