3.3. Egyedtípusok, egyedhalmazok, attribútumok és kulcsok

Az ER modell az adatokat mint egyedeket, kapcsolatokat és attribútumokat írja le. A 3.3.1. alfejezetben ismertetjük az egyedek és attribútumaik fogalmát. Az egyedtípusokat és kulcs attribútumokat a 3.3.2. alfejezetben tágyaljuk. Aztán a 3.3.3. alfejezetben megadjuk az egyedtípusok egy lehetséges koncepcionális tervét a VÁLLALAT adatbázishoz. A kapcsolatokat a 3.4. alfejezetben tárgyaljuk.

3.3.1. Egyedek és attribútumok

Egyedek és attribútumaik.  Az ER modell által kezelt alapvető objektum az egyed, amely a valós világnak egy olyan darabja, amely önálló léttel bír. Az egyed lehet fizikai szinten létező objektum (például személy, autó, ház, dolgozó) vagy lehet fogalmi szinten létező objektum (például vállalat, foglalkozás vagy egy egyetemi tantárgy). Minden egyednek vannak attribútumai — az őt leíró tulajdonságok. Például egy dolgozó egyedet a dolgozó nevével, életkorával, címével, fizetésével és foglalkozásával lehet leírni. Egy konkrét egyed minden egyes attribútumához tartozik egy érték. Az egyedeket leíró attribútumértékek fogják alkotni az adatbázisban tárolt adatok nagy részét.

A 3.3. ábra két egyedet és az attribútumaik értékeit ábrázolja. Az e 1 DOLGOZÓ egyednek négy attribútuma van: Név, Cím, Életkor és Otthoni telefonszám; az értékeik rendre 'Kovács János', '4032 Debrecen, Virág utca 18.', '55' és '52/123456'. A c 1 VÁLLALAT egyednek három attribútuma van: Név, Székhely és Elnök; az értékeik rendre 'Fiastyúk Bt.', 'Pusztakotkodács' és 'Kovács János'.

3.3. ábra - Két egyed, az e 1 DOLGOZÓ és a c 1 VÁLLALAT egyed, és az ő attribútumaik.

Két egyed, az e 1 DOLGOZÓ és a c 1 VÁLLALAT egyed, és az ő attribútumaik.

Az ER modellben különböző fajta attribútumok léteznek: egyszerű vagy összetett, egyértékű vagy többértékű, illetve tárolt vagy származtatott attribútumok. Először definiáljuk ezeket az attribútumtípusokat, és példák segítségével illusztráljuk őket. Utána bevezetjük a NULL érték fogalmát egy attribútumra vonatkozóan.

Összetett és egyszerű (atomi) attribútumok.  Az összetett attribútumok kisebb részekre bonthatók, amelyek több, egymástól független jelentéssel bíró elemi attribútumot reprezentálnak. Például a 3.3. ábrán bemutatott alkalmazott Cím attribútuma Irányítószám[2], Település és Lakcím attribútumokra bontható fel, '4032', 'Debrecen' és 'Virág utca 18.' értékekkel. Azokat az attribútumokat, amelyeket nem bontunk részekre, egyszerű vagy atomi attribútumoknak nevezzük. Az összetett attribútumok hierarchiát alkothatnak; például a Lakcím tovább bontható négy egyszerű attribútumra: Utca, Házszám, Emelet és Ajtó attribútumokra, ahogyan az a 3.4. ábrán látható. Egy összetett attribútum értéke az őt alkotó egyszerű attribútumok értékeinek a konkatenációja.

3.4. ábra - Összetett attribútumok egy hierarchiája.

Összetett attribútumok egy hierarchiája.

Az összetett attribútumok nagyon hasznosak olyan szituációk modellezésénél, amelyekben a felhasználó néha egységként hivatkozik az összetett attribútumra, máskor viszont külön-külön hivatkozik annak komponenseire. Ha az összetett attribútumra csak mint teljes egészre hivatkozunk, akkor nincs szükség arra, hogy komponensekre bontsuk. Ha például nem kell hivatkozunk egy cím önálló komponenseire (Irányítószám, Utca stb.), akkor a teljes cím egy egyszerű attribútum lehet.

Egyértékű és többértékű attribútumok.  A legtöbb attribútum egy egyedben csak egy értékkel rendelkezik; az ilyen attribútumokat egyértékűnek nevezzük. Például az Életkor egy személy egyértékű attribútuma. Bizonyos esetekben egy attribútum értékek egy halmazával rendelkezhet ugyanazon egyedben — például egy autó Színek attribútuma vagy egy személy Diplomák attribútuma. Egyszínű autók esetén a Színek attribútum egyetlen értékkel rendelkezik, míg a két színnel fényezett autók esetében két értékkel. Hasonlóan, egy személynek lehet, hogy egyetlen diplomája sincs, egy másik személynek egy, egy harmadiknak kettő vagy több diplomája lehet; ezáltal a Diplomák attribútum különböző személyeknél különböző számú értéket vehet fel. Az ilyen attribútumokat nevezzük többértékűnek . Egy többértékű attribútumnak lehet alsó és felső korlátja, amelyek behatárolják a különböző egyedeknél a felvehető értékek számát. Például az autó Színek attribútuma legalább egy és legfeljebb három értéket vehet fel, ha feltételezzük, hogy egy autó legfeljebb három színre fényezhető.

Tárolt és származtatott attribútumok.  Bizonyos esetekben kettő (vagy több) attribútum értékei kapcsolatban állnak egymással — például egy személy Életkor és Születési idő attribtútumai. Egy konrét személy egyed esetén az Életkor értéke meghatározható az aktuális (mai) dátum és az adott személyhez tartozó Születési idő értékéből. Az Életkor attribútumot emiatt származtatott attribútumnak nevezzük, és azt mondjuk, hogy a Születési idő attribútumból származtatható, amelyet pedig tárolt attribútumnak nevezünk. Egyes attribútumértékek az egyeddel kapcsolatban álló más egyedekből származtathatók; például egy OSZTÁLY egyed Dolgozók_száma attribútuma úgy származtatható, hogy megszámoljuk az adott osztályhoz tartozó (azaz ott dolgozó) alkalmazottakat.

NULL értékek.  Előfordulhat, hogy egy adott egyed valamelyik attribútumának nincs használható értéke. Például egy cím Ajtó attribútuma csak azon címek esetén játszik szerepet, ahol a lakásokat ajtónként számozzák; másfajta épületeknél, mint például a családi házaknál, nem. Hasonlóan, a Diplomák attribútum csak diplomával rendelkező személyeknél érdekes. Az ilyen helyzetekben egy speciális értéket alkalmazunk, amelyet NULL értéknek nevezünk. A családi házak címében az Ajtó attribútum, egy diplomával nem rendelkező személy esetén pedig a Diplomák attribútum lesz NULL értékű. A NULL értéket használjuk akkor is, ha nem ismerjük egy adott egyed valamelyik attribútumának az értékét — például ha nem ismerjük a 3.3. ábrán látható 'Kovács János' otthoni telefonszámát. A NULL érték előbbi formájának a jelentése az, hogy nem alkalmazható, míg az utóbbié az, hogy ismeretlen. Az ismeretlen kategória további két esetre osztható. Az egyik esetben tudjuk, hogy az attribútumérték létezik, de hiányzik — például NULL értékű egy személy Magasság attribútuma. A másik esetben nem tudjuk, hogy az adott attribútumérték létezik-e — például NULL értékű egy személy Otthoni_telefonszám attribútuma.

Komplex attribútumok.  Vegyük észre, hogy az összetett és a többértékű attribútumok tetszőlegesen egymásba ágyazhatók. Ezt a tetszőleges egymásba ágyazást úgy reprezentálhatjuk, hogy az összetett attribútumok komponenseit kerek zárójelek között csoportosítjuk, és a komponenseket vesszővel választjuk el; a többértékű attribútumokat pedig kapcsos zárójelek közé írjuk. Az ilyen attribútumokat komplex attribútumoknak nevezzük. Például ha egy személynek egynél több lakása lehet, és minden lakásnak több telefonja, akkor a személy Cím_Telefon attribútuma a 3.5. ábrán látható módon adható meg.[3] A Telefon és Cím maguk is mindketten összetett attribútumok.

3.5. ábra - Egy komplex attribútum: a Cím_Telefon.

Egy komplex attribútum: a Cím_Telefon.

3.3.2. Egyedtípusok, egyedhalmazok, kulcsok és értékkészletek (tartományok)

Egyedtípusok és egyedhalmazok.  Egy adatbázis általában hasonló egyedek csoportjait tartalmazza. Egy dolgozók százait alkalmazó vállalat vélhetően hasonló információkat szeretne tárolni minden egyes dolgozójáról. Ezek a dolgozó egyedek ugyanazon attribútumokkal rendelkeznek, de minden egyed saját érték(ek)et vesz fel minden attribútumán. Egy egyedtípus olyan egyedek egy kollekcióját (vagy halmazát) definiálja, amelyek azonos attribútumokkal rendelkeznek. Az adatbázisban minden egyedtípus a nevével és az attribútumaival van megadva. A 3.6. ábra két egyedtípust ábrázol: a DOLGOZÓ-t és a VÁLLALAT-ot, valamint mindkettőhöz egy-egy attribútumlistát. Mindkét típus néhány konkrét egyede is látható rajta, az attribútumaik értékeivel együtt. Az adatbázis egy konkrét egyedtípusa összes egyedének egy adott időpillanatban vett kollekcióját egyedhalmaznak nevezzük; Az egyedhalmazra általában ugyanazzal a névvel hivatkozunk, mint az egyedhalmazra. Például a DOLGOZÓ egyaránt hivatkozik az egyedtípusra és az adatbázis összes dolgozó egyedének aktuális halmazára.

3.6. ábra - Két egyedtípus, a DOLGOZÓ és a VÁLLALAT, valamint néhány egyedük.

Két egyedtípus, a DOLGOZÓ és a VÁLLALAT, valamint néhány egyedük.

Az egyedtípusokat az ER diagramokon (lásd a 3.2. ábrát) egy téglalappal reprezentáljuk, amelybe beleírjuk az egyedtípus nevét. Az attribútumneveket oválisokba írjuk, és egyenes vonallal kötjük az egyedtípusukhoz. Az összetett attribútumok a komponenseikhez szintén egyenes vonallal kapcsolódnak. A többértékű attribútumokat dupla szegélyű oválisokba írjuk. A 3.7. (a) ábra az AUTÓ egyedtípust ábrázolja ezzel a jelöléssel.

3.7. ábra - Az AUTÓ egyedtípus két kulcs attribútummal, a Rendszámmal és az Alvázszámmal. (a) ER diagram jelölés. (b) Egyedhalmaz három egyeddel.

Az AUTÓ egyedtípus két kulcs attribútummal, a Rendszámmal és az Alvázszámmal. (a) ER diagram jelölés. (b) Egyedhalmaz három egyeddel.

Egy egyedtípus az azonos szerkezetű egyedek halmazának a sémáját vagy intenzióját írja le. Egy konkrét egyedtípus egyedeinek kollekcióját egy egyedhalmazba csoportosítjuk, amelyet az egyedtípus extenziójának is nevezünk.

Az egyedtípusok kulcs attribútumai.  Az egyedtípusok egyedeinek egy fontos megszorítása az attribútumokon értelmezett kulcs vagy egyediségi megszorítás. Az egyedtípusok általában rendelkeznek egy olyan attribútummal, amelynek az értékei különbözőek az egyedhalmaz minden egyes egyede esetén. Az ilyen attribútumot kulcs attribútumnak nevezzük, értékeit pedig az egyes egyedek egyedi azonosítására használhatjuk. A 3.6. ábrán szereplő VÁLLALAT egyedtípusnak például a Név attribútum kulcsa, mivel két vállalatnak nem lehet ugyanaz a neve. A SZEMÉLY egyedtípusnak az Szsz (személyi szám) a tipikus kulcs attribútuma. Néha több attribútum együtt alkot kulcsot, ami azt jelenti, hogy az attribútumértékek kombinációjának kell különbözőnek lenni minden egyes egyed esetén. Ha egy attribútumhalmaz ilyen tulajdonsággal bír, akkor ezt az ER modellben úgy kell helyesen reprezentálni, hogy definiálunk egy összetett attribútumot, és azt jelöljük meg az egyedtípus kulcs attribútumaként. Ügyeljünk rá, hogy az ilyen összetett kulcsnak minimálisnak kell lennie; azaz az összetett attribútumnak minden komponens attribútumot tartalmaznia kell ahhoz, hogy az egyediségi tulajdonsága fennálljon. A kulcs nem tartalmazhat fölösleges attribútumokat. Az ER diagramokon a kulcs attribútumokat úgy jelöljük, hogy a nevüket aláhúzzuk az oválisban, ahogy a 3.7. (a) ábrán látható.

Az, hogy egy attribútumot egy egyedtípus kulcsaként definiálunk, azt jelenti, hogy a fent említett egyediségi tulajdonságnak az egyedtípus minden egyes egyedhalmazára fenn kell állnia. Emiatt ez egy olyan megszorítás, amely tiltja, hogy két egyed egyidejűleg ugyanazon értékkel rendelkezzen a kulcs attribútumon. Ez nem egy konkrét extenzió tulajdonsága, hanem az egyedtípus összes extenziójának egy megszorítása. Ez a kulcs megszorítás (és más megszorítások is, amelyeket később tárgyalunk) az adatbázis által reprezentált minivilág megszorításaiból származik.

Egyes egyedtípusok egynél több kulcs attribútummal rendelkeznek. Az AUTÓ egyedtípusnak (3.7. ábra) például a Rendszám és az Alvázszám attribútuma is önmagában kulcsa. A Rendszám attribútum jó példa az összetett kulcsra, amely két egyszerű komponens attribútumból, az Államból és a Jelsorozatból tevődik össze, amelyek közül önmagában egyik sem kulcs. Az is előfordulhat, hogy egy egyedtípusnak nincs kulcsa, ebben az esetben gyenge egyedtípusnak nevezzük (lásd a 3.5. alfejezetet).

Az attribútumok értékkészlete (tartománya).  Az egyedtípusok minden egyszerű attribútumához kapcsolódik egy értékkészlet (vagy értéktartomány), amely azon értékek halmaza, amelyeket az attribútumhoz hozzárendelhetünk az egyes konkrét egyedekben. Ha a 3.6. ábrán a dolgozók életkora 16 és 70 közé eshet, akkor a DOLGOZÓ Életkor attribútumának értékkészletét a 16 és 70 közötti egész számok halmazaként definiálhatjuk. Hasonlóan a Név attribútum értékkészletét szóköz karakterekkel elválasztott, alfabetikus karakterekből álló sztringként definiálhatjuk, stb. Az értékkészleteket nem tüntetjük fel az ER diagramokon. Az értékkészleteket tipikusan az alapvető adattípusokkal adjuk meg, amelyek a legtöbb programozási nyelvben elérhetők, mint például az egész, a sztring, a logikai, a valós, a felsorolásos típus, az intervallum típus stb. Dátumot, időt és más fogalmakat reprezentáló további adattípusokat is alkalmazhatunk.

Matematikailag egy E egyedtípus A attribútumát, amelynek az értékkészlete V, egy E-ből V-nek a P(V) hatványhalmazába[4] képező függvényként definiálhatjuk:

  • A : EP(V)

Az e egyed A attribútumának az értékére A(e) formában hivatkozunk. Az előző definíció az egyértékű és többértékű attribútumokat, valamint a NULL értékeket is lefedi. A NULL értéket az üres halmaz reprezentálja. Egyértékű attribútumok esetén az A(e) egyelemű halmaz lesz az E minden e egyede esetén, míg többértékű attribútumok esetén nincs semmilyen megkötés.[5] Egy A összetett attribútum esetén a V értékkészlet a P(V 1), P(V 2), …, P(Vn ) Descartes-szorzata, ahol V 1, V 2, …, Vn az A-t alkotó egyszerű komponens attribútumok értékkészletei:

  • V = P(V 1) × P(V 2) × … × P(Vn )

Az értékkészlet minden lehetséges értéket tartalmaz. Rendszerint ezen értékek közül csak kevés található meg az adatbázisban, azok, amelyek a minivilág állapotát leíró adatokat reprezentálják. Ezek felelnek meg azoknak az adatoknak, amelyek a minivilágban ténylegesen léteznek.

3.3.3. A VÁLLALAT adatbázis kezdeti koncepcionális terve

Ezek után definiálhatjuk a VÁLLALAT adatbázis egyedtípusait a 3.2. alfejezetben leírt követelmények alapján. Most definiálunk néhány egyedtípust és az attribútumaikat, majd a 3.4. alfejezetben finomítjuk a tervünket, miután bevezetjük a kapcsolat fogalmát. A 3.2. alfejezetben felsorolt követelmények alapján négy egyedtípust azonosíthatunk, egyet-egyet a specifikációban megadott négy pont mindegyikéhez (lásd a 3.8. ábrát):

  1. Az OSZTÁLY egyedtípust Név, Szám, Helyszínek, Osztályvezető és Kezdő_dátum attribútumokkal. A Helyszínek az egyetlen többértékű attribútum. Megadhatjuk, hogy mind a Név, mind a Szám (külön) kulcs attribútumok legyenek, mivel mindkettőt egyedinek definiáltuk.

  2. A PROJEKT egyedtípust Név, Szám, Helyszín és Irányító_osztály attribútumokkal. Mind a Név, mind a Szám (külön) kulcs attribútumok.

  3. A DOLGOZÓ egyedtípust Név, Szsz, Nem, Lakcím, Fizetés, Szdátum, Osztály és Főnöke attribútumokkal. Mind a Név, mind a Lakcím lehet összetett attribútum; ez azonban nem volt megadva a követelmények között. Vissza kell mennünk a felhasználókig, hogy lássuk, hogy bármelyikük is fog-e hivatkozni a Név egyes komponenseire (vezetéknév, keresztnév) vagy a Lakcím egyes komponenseire.

  4. A HOZZÁTARTOZÓ egyedtípust Dolgozó, Hozzátartozó_neve, Nem, Szdátum és (a dolgozóval vett) Kapcsolat attribútumokkal.

3.8. ábra - Egyedtípusok előzetes terve a VÁLLALAT adatbázishoz. A feltüntetett attribútumok némelyikét a későbbiekben kapcsolatokká fogjuk finomítani.

Egyedtípusok előzetes terve a VÁLLALAT adatbázishoz. A feltüntetett attribútumok némelyikét a későbbiekben kapcsolatokká fogjuk finomítani.

Eddig nem reprezentáltuk azt a tényt, hogy egy dolgozó több projekten is dolgozhat, mint ahogy azt sem, hogy egy dolgozó hány órát dolgozik hetente az egyes projekteken. Ezek a jellemzők a 3.2. alfejezetben felsorolt harmadik követelmény részeként voltak megadva, és a DOLGOZÓ Dolgozik_rajta nevű többértékű összetett attribútumával reprezentálhatók, amely a (Projekt, Órák) egyszerű komponensekkel rendelkezik. Egy másik lehetőség lenne, hogy a PROJEKT Dolgozók nevű többértékű összetett attribútumával reprezentáljuk őket a (Dolgozó, Órák) egyszerű komponensekkel. A 3.8. ábrán, amely a fent leírt egyedtípusokat ábrázolja, az első megoldást választottuk. A DOLGOZÓ Név attribútuma az ábrán összetett attribútumként látható, feltehetően a felhasználókkal történt konzultáció hatására.



[2] Irányítószámnak Magyarországon a négyjegyű postai kódot nevezzük.

[3] Az XML-t jól ismerők számára megjegyezzük, hogy a komplex attribútumok hasonlóak az XML komplex elemeihez.

[4] Egy V halmaz P(V) hatványhalmaza V összes részhalmazának a halmaza.

[5] Az egyelemű halmaz olyan halmaz, amelynek csak egyetlen eleme van.