Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL] Przypisanie wartości do wielu kategorii
Mody23
post
Post #1





Grupa: Zarejestrowani
Postów: 276
Pomógł: 0
Dołączył: 30.06.2010

Ostrzeżenie: (10%)
X----


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ć ?
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #2





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


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.


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #3





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Czytaj to...


--------------------
Go to the top of the page
+Quote Post
snerf
post
Post #4





Grupa: Zarejestrowani
Postów: 74
Pomógł: 3
Dołączył: 30.03.2014

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


Baza filmów:
Movie_db:
Id
Category_id
Name

Baza kategorii
Category_db:
Id
Name

W Category_id trzymasz po przecinkach id kategorii
Go to the top of the page
+Quote Post
johny_s
post
Post #5





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

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


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ł

Ten post edytował johny_s 23.03.2015, 16:37:29
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #6





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


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.


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
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 Aktualny czas: 22.08.2025 - 00:50