E/K Tervezési minták
- Redundancia elkerülése
- Helypazarlás
- Inkonzisztens
- Anomáliák (az összes kb)
- Gyenge egyedhalmazok "óvatos használata"
Egyedhalmazok vs Attribútumok
- Egy egyedhalmaznak legalább az egyiket teljesítenie kell:
- Többnek kell lenneie, mint egy egyszerű név
- tehát nem kulcs attribútumnak lennie kell
- A
sokvégén szerepel egysok-egykapcsolantnak
- Többnek kell lenneie, mint egy egyszerű név
Good Practice - 1

A gyáártónak valóban egyedhalmaznak kell lennie, mert a
címnem része a kulcsnakA Sörök pedig a
sokvégén áll asok-egykapcsolatnak
Kerüljük a felesleges gyenge egyedhalmazokat
Gyakran egyedi azonosítót rendelünk az egyedhalmazokhoz
Lásd: TAJ, rendszámtábla...
- Akkor van a gyenge egyedhalmazokra szükség, ha nem létezik olyan globális fórum, amely kioszhatná az egyedi azonosítókat
- Nem valószínű, hogy minden focijátékos globálisan egyedi mezszámot kapjon...
E/K diagramok átírása relációsémává
- Egyedhalmaz \(\to\) reláció
- Attribútumok \(\to\) attribútumok
- Kapcsolat \(\to\) relációk
- Attribútumai az összekapcsolt egyedhalmazok kulcs-attribútumai
- A kapcsolat saját attribútumai
Kapcsolatból reláció Ultra Mega Diagram

Relációk összevonhatósága - sok-egy
- Egy relációba összevonhatók
- Az \(E\) ehyedhalmazból kapott reláció
- Valamint azon
sok-egykapcsolat relációi, melyeknél \(E\) áll asokoldalon
sok-sokreláció nem összevonhatóNem triviális TÉF-ek a láthatáron...
Gyenge egyedhalmazok átírása
- A gyenge egyedhalmaznak relációja a teljes kulcsot tartalmaznia kell
- A más egyedhalmazhoz tartozó kulcsokat is
- Valamint a saját attribútumait is

Majd látjuk, ha ki kell vennünk a hostNév2-t, akkor a Hol reláció teljesen elhagyhatóvá válik (mert minden más adat már egy táblában benne van)
Egyed alosztályok
- Objektumorientált megközelítés (egyed egy relációban, nem kulcsokat is tartalmaz)
NULLértékek használata- E/K alapján meghatározott stílusban

OO megközelítés
Sörök(név, gyártó)
Ale-k(név, gyártó, szín)
- Gyártó által gyártott sörök színeinél hasznos
E/K style
Sörök(név, gyártó)
Ale-k(név, szín)
- Sörökhöz tartozó Gyártók lekérdezésénél hasznos
NULL értékek használata
Sörök(név, gyártó, szín)
- Helytakarékos, amíg nem túl sok a null a színekben
- Összekapcsolást megspórolhatunk vele
Kacsolat számosság - Alternatív jelölés
- Nyíl helyett számosság
- a vonal mind két végén
[0,n]illetve[0,1]vagy[1,1]
- Működik
egy-egysok-egyesetekben
Specifikáció lejátszás
Orvosi adatbázist készítünk. Minden embernék számon tartjuk 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 ezen 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ámon tartjuk 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 a 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ácienseknél 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.

Összevonások előtti adatbázis séma
- Ember(név, kor, TAJ)
- Orvos(TAJ, szakt, tud_fok)
- Körzeti_orvos(TAJ, város)
- Páciens(TAJ, foglalkozás)
- Gyógyszer(név, ár)
- Betegség(név, lefutás)
- Bacilus_törzs(név, elterjedtség)
- Bacilus(név, törzs_név)
- Felír(orvos_TAJ, páciens_TAJ, gy_név, betegség_név)
- Tartozik(orvos_TAJ, páciens_TAJ)
- Hatások(gy_név, bac_név, törzs_név)
- Okoz(bet_név, törzs_név)
Egyszerűsítés után
- Ember(név, kor, TAJ)
- Orvos(TAJ, szakt, tud_fok)
- Körzeti_orvos(TAJ, város)
- Páciens(TAJ, foglalkozás, orvos_TAJ)
- Gyógyszer(név, ár)
- Betegség(név, lefutás, törzs_név)
- Bacilus_törzs(név, elterjedtség)
- Bacilus(név, törzs_név, gy_név)
- Esetleg, ha pont egy gyógyszer hatásos rá
- Felír(orvos_TAJ, páciens_TAJ, gy_név, betegség_név)
Tervezési alapelvek
- A modell minél jobban tükrözze a valóságok
- Attribútum vs új egyedosztály
- Általában ha több, számunkra fontos tulajdonsággal rendelkezik, akkor megérheti új egyedosztályt készíteni
- Máskor elegendő új attribútumot felvenni
- Minden esetre sose mindkettőt
- Anomáliááák 🤯