Skip to content

Zadatak

Prevođenje ER modela u relacioni model: rešen zadatak

Zadatak sa probnog testa iz predmeta Baze podataka (E1), FTN Novi Sad, 5. juna 2020. Rešenje: Miloš Sarić

Baze podataka (E1), FTN Novi Sad

Zadatak

Na osnovu datog modela entiteta i poveznika prevesti ER dijagram u relacionu šemu baze podataka. Nakon toga, napisati CREATE TABLE naredbe za šeme relacija nastale od TB, TC i PX.

TAA1A2PXX1X2(0, M)(0, N)TBB1B2PY(1, M)(1, 1)TCC1C2PW(1, M)TA1A11A12TA2A21PZ(1, M)(0, N)TDD1D2PZQ(1, M)ZQ(0, N)PQ(1, M)Q(0, N)TFF1F2PVV(0, M)(0, M)
ER dijagram

Rešenje

Šta se traži i kojim postupkom

Svaki tip entiteta i svaki poveznik sa maksimalnim kardinalitetima M : N postaje šema relacije. Poveznik se prevodi u relaciju sa ključevima tipova koje povezuje i svojim obeležjima. Identifikaciono zavisan tip nasleđuje ključ tipa od kojeg zavisi. Minimalni kardinalitet 1 na nekoj strani poveznika daje ograničenje inverznog referencijalnog integriteta. Šeme se pišu kao N(R, K), gde je R skup obeležja, a K skup ključeva.

Regularni tipovi entiteta

TA, TB, TD i TF imaju sopstvene ključeve, pa se prevode direktno:

  • TA({A1, A2}, {A1})
  • TB({B1, B2}, {B1})
  • TD({D1, D2}, {D1})
  • TF({F1, F2}, {F1})

Identifikaciono zavisni tipovi

TC je u dvostrukom okviru, sa kardinalitetom (1, 1) prema PY, pa je identifikaciono zavisan od TB. Njegov ključ je ključ nadređenog tipa i njegovo C1. TA1 i TA2 su takođe u dvostrukom okviru, sa sopstvenim obeležjima A11 i A21 u ključu, pa preko zajedničkog poveznika PW zavise od TA. PY i PW ne daju posebne šeme: njih čine preneti ključevi.

  • TC({B1, C1, C2}, {B1+C1})
  • TA1({A1, A11, A12}, {A1+A11})
  • TA2({A1, A21}, {A1+A21})

Poveznici i gerundi

PX je poveznik M : N sa svojim obeležjima. PZ i PQ su gerundi, koji se prevode kao regularni poveznici, a njihove šeme zatim učestvuju u poveznicima kao tipovi entiteta:

  • PX({A1, B1, X1, X2}, {A1+B1})
  • PZ({B1, D1}, {B1+D1})
  • PQ({D1, F1, Q}, {D1+F1})

PZQ povezuje dva gerunda, pa dobija oba njihova ključa. Oba sadrže D1, ali u različitim ulogama, jer pojava gerunda PZ i pojava gerunda PQ ne moraju imati isti TD. Šema relacije ne sme da ima dva ista obeležja, pa se oba preimenuju, u DZ i DQ. Isto je i sa rekurzivnim poveznikom PV: dva pojavljivanja TF su u različitim ulogama, pa se drugo F1 preimenuje u F2V.

  • PZQ({B1, DZ, DQ, F1, ZQ}, {B1+DZ+DQ+F1})
  • PV({F1, F2V, V}, {F1+F2V})

Ograničenja referencijalnog integriteta

Svaki preneti ključ je spoljni ključ prema tipu iz kojeg dolazi:

  • TC[B1] ⊆ TB[B1]
  • TA1[A1] ⊆ TA[A1]
  • TA2[A1] ⊆ TA[A1]
  • PX[A1] ⊆ TA[A1]
  • PX[B1] ⊆ TB[B1]
  • PZ[B1] ⊆ TB[B1]
  • PZ[D1] ⊆ TD[D1]
  • PQ[D1] ⊆ TD[D1]
  • PQ[F1] ⊆ TF[F1]
  • PZQ[B1+DZ] ⊆ PZ[B1+D1]
  • PZQ[DQ+F1] ⊆ PQ[D1+F1]
  • PV[F1] ⊆ TF[F1]
  • PV[F2V] ⊆ TF[F1]

Gde god je minimalni kardinalitet 1 sa strane nekog tipa, njegova pojava mora da učestvuje u povezniku, što daje inverzno ograničenje:

  • TB[B1] ⊆ TC[B1]
  • TB[B1] ⊆ PZ[B1]
  • TD[D1] ⊆ PQ[D1]
  • PZ[B1+D1] ⊆ PZQ[B1+DZ]
  • TA[A1] ⊆ TA1[A1] ∪ TA2[A1]

CREATE TABLE naredbe

Test ne zadaje tipove obeležja, pa su ključevi celobrojni, a ostala obeležja tekstualna. Spoljni ključ traži da postoji tabela na koju pokazuje, pa se TC pravi posle TB, a PX posle TA i TB, a tabela TA pravi se isto kao TB. Inverzna ograničenja se ne pišu spoljnim ključem, jer bi dve tabele čekale jedna drugu.

CREATE TABLE TB (
  B1 integer NOT NULL,
  B2 varchar(30),
  CONSTRAINT TB_PK PRIMARY KEY (B1)
);

CREATE TABLE TC (
  B1 integer NOT NULL,
  C1 integer NOT NULL,
  C2 varchar(30),
  CONSTRAINT TC_PK PRIMARY KEY (B1, C1),
  CONSTRAINT TC_TB_FK FOREIGN KEY (B1) REFERENCES TB (B1)
);

CREATE TABLE PX (
  A1 integer NOT NULL,
  B1 integer NOT NULL,
  X1 varchar(30),
  X2 varchar(30),
  CONSTRAINT PX_PK PRIMARY KEY (A1, B1),
  CONSTRAINT PX_TA_FK FOREIGN KEY (A1) REFERENCES TA (A1),
  CONSTRAINT PX_TB_FK FOREIGN KEY (B1) REFERENCES TB (B1)
);

Rezultat

Regularni tipovi: TA({A1, A2}, {A1}), TB({B1, B2}, {B1}), TD({D1, D2}, {D1}), TF({F1, F2}, {F1}).

Zavisni tipovi: TC({B1, C1, C2}, {B1+C1}), TA1({A1, A11, A12}, {A1+A11}), TA2({A1, A21}, {A1+A21}).

Poveznici: PX({A1, B1, X1, X2}, {A1+B1}), PZ({B1, D1}, {B1+D1}), PQ({D1, F1, Q}, {D1+F1}), PZQ({B1, DZ, DQ, F1, ZQ}, {B1+DZ+DQ+F1}), PV({F1, F2V, V}, {F1+F2V}).

Slični zadaci

Teme

Baze podataka i SQL

Ispit u PDF-u, na Drive-u (otvara se u novom tabu)

Folder predmeta Baze podataka (E1)Na Drive-u: Predavanja (2020-21) · Vežbe (2020-21) · Probni testovi i kolokvijumi · Pravila ocenjivanja (2020-21) · Stari materijali (2019-20)

Ako si autor nečega što je ovde i želiš da se ukloni, piši mi na milossaric@outlook.com i uklanjam ga.