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. A felhasználók is megjelölhetnek érdeklődési témaköröket, ezáltal hamarabb értesülnek a felvetett kérdésekről.
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 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, 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.