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.
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
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.