09.01.2011 | 22:20
john_st je napisao:
No ovdje imam 4 takve tablice i sad ne znam kako pristupiti:
pristup ovisi o povezanosti tih relacija. Da li su relacije uvijek povezane ili nisu nužno?
1. napraviti tablicu studenti_nastavnici_kolegiji_fakulteti po uzoru na gornje rješenje
To je najlakši način ako si siguran da uvijek i u svakom slučaju možeš svakoj trojci (nastavnik, kolegij, fakukltet) dodijeliti makar jednog studenta. Ako ne možeš (ako u određenim akademskim godinama neke izborne kolegije ne upiše nijedan student), onda ne možeš imati ovakav pristup, odnosno moraš dozvoliti da referenca na studente ostane prazna.
2. napraviti prvo presječne tablice studenti_nastavnici, nastavnici_kolegiji, kolegiji_fakulteti pa onda neku novu presječnu za ove tri]
Razmisli da li za kolegiji-fakulteti moraš ovo izvoditi ili možeš kolegiji fakulteti postaviti kao one-to-many (uz svaki kolegij postaviš relacijsku referencu na njegov fakultet). Sumnjam da je postoji kolegij koji se baš na dlaku pljunuto do u minutu isto predaje na različitim fakultetima, čak i ako se zove baš isto.
Osim toga, razmisli da li ti relacija studenti-nastavnici daje dovoljno informacija. Ako nastavnik predaje više kolegija, ti onda na temelju relacije studenti-nastavnici ne znaš točno koje kolegije ti studenti slušaju. Također, ako slušaju više kolegija kod istog nastavnika, nemaš mogućnost prikazati više od jedne ovakve relacije.
Dakle, po mom mišljenju:
kolegij (oo) - fakultet (1)
kolegij (oo) - nastavnik (oo) - student (oo)
kolegij (oo) - nastavnik (oo) relaciju dobivaš SQL querijem na gornju trostruku relaciju:
SELECT DISTINCT kolegij, nastavnik FROM kolegij-nastavnik-student;
tako da je ne moraš čuvati posebno.
Međutim, kako sam ranije napisao, moraš dozvoliti da polje "student" može biti null.
3. nešto treće
Ako želiš sve napraviti striktno by the book, onda
kolegij (oo) - fakultet (1)
rKN: kolegij (oo) - nastavnik (oo)
rKN (oo) - student (oo)