Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL] Przypisanie wartości do wielu kategorii
Forum PHP.pl > Forum > Przedszkole
Mody23
Mam film, który może być: Familijny, Fantasty, Przygodowy i jednocześnie: Czytany, Lektor PL.

Jak poukładać to sensownie w bazie? Myślałem nad stworzeniem osobnej tabeli i tam przykładowo trzymać kategorie filmów i jeśli film jest Familijny, Fantasy, Przygodowy to dodać tam wpis trzy razy:

Cytat
| ID | FILM_ID | CAT_ID |


gdzie cat_id to raz będzie ID kat. fantasy, drugi raz Familijny, trzeci raz Przygodowy. Czyli w sumie jeden film występowałby trzy razy w tym wypadku, za każdym razem inna kategoria.

Myślę tylko co w przypadku typu filmu? Znowu osobna tabela i znowu kilka razy deklarować, że raz jest czytany, a dwa, że jest z Lektorem ?

Z drugiej strony można by w jednej tabeli dodać 20 gatunków filmów, 10 typów filmów i jesli film jest np. familijny to ta komórka w bazie = 1, jeśli nie to default = 0, to samo w przypadku typu filmu. Jednak to rozwiązanie z kolei wydaje mi się strasznie haotyczne, tabela będzie strasznie napchana różnymi danymi.

Jak to rozwiązać ?
b4rt3kk
Cytat(Mody23 @ 23.03.2015, 14:55:03 ) *
Mam film, który może być: Familijny, Fantasty, Przygodowy i jednocześnie: Czytany, Lektor PL.

Jak poukładać to sensownie w bazie? Myślałem nad stworzeniem osobnej tabeli i tam przykładowo trzymać kategorie filmów i jeśli film jest Familijny, Fantasy, Przygodowy to dodać tam wpis trzy razy:



gdzie cat_id to raz będzie ID kat. fantasy, drugi raz Familijny, trzeci raz Przygodowy. Czyli w sumie jeden film występowałby trzy razy w tym wypadku, za każdym razem inna kategoria.

Myślę tylko co w przypadku typu filmu? Znowu osobna tabela i znowu kilka razy deklarować, że raz jest czytany, a dwa, że jest z Lektorem ?

Z drugiej strony można by w jednej tabeli dodać 20 gatunków filmów, 10 typów filmów i jesli film jest np. familijny to ta komórka w bazie = 1, jeśli nie to default = 0, to samo w przypadku typu filmu. Jednak to rozwiązanie z kolei wydaje mi się strasznie haotyczne, tabela będzie strasznie napchana różnymi danymi.

Jak to rozwiązać ?


Tak to rozwiązać, jak to przedstawiłeś w 1 przypadku.
Kshyhoo
Czytaj to...
snerf
Baza filmów:
Movie_db:
Id
Category_id
Name

Baza kategorii
Category_db:
Id
Name

W Category_id trzymasz po przecinkach id kategorii
johny_s
Cytat(snerf @ 23.03.2015, 16:31:23 ) *
W Category_id trzymasz po przecinkach id kategorii

Ani to wygodne, ani praktyczne, oddzielna tabela na idfilmu, idkategorii, tak jak autor planował
b4rt3kk
Cytat(snerf @ 23.03.2015, 16:31:23 ) *
Baza filmów:
Movie_db:
Id
Category_id
Name

Baza kategorii
Category_db:
Id
Name

W Category_id trzymasz po przecinkach id kategorii


W postgresie możnaby użyć typu array, żeby to było w jednym wierszu (w ostateczności), w mysql jest to bez sensu.
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.