kategória | ||||||||||
|
||||||||||
|
||
A mérés során a hallgatók megismerkednek az adatbázisok logikai
tervezése során használatos Egyed/Kapcsolat (E/K)diagrammokkal, valamint az
elkészült adatbázis terv relációs adatmodellé történő leképezésével. A mérés
során egy szöveges specifikációból kiindulva adatbázis tervet kell készíteni, a
megtervezett adatbázist relációs sémává kell alakítani, és a sémát létre is
kell hozni Oracle Serveren.
A mérés elvégzéséhez a következő ismeretek szükségesek:
Az Egyed/Kapcsolat diagrammok az adatbázisban található elemek logikai struktúrájának modellezésére szolgálnak. A modellezés során az alábbi elemek találhatók meg egy E/K diagrammban:
Az E/K diagrammok ábrázolására nincs egységesen elfogadott szabvány, ezen dokumentációban az egyik elterjedt jelölésrendszert ismertetjük.
2.1.1 Egyed
Az egyedeket tulajdonképpen az információ hordozóinak lehet tekinteni, azaz az egyedek azok a fogalmak/dolgok amikről információt szeretnénk tárolni. Egyedek közt megkülönböztetünk egyed típust és egyed példányt. Az egyed típus egy gyűjtő fogalom, azaz adott típusú egyedeket tárolunk az adatbázisban és az egyed példány az egyed típus egy konkrét előfordulása. Például: a személy az egy egyedtípus és Kiss Béla egy konkrét egyedpéldány. Az E/K diagrammokon egyed típusokat ábrázolunk. Az egyed típusokat a következőképpen szokás jelölni:
2.1.2 Attribútum
Attribútumok szolgálnak a leíró tulajdonságok tárolására, azaz ezek írják le azt, hgy mit szeretnénk tárolni. Önmagukban nem állhatnak,csak egyedhez vagy kapcsolathoz kapcsolódva. Attribútumok között megkülönböztetünk egyszerű és összetett attribútumokat, valamint egyértékű és többértékű attribútumokat:
Az attribútumokat az alábbi módon szokás jelölni az E/K diagrammon:
2.1.3 Kapcsolat
A kapcsolatok az egyede 828f59i k egymáshoz való viszonyát írják le. Ezek az összekötő elemei az adatmodellnek, ezek adják meg, hogy az egyes egyedek milyen kapcsolatban állnak egymással. Egy kapcsolat összeköthet akár egy egyedtípus több példányát (ezeket rekurzív kapcsolatoknak is hívják), általában két egyedtípus példányait rendeli össze, de elképzelhetők olyan kapcsolatok is, melyek több egyedtípust kapcsolnak össze. Az összetartozó egyedek alapján beszélhetünk:
Egy alkalmazottnak egy
parkolóhelye van és egy parkolóhelyet egy alkalmazott használhat
Egy termék egy
kategóriába tartozik, de egy kategóriába több termék is tartozhat. A kategória
a szülő és a termék a gyerek ebben a .példában
Egy diák több tantárgyra is járhat, és egy tantárgyra több diák jár.
Általában a több - több kapcsolatokat, összekapcsoló entitásokkal szokták modellezni, mivel ekkor a több - több kapcsolat átalakul két darab egy - több kapcsolattá. Például:
A kapcsolatok jellemzéséhez tartozik a minimum és maximum kardinalitásnak a meghatározása. Ezeket részben már meghatározza a kapcsolat típusa (egy - egy, egy - több, több -több). A kardinalitások meghatározásánál a következő típusokat szokták megkülönböztetni:
Jelölésük az E/K diagrammon a következő:
Egy kórtörténet bejegyzés minimum egy, maximum egy (azaz kötelezően egy) betegre vonatkozik, és egy betegnek egy vagy több kórtörténeti bejegyzése van
Egy alkalmazott több projekten is dolgozhat, de nem feltétlenül dolgozik
projekten. Viszont egy projekten több alkalmazott is dolgozhat, de legalább egy
alkalmazott dolgozik rajta.
Egy személy egy másik személlyel léphet házasságra, és legfeljebb egy
házastársa lehet, mivel a házasság nem kötelező ezért nem feltétlenül van
házastársa.
Az elkészült E/K diagrammot relációs adatmodellé transzformálni viszonylag egyszerű algoritmussal lehet. Viszont az E/K diagrammok tartalmazhatnak olyan részeket, melyek nem ábrázolhatók közvetlenül relációs adatmodellben, ezeket előbb meg kell szüntetni:
A fenti átalakítások következtében a transzformált E/K diagramm már csak egyszerű attribútumokat tartalmaz valamint egy - egy és egy - több kapcsolatokat. A transzformáció menete:
Egyedekből lesznek a táblák
Az egyedekhez tartozó attribútumok adják a táblák oszolpait
Egy - egy kapcsolatok esetén az egyik táblába idegen kulcsot kell elhelyezni a másik táblába
Egy - több kapcsolatok esetében a gyerek táblában kell elhelyezni egy idegen kulcsot a szülő táblára.
A relációs séma létrehozására az SQL nyelv DDL (Data Definition Language) utasításai szolgálnak. A táblák létrehozásakor meg kell adni az egyes oszlopok típusát. Az egyes Oracle Server adattípusokról ad rövid áttekintést a következő táblázat.
Típus |
Leírás |
Char(n) |
Fix (n karakter) hosszúságú szöveg. |
Varchar(n) |
Változó hosszúságú szöveg, a szöveg maximális hossza n. |
Varchar2(n) |
Ugyan az mint a Varchar, kompatibilitási okok miatt a Varchar2 típus használata ajánlott. |
Number(sz,p) |
Numerikus adattípus, sz jegynyi egész részből és p jegynyi tizedes részből áll. |
Date |
Dátum típus |
A táblák létrehozására a Create table utasítás szolgál:
CREATE TABLE táblanév (
oszlop név ADATTÍPUS [DEFAULT érték] [NULL|NOT NULL] oszlop szintű megszorítások,
oszlop név ADATTÍPUS [DEFAULT érték] [NULL|NOT NULL] oszlop szintű megszorítások,
tábla szintű megszorítások )
Tábla definiálása során megadható megszorítások:
Néhány példa táblák létrehozására.
Create table diak(
Azonosito number primary key,
Nev Varchar2(50) not null,
Adoszam number not null unique,
Szak Varchar2(40) default 'Villamosmernok')
Create table tantargy(
Azonosito number primary key,
Nev Varchar2(30))
Create table vizsgaeredmeny(
DiakAZ number references diak(Azonosito),
TargyAZ number refeences tantargy(Azonosito),
VizsgaDatum date,
Erdemjegy number,
Primary key (DiakAZ, TantargyAZ, VizsgaDatum))
A mérés során egy hasonló specifikációból kiindulva kell megoldani a feladatsort. A laborban megoldandó feladat egy komplexebb rendszer specifikációját tartalmazza.
Egy építőanyag kereskedés szeretné nyilvántartani az egyes termékeit, és azokból rendelkezésre álló raktárkészletet, beszállítóit és megrendelőit. Egy megrendelőnek több telephelye is lehet, az egyes megrendeléseket a megadott telephelyre szállítják ki. Ugyanakkor az egyes vevőknek van egy központi lepehelye is, ahova a számlákat küldik. Egy vevő egyszerre több terméket is megrendelhet egyszerre akár több különböző telephelyre is. Egyes termékeknek lehet több beszállítója is, valamint egy beszállító több terméket is szállíthat. A termékek egy részét a kereskedés saját maga állítja elő a beszállítók által hozott anyagokból. A rendszerben ezeket is nyilván szeretnénk tartani, valamint az ezek előállításához szükséges anyagmennyiségeket. Természetesen az előállított termékekből is rendelkezünk raktárkészlettel.
A több - több kapcsolatokat át kell alakítani összekapcsoló entitássá. A kialakuló relációs séma:
Megrendelo(AZ, Nev, KozpontiThelyAZ)
Telephely(AZ, Varos, Utca, IrSzam, Tel, Fax, MegrendeloAZ)
Termek(AZ, Nev, Leiras, Mennyiseg
Beszallito(AZ, Nev, Cim)
Szallit(TermekAz, SzallitoAZ)
Vasarol(ThelyAZ, TermekAZ, Datum, Mennyiseg)
Alkotja(GyarmanyAZ, AlkotjaAZ, Mennyiseg )
Create table Megrendelo(
AZ number primary key,
Nev Varchar2(40) not null,
KozpontiThely number);
Create table Telephely(
AZ number primary key,
Varos Varchar2(40) not null,
Utca Varchar2(40) not null,
Irszam char(4) not null,
Tel Varchar2(15) not null,
Fax Varchar2(15) not null,
MegrendeloAZ number not null references Megrendelo(AZ))
Alter Table Megrendelo add (foreign key (KozpontiThely) references Telephely(AZ));
Create table Termek(
AZ number primary key,
Nev Varchar2(20),
Leiras Varchar2(200),
Mennyiseg number);
Creata table Alkotja(
GyartmanyAZ number references Termek(AZ),
AlkotjaAZ number references Termek(AZ),
Mennyiseg number,
Primary key(GyartmanyAZ, AlkotjaAZ));
Create table Beszallito(
AZ number primary key,
Nev varchar2(50),
Cim Varchar2(100));
Create table Szallit(
TermekAZ number not null references Termek(AZ)
SzallitoAZ number not null teferences Szallito(AZ),
Primary key (TermekAZ, SzallitoAZ));
Create table Vasarol(
ThelyAZ number not null refernces Telephely(AZ),
TermekAZ number not null references Termek(AZ),
Datum date not null,
Mennyiseg number,
Primary key (ThelyAZ, TermekAZ, Mennyiseg))
:
2385