Skip navigation

1. példa

Fórum

Tegyük fel, hogy egy internetes fórumba csak regisztrált felhasználók írhatnak üzeneteket. Az első üzenet létrehozója létrehozza magát a felvetendő kérdést, más felhasználók (és ő is) reagálhat ezekre a kérdésekre. A felvetett témákat kérdéseket témakörökbe sorolják, hogy be lehessen őket kategorizálni. Egy témakörnek csak egy főtémaköre lehet.

A fórum adatmodellje az alábbi E-K diagrammal jellemezhető:

Képezzük le az alábbi E-K diagramot relációs adatbázissémává!

A Felhasználó egyed leképezése egyszerű csak a név attribútumnál kell kicsit jobban figyelni, ezt egyből helyettesítjük a részattribútumaival. A Témakör egyed leképezésével szintén könnyű dolgunk van.

Felhasználó (felhasználónév, jelszó, születési dátum, vezetéknév, keresztnév)
Témakör ( azonosító, megnevezés)

Képezzük le az Üzenet gyenge egyedet. Figyeljünk arra, hogy a meghatározó kapcsolaton keresztük fel fogjuk venni a Felhasználó egyed felhasználónév attribútumát! Ebben az esetben a felhasználónév és a dátum együttesen alkotja a séma kulcsát, mivel egy felhasználó egyidőben csak egy üzenetet tud elküldeni. A felhasználónév egyúttal külső kulcs is.

Üzenet ( felhasználónév, dátum, tartalma)

Képezzük le a Témaköre kapcsolatot! Ügyeljünk arra, hogy az Üzenet sémának mi a kulcsa! A Témaköre kapcsolat az Üzenet és a Témakör egyed között egy 1:N kapcsolat, felvesszük a kapcsolódó egyedek kulcsait a sémába, és válasszuk kulcsnak az N-oldali egyed kulcsát, ez ugyanis egyértelműen meghatározza az üzenet témakörét.

Témaköre(felhasználónév, dátum, témakör_azonosító)

Képezzük le a válasz kapcsolatot! Ez egy 1:N kapcsolat, hiszen egy (válasz)üzenet csak egy üzenetre vonatkozhat. A könnyebb áttekinthetőség kedvéért átnevezzük az attribútumokat.

Válasz(eredetiüzenet.felhasználónév,eredetiüzenet.dátum,válaszüzenet.felhasználónév, válaszüzenet.dátum)

Képezzük le végül a főtémaköre kapcsolatot! Itt is átnevezzük az attribútumokat.

Főtémaköre (altémakörazonosító, főtémakörazonosító)

Vonjuk össze azokat a relációsémákat, amelyeket lehet. Mindig a kapcsolatból leképezett relációsémákat olvasztjuk be az egyedekből leképezett relációsémákba. Amelyik relációséma változott az előző lépéshez képest, annak a nevében is jelöljük a változást.

Felhasználó (felhasználónév, jelszó, születési dátum, vezetéknév, keresztnév)
Témakör2 ( azonosító, megnevezés, főtémakörazonosító)
Üzenet2 ( felhasználónév, dátum, tartalma, témakör_azonosító, eredetiüzenet.felhasználónév, eredetiüzenet.dátum)

Az Üzenet2 esetében a Válasz sémát beolvasztjuk az Üzenet relációsémába. Ilyenkor ha az eredetiüzenet.felhasználónév és az eredetiüzenet.dátum nincs kitöltve, az a témafelvetés első üzenetét jelöli.