Kao primer ćemo koristiti odnos profesora i predmeta: jedan profesor može da predaje više predmeta, ali isto tako jedan predmet može da predaje više profesora. To je veza više-više.

Ova vrsta veze ne može da se izvede u bazama, pa se zbog toga između takvih tabela dodaje još jedna tabela (intersection table) koja služa da se dobiju dve relacije tipa 1-više.

Pogledajte ER dijagram u nastavku:

slika baze kao na tabli u učionici

Do sada ste naučili kreiranje jednostavnih tabela, kao što si to u ovom primeru Profesor i Predmet:

CREATE TABLE Profesor 
(  ProfesorID INT PRIMARY KEY,
   Ime     VARCHAR(50),
   Prezime VARCHAR(50),
   Email   VARCHAR(50)
);
CREATE TABLE Predmet
(  PredmetID INT PRIMARY KEY,
   Naziv   VARCHAR(50),
   BrojCasova INT
);

Malo je komplikovanije kreirati tabelu Profesor_Predmet, jer tu imamo kompozitni primarni ključ i dva spoljašnja ključa.

Kada se pominje kompozitni primarni ključ, misli se na to da je primarni ključ u stvari kombinacija više podataka iz tabele. U ovom primeru se kao ključ posmatra kombinacija ID-jeva profesora, predmeta i školske godine!

CREATE TABLE Profesor_Predmet
( ProfesorID INT,
PredmetID INT,
SkolskaGodina VARCHAR(50),
CONSTRAINT PK1 PRIMARY KEY (ProfesorID, PredmetID, SkolskaGodina),
CONSTRAINT fk1 FOREIGN KEY (ProfesorID) REFERENCES Profesor(ProfesorID),
CONSTRAINT fk2 FOREIGN KEY (PredmetID) REFERENCES Predmet(PredmetID)
);

Napomena 1: Naziv ključa (PK1, fk1, fk2, ...) je jedinstven na nivou cele baze! To znači da se ne može ponoviti isti naziv ključa u dve različite tabele.

Napomena 2: Prilikom unosa podataka u bazu, kada se unose vrednosti koej su spoljašnji ključ, ne možete uneti neku vrednost koja već nije uneta kao primarni ključ ka kojem se pokazuje

Napomena 3: Kada unosite spoljašnji ključ, on mora da je istog tipa kao i primarni ključ na koji pokazuje (naziv može da se razlikuje)

Last modified: Thursday, 1 June 2023, 9:40 PM