02_relacios_adatmodell

Download Report

Transcript 02_relacios_adatmodell

2. fejezet:
Relációs adatmodell,
normálformák
Kilián Imre (Markó Tamás)
PTE, 2008.
Történeti adalékok
• A relációs adatmodell elméletét Codd cikke
alapozta meg (1970)
• Elterjedésében nagy szerepet játszott az
Ashton-Tate nevű cég által PC-kre
kifejlesztett dBase nevű adatbáziskezelő
• Jelenleg gyakorlatilag egyeduralkodó
Relációs adatmodell
• Az egyedek kapcsolata nem épül bele az
adatmodellbe
• A hangsúly a tulajdonságok megadásán van
• Az egyedet táblázattal adjuk meg
– az oszlopok a tulajdonságok (attribútumok)
– a sorok az egyed előfordulásai (rekordok)
Példa a relációs adatmodellre
A DOLGOZÓ tábla:
NÉV
Kovács Pál
Nagy Jenő
Tóth Edit
Varga István
KÉPZETTSÉG FIZETÉS
esztergályos
80.000
raktáros
120.000
titkárnő
95.000
könyvelő
157.000
A relációs adatmodell előnyei
• Egyszerűség
– a felhasználó számára könnyen érthető
– egyszerűen programozható
• Precíz matematikai háttérrel rendelkezik
A relációs adatmodell hátrányai
• Körülményes a táblák sorainak egymáshoz
való hasonlítása
– Ilyen az időben változó adatok kezelése (pl. a
dolgozók egyes időszakokban állandó
alapfizetése).
• A különböző táblákban lévő, de
összetartozó adatokat minden egyes
felhasználáskor össze kell kapcsolni
A Descartes-szorzat
• Direkt szorzatnak is hívják
• A1, A2, … An adott halmazok
• A1A2  …  An =
= {(a1, a2, … an)a1A1, a2A2, … anAn}
• A Descartes-szorzat rendezett elem-n-esek
halmaza: A1A2A2A1
• Az elem-n-esek neve angolul tuple
A reláció 1.
•
•
•
•
R  A1A2  …  An reláció
n változós, n elemű, n-ed fokú reláció
 a reláció minden eleme különböző
 a reláció elemeinek nincs meghatározott
sorrendje (nincs egy elem után következő
elem)
A reláció 2.
• Az A1, A2, … An halmazok a reláció tartományai
(domain)
• R elemeinek száma (a tábla sorainak száma) a
reláció számossága
• reláció = tábla = egyedtípus
• domain = oszlop = mező = tulajdonság
(attribútum)
• a reláció eleme = sor = egyed-előfordulás = rekord
A kapcsolat lehetősége relációs
adatbázisban: közös oszlopok
FO_KÓD FO_NÉV
...
FO_KOD O_KOD O_NÉV
...
GFO
GFO
KER
...
Gazdasági
Főosztály
Kereskedelmi
Főosztály
PÜ
Pénzügy
KÖ
Könyvelés
...
GFO
...
A kapcsolat maga nem tárolódik, azt minden
lekérdezésnél külön meg kell adni!
Kulcs
• Az attribútumok egy részhalmaza (egy vagy több
tulajdonság), ami
– egyértelműen meghatározza az egyed egy előfordulását
– ha bármelyik tulajdonságot elhagyjuk belőle, az
egyértelműség már nem teljesül
•
•
•
•
•
A kulcs a tábla minden sorára különböző
Egy táblának több kulcsa is lehet
Egyszerű kulcs: egy tulajdonságból áll
Összetett kulcs: több tulajdonságból áll
Elsődleges kulcsnak is hívják (primary key,
Primärschlüssel)
Elsődleges és másodlagos
attribútumok
• Elsődleges attribútum: szerepel a kulcsban
(része a kulcsnak)
• Másodlagos attribútum: nem szerepel
kulcsban (nem része a kulcsnak)
Külső kulcs
• Az attribútumok egy részhalmaza (egy vagy több
tulajdonság), ami egy másik táblában kulcsot alkot
• Alapvetően táblák összekapcsolására szolgál
• A külső kulcs értéke lehet azonos is a tábla különböző
soraiban
• Egy táblának több másik táblához is lehet külső kulcsa
• Egy táblának egy másik táblához több külső kulcsa is
lehet
• Egy táblának saját magához is lehet külső kulcsa
• Idegen kulcsnak is hívják (foreign key, Fremdschlüssel)
Funkcionális függőség
• Az R reláció B1, …, Bm attribútumai
funkcionálisan függenek a C1, …, Ck
attribútumoktól, ha valahányszor
megegyezik két sor a C1, …, Ck helyeken
(oszlopokban), mindannyiszor megegyezik a
B1, …, Bm helyeken is.
• Jelölése: C1, …, Ck  B1, …, Bm
• A kulcstól a másodlagos attribútumok
funkcionálisan függenek
Teljes függőség
• Az R reláció B1, …, Bm attribútumai
teljesen függenek a C1, …, Ck
attribútumoktól, ha
– funkcionálisan függenek tőlük
– de ha csak egyet is elhagyunk a C1, …, Ck
attribútumok közül, a funkcionális függőség
már nem teljesül
• Részleges függőség: olyan funkcionális
függőség, amely nem teljes.
Normálformák
• Az adatbázis szerkezetének “tisztaságát”,
szabályosságát adják meg
• Többfajta normálforma is létezik
– A következőkben felsorolt normálformákon
kívül is vannak egyéb normálformák
• Nem biztos, hogy a magasabb rendű
normálformának eleget tevő adatbázis
jobban használható!
Az első normálforma 1.
• Az R reláció első normálformában (1NF)
van, ha minden oszlopában pontosan egy
attribútumérték áll.
– Másként: egy mező sem tartalmaz két,
önmagában is értelmes értéket
• A relációs adatbáziskezelő programokkal
nem is lehet olyan adatbázist definiálni, ami
megsértené az első normálformát
Az első normálforma 2.
Nincs első normálformában:
NÉV
Kovács János
SZAKKÉPZETTSÉG
tanár, közgazdász
Első normálformában van:
NÉV
Kovács János
Kovács János
SZAKKÉPZETTSÉG
tanár
közgazdász
Az első normálformára hozás úgy is megoldható, hogy a
SZAKKÉPZETTSÉG oszlop helyett egy külön táblát
használunk, ami 1:N kapcsolatban van az eredetivel.
A második normálforma
• Az R reláció második normálformában
(2NF) van, ha
– első normálformában van és
– minden másodlagos attribútum teljesen függ a
kulcstól
• Ha egy reláció első normálformában van és
a kulcs egyszerű, akkor a reláció második
normálformában is van.
Problémák a 2NF hiánya esetén
• Közös néven: változtatási anomáliák
• Gyakorlati szempontból ezek rejtett hibalehetőségek
• Törlési anomália: olyan információt is
elveszíthetünk, amit nem akartunk törölni
• Módosítási anomália: bizonyos adatmódosításokat
több rekordban is el kell végezni
• Beírási anomália: nem lehet új rekordot létrehozni,
ha abban bizonyos mezőknek még nincs értéke
Példa: függőségi viszonyok az
ELADÁS táblában (nem 2NF)
Szla_kelt
Szla_szám
Vevő_név
Term_kód
Vevő_cím
Szla_össz
Term_név
mennyiség Term_érték
Egys_ár
Forrás: Szelezsán J: Adatbázisok
A 2NF elérése a tábla
szétdarabolásával
Szla_szám
Szla_szám
Term_kód
Szla_össz
Vevő_név
Szla_kelt
Vevő_cím
Term_név
Egys_ár
mennyiség
Term_kód
Term_érték
A harmadik normálforma
• Az R reláció harmadik normálformában
(3NF) van, ha
– második normálformában van és
– a másodlagos attribútumok között nincs
funkcionális függés
A 3NF elérése a tábla
szétdarabolásával
Szla_szám
Szla_szám
Szla_kelt
Szla_össz
Vevő_név
Szla_kelt
Szla_össz
Vevő_név
Vevő_cím
Vevő_név
Vevő_cím
VÉGE