Mapning fra klasser til tabeller

Download Report

Transcript Mapning fra klasser til tabeller

Mapning af 1 til mange forbindelser
Class-A
af1
af2
afn
af1
af2
afn
A-ID
af1
af2
afn
1
1
0:1
*
*
Class-B
bf1
bf2
bfn
Bjørk Boye Busch – TietgenSkolen/EAL
A-Table
Class-A
1
Class-B
bf1
bf2
bfn
Class-A
af1
afn
B-Table
Class-B
bf1
bf2
bfn
af2
B-ID
bf1
bf2
bfn
A-ID
Mapning af 1 til mange forbindelser
• Ved 1 til 1 forbindelser må man beslutte hvilken klasse
der skal
• oprettes først og så definere forbindelsen som en 1 til
0:1 forbindelse
• Hver klasse mappes til en tabel med alle klassens
attributter som felter
• og et nyt ID-felt som nøglefelt.
• Associeringen / aggregeringen ordnes ved at indsætte
ID-nøglefeltet
• fra tabellen på 1-siden i tabellen på *-siden som
fremmednøgle.
Bjørk Boye Busch – TietgenSkolen/EAL
Mapning af mange til mange forbindelser
Class-A
af1
af2
afn
A-Table
Class-A
A-ID
af1
af2
afn
0:1
af1
A-ID
*
bf1
bf2
bfn
afn
*
AB-Con-Table
Class-B
af2
AB-Con-Table
Eller
B-ID
C-ID
A-ID
*
B-Table
Class-B
bf1
bf2
bfn
Bjørk Boye Busch – TietgenSkolen/EAL
B-ID
bf1
bf2
bfn
B-ID
Mapning af mange til mange forbindelser
•
•
Hver klasse mappes til en tabel med alle klassens attributter som felter
og et nyt ID-felt som nøglefelt.
•
•
•
•
•
•
•
•
Associeringen ordnes ved at optette en ny "connection"-tabel der
indeholder nøglerne fra de to tabeller der forbindes som fremmednøgler.
Nøglen i den nye tabel laves enten som en sammensat nøgle
af de to fremmednøgler eller der oprettes en et nyt ID-nøglefelt
for "connection"-tabellen.
Den sidste løsning giver mulighed for at have samme forbindelse
mellem 2 elementer flere gange, hvorimod den første kun giver mulighed
for at have den samme forbindelse een gang.
•
•
•
Ved 0:1 forbindelse skal fremmed-nøglen i "connection"-tabellen
fra 0:1 siden sikres mod duplikater (unique) - i ovenstående er det A-ID
i "connection"-tabellen der skal være unique.
Bjørk Boye Busch – TietgenSkolen/EAL
Mapning af arv
Løsning med een tabel pr. klasse
B-Table
Class-B
A-ID
bf1
bfn
bf1
bfn
Class-A
A-Table
A-ID
af1
afn
(type)
af1
Class-C
C-Table
cf1
cfn
Bjørk Boye Busch – TietgenSkolen/EAL
A-ID
cf1
cfn
afn
Mapning af arv
Løsning med een tabel pr. klasse
•
•
Superklassen (Class-A) mappes til en tabel med alle klassens
attributter som felter og et nyt ID-felt som nøglefelt, samt evt. et typefelt.
•
•
•
Subklasserne (Class-B og Class-C) mappes til en tabel med alle klassens
attributter som felter og et nyt ID-felt som nøglefelt, idet der bruges samme
navn som for nøglefeltet på superklassen (Class-A). Nøglefeltet i
subklasserne
gøres samtidig til fremmednøgle til superklassen (Class-A).
•
•
•
•
•
•
Der kan med fordel envidere etableres et View, der alene omfatter
superklassens
felter, samt et View for hver subklasse, der omfatter såvel superklassens
som
subklassens felter idet nøglen fra subklassen (Class-B og Class-C)
udelades.
Disse View for subklasserne kan bruges til oprettelse og sikre mod at der
oprettes en række i flere tabeller med samme nøgle til en super-tabel
række.
Bjørk Boye Busch – TietgenSkolen/EAL
Mapning af arv
Løsning med een tabel pr. subklasse
B-Table
Class-B
B-ID
af1
afn
bf1
bfn
cf1
cfn
bf1
bfn
Class-A
af1
afn
C-Table
Class-C
C-ID
cf1
cfn
Bjørk Boye Busch – TietgenSkolen/EAL
af1
afn
Mapning af arv
Løsning med een tabel pr. subklasse
• I denne løsning afspejler tabellerne ikke arvestukturen, men denne
elimineres.
• Suberklassene (Class-B og Class-C) mappes til hvar til en tabel
med såvel
• superklassens attributter som egne atributter som felter og et nyt IDfelt som
• nøglefelt. Der kan ikke i databasen umiddelbart sikres mod at der
anvendes
• samme nøgle-vørdi i de 2 tabeller
• Der kan etableres et View med UNION, der afspejler superklassen,
men et
• sådan kan ikke anvendes til oprettelse og opdatering.
Bjørk Boye Busch – TietgenSkolen/EAL
Mapning af arv
Løsning med een tabel pr. superklasse
Class-B
bf1
bfn
ABC-Table
Class-A
A-ID
af1
afn
Class-C
cf1
cfn
Bjørk Boye Busch – TietgenSkolen/EAL
T YPE
af1
afn
bf1
bfn
cf1
cfn
Mapning af arv
Løsning med een tabel pr. superklasse
• I denne løsning afspejler tabellerne ikke
arvestukturen, men denne elimineres.
• Der er endvidere problemer med tomme felter.
• Der laves en tabel med alle attributter fra såvel
super som subklasserne og
• desuden et typefelt og et nyt ID-felt som
nøglefelt.
• Der kan etableres et Views der afspejler såvel
superklasse som subklasserne.
Bjørk Boye Busch – TietgenSkolen/EAL