Razumem dijagram kojeg koristiš, nije u tome problem, nego sam sam loše protumačio dati dijagram.
U pravu si za nastavnika, ali ipak, ono što mi je zasmetalo u polaznom dijagramu je i dalje prisutno. To što mi smeta ću nazvati "simetrijom" između dela dijagrama nastavnik-program i polaznik-program, a iz navedenih pravila je jasno da simetrije nema. Ja sam tu simetriju brzopleto pokušao da razbijem dodatnim entitetima u dijagramu.
Spomenuta simetrija se odražava i u tvojoj rečenici:
Citat:
vbvlada: Ako sam ja sada pojasnio ovo, imaću dve tabele: Angažovanje i IzborKurseva koje će da sadrže IDKurs i IDProfil kao delove svojih ključeva
Po meni to nije tačno! Ključ "tabele" Angažovanje zaista treba da bude (IDKurs, IDProfil, IDNastavnik), ali kljuć tabele IzborKurseva mora da bude samo (IDKurs, IDPolaznik)! Ako bi ključ tabele IzborKurseva ipak bio (IDKurs, IDPRofil, IDPolaznik), onda bi jedan polaznik mogao da odabere isti kurs dva puta samo zato što se taj kurs nalazi u dva profila. (Ja sam u prethodnom postu ovo pripisao delu koji se odnosi na angažovanje nastavnika, što je bila greška).
Citat:
vbvlada: ... ali meni i dalje nije jasno šta da uradim sa PrijavomPolaganja.
Što se tiče spornog "PrijavaPolaganja": Pa prosto poveži Angažovanje i IzborKurseva, a to što se delovi ključeva poklapaju nema veze, u novom entitetu ih netreba duplirati, nego se ti atributi pojavljuju samo jednom (i to sa svojim izvornim imenom), jer to ovaj slučaj ne zahteva (postoje neki slučajevi kada ih treba duplirati).
Dobijaš gerund (odnosno po tvome "objekat-agregacije") "PrijavaPolaganja" koji ima atribute (IDKurs, IDProfil, IDNastavnik, IDPolaznik, foo, bar), gde je ključ (IDKurs, IDProfil, IDNastavnik, IDPolaznik), i važe referencijalni integriteti:
- PrijavaPolaganja(IDKurs, IDProfil, IDNastavnik) JE_PODSKUP_OD Angažovanje(IDKurs, IDProfil, IDNastavnik) i
- PrijavaPolaganja(IDKurs, IDProfil, IDPolaznik) JE_PODSKUP_OD IzborKurseva(IDKurs, IDProfil, IDPolaznik). Ovde treba upotrebiti činjenicu da se povezivanje "tabela" nemora uvek izvršavati upotrebom primarnog ključa!
"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming." - Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo