Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Pomoc w strukturze bazy
Forum PHP.pl > Forum > Przedszkole
gosciuuu
Witam serdecznie, potrzebuje pomocy, nie znalazłem zadawalającej odpowiedz w google wiec postanowilem napisac do Was. Wyjaśnie Wam to na przykladie bazy danych filmów. baza danych ma kolumny np. ID Tytuł Kategoria. I własnie tutaj chodzi mi o ta kategorie - jesli film jest np jednoczesnie komedia i horrorem to znaczy ze ma dwie kategorie. Jak powinna wygladac taka tabela zebym mogl np. wyswietlic komedia i mimo ze ten film ma dwie kategorie to zeby wyjął ten film. Wydaje mi sie ze stworzenie np 10 kolumn z kategoriami (komedia, horror, dokument itd itp) i umieszczanie ptaszka ze TAK nalezy do tej kategorii to nie jest dobry pomys. Na pewno jest na to sposob. Mozecie mi napisac jaki ? dziekuje
Damonsson
Relacja wiele do wielu. Klucze obce.

1. tabela
film_id | nazwa_filmu

2. tabela
kategoria_id | nazwa_kategorii

3. tabela
fk_film_id | fk_kategoria_id

Łączenie po kluczach:
fk_film_id = film_id
fk_kategoria_id = kategoria_id
gosciuuu
W ten sposób, myślałem ze moze jest jakas opcja zeby wymieniać je w komórce oddzielajac je jakims specjalnym znakiem, aby SELECT był latwy i nie stwarzal problemow ?
Damonsson
Nie, właśnie w ten sposób stworzyłbyś problemy i wszystko utrudnił. Gdybyś wklepał do google zdania z mojego pierwszego wiersza, mógłbyś o tym samemu poczytać.
moraw2008
Cytat(gosciuuu @ 19.02.2013, 20:07:41 ) *
I własnie tutaj chodzi mi o ta kategorie - jesli film jest np jednoczesnie komedia i horrorem to znaczy ze ma dwie kategorie.


Masz tutaj trochę teorii na przykładzie OSOBY, PROJEKTU I ROLI

Budując tabele OSOBA mógłbś dać kolumny id_roli i id_osoby i pamiętać oba te parametry, ale osoba z czasem będzie miała wiele ról i wiele projektów na głowie a tak jak zaproponowałeś aby w jednym polu pisać wiele numerów id_ról oddzielanych czymkowliek niczego dobrego nie wróży. (nie slyszałem aby ktoś tak nawet próbował).

Cytat
Stosując przedstawioną metodę wprowadzamy nową encję asocjacyjną, której zadaniem jest opisać związek zachodzący między osobami, projektami i rolami. Jednoznaczny identyfikator nowej encji tworzą trzy wprowadzone związki tj. klucze obce do encji Osoba, Projekt i Rola.


W Twoim przypadku
1. Jak robisz dwie encje (tabele):

FILM (film_id, kategoria_id FK)
KATEGORIA (kategoria_id)

i kategoria _Id jako klucz obcy wskakuje do encji FILM, określając kategorie filmu nie ma możliwości pamiętania kilku kategorii - możesz nadpisywać istniejący klucz, zmieniając kategorię ale nie zapamiętasz ich więcej.

2. Tak jak kolega powyżej CI napisał, musisz wprowadzić trzecią encję (tabelę) dodatkowo modelującą związek wiele do wielu
np.

FILM(film_id)
KATEGORIA(kategoria_id)
PRZYNALEZNOSC_KATEGORII (film_id PK FK1,kategoria_id PK, FK2)

Teraz możesz pamiętać połączenia wielu filmów z wieloma kategoriami.

Przeanalizuj to sobie tutaj na przykładzie OSOBY, PROJEKTU I ROLI

http://edu.pjwstk.edu.pl/wyklady/rbd/scb/w.../ERDa.htm#Trans
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.