Tankönyv, 4.fejezet Magas szintű
adatbázismodellek
1.gyak. E/K modell és leképezése
relációs modellre, Tk. 133-181.o.
2.gyak. UML modell és leképezése
obj.relációs modellre, Tk. 181-195.o.
Mintapéldák:
7.1.példa : HR-OE
séma >>
hasonló lásd KissA_EA_slide E/K modell
7.3.példa: Orvosi
adatbázist készítünk. Minden
embernél számontartjuk
a
nevét,
korát, TAJ
számát.
Ezen utóbbi alapján egyértelműen
azonosítani lehet
bárkit.
Az orvosoknál
tároljuk ezeken
kívül még a tudományos
fokozatukat és
a
szakterületüket, a körzeti
orvosoknál még annak a városnak a
nevét is,
ahol
rendelnek, a pácienseknél pedig a
foglalkozásukat.
A betegségeknél
számontartjuk
a
nevüket és azt, hogy átlagosan mennyi
ideig
tart a gyógyulási
folyamat. Minden
betegséget valamilyen bacilustörzs okoz.
Ezek a
nevük alapján egyértelműek,
emellett tároljuk az elterjedtségük
arányát.
A törzsekhez bacilusok
tartoznak,
ám a név alapján még nem
tudhatjuk pontosan
melyik bacilusról van
szó,
mert
több törzshöz is tartozhat ugyanolyan nevű
bacilus.
A
különféle
betegségekben
szenvedő pácienseknek lehet, hogy egyszerre több
orvos írja majd fel
a
különféle árú
gyógyszereket. A gyógyszereknél
tároljuk a
nevüket,
és hogy mely
bacilusok esetében hatásosak. Minden
páciensnek
tartoznia kell
egy körzeti
orvoshoz, és valaki csak úgy lehet
körzeti orvos,
ha
legalább húsz páciense van.
E/K modellt >> lásd KósaB_EA_slide
7.4.példa: Tankönyv
példái. A
középkor nagy
kalóztámadásairól
szeretnénk
adatbázist
készíteni. A
csatákban kalóz- és
szállítóhajók illetve
katonai hajók
vettek részt.
Minden hajónál
számontartjuk
annak nevét, típusát és
súlyát. A katonai
hajóknál
feljegyezzük még
ezen kívül az ágyúk
számát, a
szállítóhajóknál
pedig
megadjuk
a rakományuk jellemzőit,
azaz a rakomány
értékét,
mennyiségét,
származási helyét
és
azonosítóját. Egy
szállítóhajónak mindig van
rakománya.
Egy-egy csatában
legalább 5 hajó
vett
részt. Egy katonai hajó legalább
háromszor, egy kalózhajó
legalább kétszer
csatázott. Minden
csatánál számontartjuk
még a
nevét, dátumát,
helyszínét, a
győztes ország
nevét és az elsüllyedt hajók
neveit. Minden hajóhoz
legalább tíz
fős legénység tartozott: legalább
kilenc
matróz és pontosan egy kapitány.
A
legénység minden tagjánál
számontartjuk
a nevét
és a szolgálati idejét.
Beadandó
feladatötletek (szabadon
választható és szabadon
változtatható!)
-- Több lépcsős feladat (a kapott pontok
az 1zh pontjaihoz számítanak),
1-2.gyak. E/K modell és leképezése
relációs modellre, Tk. 4.1-4.6.fej., 133-181.o.
2-3.gyak.UML modell és leképezése
obj.relációs modellre, Tk. 4.7-4.8.fej.181-195.o
3-5.gyak. Megvalósítása az Oracle
obj.relációs adatb.kezelővel, Tk.
10.3-10.5.fej.
1.) Betegkezeléshez tervezzen adatbázist.
Kórházak
nyilvántartása
(központi
betegátirányítás, hol van
szabad hely).
2.) Folyóvizeink szennyeződését
szeretnénk nyomon követni.
Az egyes folyók
honnan-hová
(nagyobb települések) folynak, mikor-hol
történt
szennyeződés
és milyen fajta (pl. cián, ill.
többféle veszélyes anyagra
nézve),
és
a
szennyeződés mértékére a
mérhető
adatok (pl. mennyi hal pusztult el, stb.)
nyilvántartásához
tervezzen
adatbázist.
3.) Időjárás- és
árvíz előrejelzéshez tervezzen
adatbázis.
Állomásonként a
mérőműszerek helye, pontossága. A mért
napi ill. óránként
adatok
nyilvántartása az elemzésekhez
és
előrejelzéshez.
4.) Zenei cd-ket árusító
szaküzletek, internetes on-line
cd-boltok nyilvántarásához
tervezzen
adatbázist. Legfrissebb
számok, lemezajánlók, akciók,
stb.
5.) A BKV járműveiről adatbázist
készítünk. Egy jármű lehet
villamos, busz, metró,
trolibusz vagy hév. Minden
járműnél számon tartjuk annak
azonosítóját, menetidejét,
megálló helyeit,
emellett hogy milyen átszállási
lehetőségeink vannak az egyes
megállóhelyeken.
A járművek az azonosító
alapján egyértelműek.
6.) Utazási iroda
szállásfoglalások, programok.
Utazási
szokásokról
készülő felméréshez
gyűjtünk adatokat,
például egyedül utazik
vagy családdal,
üzleti vagy üdülési
célból, a kora (fiatal,
középkorú
vagy idősebb),
a neme (nő vagy férfi),
mivel utazik, mennyi időre,
belföldi-külföldi utak, köt-e
biztosítást, hogyan tervezi az
utazást
(utazási irodán vagy interneten, telefonon
keresztül
intézi a
foglalásokat), milyen szállás (hotel,
sátor, stb).
7.) Egy számítástechnikai
termékeket árusító bolt
nyilvántartása.
A boltban kapható
alkatrészekről (alaplap, processzor, memória,
stb.), illetve ezek
jellemzőiről valamint a
raktárkészletről
nyilvántartás.
8.) ELTE Egyetemi élet
felméréséhez (pl. sport és
kultúrális
események) tervezzen
adatbázist, vegyük
például a Kortárs Segítő
Csoport (hallgatói csoportosulás)
szolgáltatásainak
nyilvántartását, a csoport
által kínált
szolgáltatások
http://www.kortars.elte.hu/ajanlas
oldalon találhatók.
9.) Nemzetközi karácsonyi szokások
felméréséhez gyűjtünk
adatokat, nemzetiség,
lakhely, kor (fiatal,
középkorú, v. idősebb), az
ajándékozottak
köre (kiknek),
hol
vásárol (nagybolt, karácsonyi
vásár,
speciális boltok), milyen karácsonyi
üdvözletet küld
(képeslap, csomag,
email), hol étkeznek karácsonykor, stb,
tipikus nemzeti
ünnepi ételek-italok
listája, stb., szabadon változtathat a
tervezési feladaton.
10.) A kötelező
gépjármű-felelősségbiztosítások
összehasonlításához gyűjtünk
adatokat,
például melyik
biztosítónál kötheti meg,
mennyi időre, milyen járműre - milyen
díjjal,
milyen
díjengedmények,
bónuszosztály, milyen egyéb
kedvezményes szolgáltatásokat
nyújtanak,
valamint milyen a
kárkifizetés, káresetkor milyen
pótdíjak vannak, stb.
11.) Adatbázis könyvkiadáshoz. A
kiadók, alkalmazottak, könyvek szerzők adatai.
12.) A triatlon egyes sportjain (azaz úszás,
biciklizés, futás) induló
sportolók
adatainak
nyilvántartása,
az egyes versenyeken
való részvétele illetve a
teljesítés
eredményei.
13.) Számítógépes
szerepjátékok account kezelő rendszere. Az
accountok
tartalmazhatnak
karaktereket. A karakterek
felszerelést hordanak,
ami védelmi vagy támadó
tárgyakból
áll.
Minden karakter egyszerre csak egy
Területen
tartózkodhat (Régióban).
Léteznek
továbbá
generált karakterek, ami nem tartozik
egy accounthoz sem, de ezek is felszerelést hordanak
és lehetnek
barátságosak vagy
ellenségesek, és ezek is egy területen
tartózkodnak.
14.) Az angol rögbiliga, a Guiness Premiership
felépítése. Csapatok,
játékosok, edzők,
az utóbbi kettőt lehet
például ember
osztályból származtatni(azegy), mely
játékosok
hol játszanak(kié),
posztjuk,
születési dátum(objektum),
súlyuk,
magasságuk, melyik
csapatnak ki az edzője, a
mezszíne(i),
játékosok számát,
alapítás
éve, stadion neve, stb.
15.) Kocsma-nyilvántartás. Egy weboldalon vedéglátóipari
egységeket (kocsmákat,
büféket,
éttermeket, szórakozó helyeket)
tartunk nyilván. A regisztrált felhasználók
értékelhetik
az egyes kocsmákat 1-10es
skálán és véleményt írhatnak
róluk.
16.) Szabadon választott feladatok rövid
leírása, stb... folyt.köv.... stb...
_______________________________________________________ 3-4.
gyak. (II.27-III.5) -
Objektumrelációs alapok.
Objektumrelációs
lekérdezések
Ajánlott
irodalom:
>> Ullman-Widom: Adatbázisrendszerek.
Alapvetés, Panem, 2008.
Második,
átdolgozott kiadás (megjelent: 2008. november.
ÚJ!!!)
10. fejezet
Objektumrelációs
modell, felhasználó által
definiált
típusok
Segédanyagok:
>> Nikovits Tibor: UDT.txt
>> Oracle Object-Relational Features
10g (10.2) HTMLPDF
>> Object-Relational Features of Oracle by ..stanford.edu/~ullman..
A példa adatbázis
tábláiból: hr.countries,
hr.employees, oe.customers, oe.jobs
A táblák
összekapcsolásának
felderítésében segítenek a
definiált
idegen kulcsok.
udt_1
-- Adjuk meg, hogy hány
különböző
országból vannak vevőink (oe.customers).
udt_2
-- Adjuk meg, hogy melyik
országból hány
vevőnk van. (oe.customers, hr.countries)
Az olyan ország is
szerepeljen (ha van), amelyik nincs benne
a hr.countries táblában.
(Ország_azon,
Országnév,
VevőkSzáma)
udt_3
-- Adjuk meg azoknak a dolgozóknak a
nevét
és foglalkozását, akik vevőkkel
foglalkoznak,
valamint azt, hogy hány
különböző
országbeli vevővel foglalkoznak.
(Név,
Foglalkozás,
OrszágokSzáma)
udt_4
-- Adjuk meg a Burt Spielberg nevű vevőnek a
telefonszámait
(külön sorokban).
udt_5
-- Adjuk meg azoknak a német vevőknek a
nevét,
akiknek legalább 2 telefonszámuk van.
udt_6
-- Adjuk meg azoknak az amerikai
városoknak a neveit, amelyek
az
északi szélesség
42. és 43.
foka valamint a nyugati hosszúság 82.
és
85. foka között helyezkednek el.
lásd ->
oe.customers.cust_geo_location
tárolja a vevő
városának földi
elhelyezkedését.
Az x és y
attribútumokban van a
földrajzi
hosszúság (-180 - 180, a negatív
számok
Greenwich-től nyugatra) illetve
szélesség (-90 - 90, a negatív
számok az egyenlítőtől délre).
udt_7
-- Adjuk meg a nikovits.sokszogek tábla
adatai alapján az egyes sokszögek
kerületét
vagyis oldalainak
összhosszát. (Név, Kerület)
Minden szükséges
információt, típusokat,
metódusokat a katalógusból
nézzetek meg.
udt_8
-- Hozzunk létre egy T
táblát az OE.ORDERS, OE.CUSTOMERS
táblák adatai alapján
a
következőképpen. A T táblában
legyen benne a vevo neve (first name
+ last name),
címe (cust_address),
telefonszámai
(VARRAY oszlopként), valamint az általa feladott
rendelések adatai
(beágyazott
táblaként). A rendelések
információi
közül
elég az
azonosítót, dátumot
és
összértéket (order_id, order_date,
order_total) tárolni.
-- Töltsük is fel adatokkal a T
táblát a fenti
két táblából.
Az
összes vevő
összes
rendelésével kerüljön
bele a táblába.
-- Majd adjuk meg a T táblát
lekérdezve
azon vevők
nevét és összes rendeléseik
összértékét,
akik címének
városa Detriot vagy
Indianapilis.
-- Ellenőrzésképpen adjuk meg
ugyanezt a
lekérdezést az eredeti két
táblára
megfogalmazva.