Szponzorált hirdetés

2007. június 8.

OKJ vizsga programozó - Adatbázis kezelés XXI. tétel

22. A Delphi adatelérési komponensei, fontosabb jellemzőik, használatuk

Session : adatbázis-kapcsolatok kezelésére használatos, egy példány mindenképpen létrejön belőle minden adatbázisos alkalmazás esetén. Ez végzi a hagyományos adatbázis-kapcsolat kezelését. Több példány kell belőle, ha többszálú adatbázisos alkalmazást készítünk, vagy Paradox táblákat akarunk hálózaton megosztani és kezelni.

Database: egy adatbázissal épít ki kapcsolatot.

Fontosabb jellemzői:

AliasName: az adatbázis álneve

DatabaseName: az adatbázis neve, a többi adatelérési komponens ezzel a névvel hivatkozik az adatbázisra.

Table (tábla): közvetlen elérést biztosít egy tábla rekordjaihoz.

Fontosabb jellemzői:

DatabaseName: az adatbázis neve

TableName: az adatbázisban található tábla neve

MasterSource: fő-segéd űrlap kialakításakor az egy oldali adatforrásra mutat

MasterField: fő-segéd űrlap kialakításakor a kapcsolómezőre mutat

Hivatkozás a mezőkre:

Perzisztens mezők: mindegyikhez tartozik egy egyedi komponens, ezzel a névvel érhetjük el.

Dinamikus mezők: Táblanév.FieldByName('mezőnév').AsString

Típusmódosítók: AsString, AsInteger, AsFloat, stb.

Fontosabb metódusai:

Open: a tábla megnyitása

Close: a tábla lezárása

EOF: visszatérési értéke True, ha a tábla utolsó rekordján állunk

BOF: visszatérési értéke True, ha a tábla első rekordján állunk

First: az első rekordra ugrik

Last: az utolsó rekordra ugrik

Next: a következő rekordra ugrik

Prior: az előző rekordra ugrik

Insert: új rekord beszúrása

Delete: az aktuális rekord törlése

Edit: az aktuális rekord szerkesztése

Post: az aktuális rekordon végzett módosítások mentése

Query (lekérdezés): az adatbázis egy vagy több tábláját érhetjük el vele SQL utasítások segítségével.

DatabaseName: az adatbázis neve

SQL: a lekérdezés SQL kódja

Params: paraméteres lekérdezés esetén ebben a gyűjteményjellemzőben jelennek meg a paraméterek jellemzői (a paraméterek az SQL kódban kettősponttal kezdődnek)

Fontosabb metódusai:

Open: csak SELECT típusú lekérdezés esetén használható, lefuttatja a lekérdezést

ExecSQL: minden egyéb lekérdezéshez (UPDATE, DELETE, stb.) használható, lefuttatja a lekérdezést

Prepare: az adatbázis-kiszolgálót felkészíti paraméteres lekérdezések fogadására

ParamByName: a paraméterek név szerinti elérésére használható, lásd FieldByName

StoredProc (tárolt eljárás): adatbázis-kezelő utasítások egy olyan csoportja, mely az adatbázis metaadatai között tárolódik. Az utasítások a szerveren hajtódnak végre és az eredményt a kliensnek küldik el.

DataSource (adatforrás) Az adatelérési és adatmegjelenítési komponenseket kapcsolja össze.

OKJ vizsga programozó - Adatbázis kezelés XX. tétel

19. Az ADO OLEDB objektummodell általános ismertetése

Az ADO egy COM objektummodell, ami az OLE DB nevű adatbázis-kezelő komponens „tetején” működik. Az OLE DB bevezetésének célja az volt, hogy adatbázistól független, uniform adatkezelési felületet nyújtson a programozóknak. Az OLE DB-t és a különféle adatbázisokat providereknek nevezett szoftverkomponensek kapcsolják össze (ezeket a providereket általában az egyes adatbázis-kezelők gyártói készítik, de a Windows önmagában is tartalmaz néhányat). Az ADO tehát nem más, mint egy COM felület az OLE DB felett, ami lehetővé teszi, hogy azt minden ActiveX-kompatíbilis nyelvből elérhessük(Visual Basic-ből, Delphi-ből) – míg az OLE DB-t szinte csak a C programozók használták. Az uniformizált adatelérés ötlete nem új: a Windows évek óta tartalmazza az úgynevezett ODBC réteget. Az ODBC hasonló módon működik, mint az OLE DB: az adatforrások és az ODBC közötti kapcsolatot ott is külön „eszközmeghajtók”, termékspecifikus ODBC driverek tartották fenn. Az ADO előnye, hogy az OLE DB providereknek köszönhetően az ODBC kikerülésével is elérhetjük az adatforrásokat – ugyanakkor létezik egy OLE DB provider, ami lehetővé teszi, hogy ADO-n keresztül ODBC adatforrásokat kezeljünk.

· Connection objektum: az egyik legfontosabb objektum, egy adatbázissal való kapcsolatot reprezentál. A munkát általában a Connection objektum létrehozásával, majd az adatbázishoz való kapcsolódással kezdjük

· Recordset objektum: a másik legfontosabb objektum. A Recordsetet kezdetben úgy képzeljük el, mint egy eredménytáblát, amelyben soronként találhatók a rekordok. Minden rekordnak több mezője (Field) lehet (extrém esetben akár minden rekordnak más és más), ezek a mezők a táblázat oszlopai.

· Field objektum, Fields kollekció: Egy rekord (vagy Recordset) egy mezője. A Field objektumokat általában a Fields kollekció segítségével érjük el.

· Record objektum: egy Recordset egy sora, vagy akár egy különálló rekord. A Record objektum is mezőkkel (Fields) rendelkezik.

· Command objektum: parancsok, beépített eljárások, lekérdezések futtatására használható objektum. Lényegesek a hívott eljárás bemenő paraméterei (Parameters kollekció, Parameter objektumok); eredményként általában (bár nem feltétlenül) Recordset-et kapunk vissza.

· Stream objektum: bináris és szöveges folyamok, adatok kezelésére, mozgatására használható objektum.

· Property objektum, Properties kollekció: az objektumoknak sok olyan jellemzőjük van, ami közvetlenül nincs kivezetve. Ezeket a jellemzőket név szerint, az adott objektum Properties kollekciójában található Property objektumokon keresztül érhetjük el.

· Error objektum, Errors kollekció: az adatkezelés közben felmerült hibákat tartalmazza.

OKJ vizsga programozó - Adatbázis kezelés XIX. tétel

19. SQL lekérdezések

1.7 Adatok lekérdezése - SELECT

A SELECT utasítás hatására a Microsoft adatbázis-motor rekordhalmaz formátumú adatokat ad az adatbázisról.

Szintaxis:

SELECT [tábla.]mező1 [AS alias1], [tábla.]mező2 [AS alias2] …

FROM tábla1, tábla2, ...

[WHERE... ]

[GROUP BY... ]

[HAVING... ]

[ORDER BY... ]

A SELECT utasítás részei:

Tábla - A tábla neve, amely a kiválasztandó rekordok mezőit tartalmazza.

mező1, mező2 - A mező neve, amelyben az adatokat keressük. Ha több mezőt jelölünk meg, azok a megjelölt sorrendben lesznek visszakeresve.

alias1, alias2 - A tábla eredeti oszlopnevei helyett használandó oszlop fejlécek.

tábla1, tábla2 - A tábla vagy táblák neve, amelyekből az adatokat vissza szeretnénk keresni.

Megjegyzés:

Az utasítás végrehajtásakor a Microsoft Jet adatbázis-motor megkeresi a meghatározott tábla vagy táblák megadott oszlopait, kiválasztja a feltételeknek megfelelő sorokat, majd sorba rakja és csoportosítja azokat a megadott sorrendnek megfelelően.

A SELECT utasítás nem változtatja meg az adatbázis adatait.

1.7.1 Legegyszerűbb alak:

A csillag (*) használatával a tábla minden mezőjét kiválasztjuk. A következő utasítás az Alkalmazottak tábla minden mezőjét kijelöli:

SELECT * FROM Alkalmazottak;

1.7.2 Az ismétlődő sorok elnyomása (DISTINCT)

Ha azt szeretnénk megtudni, hogy milyen országból származnak vevőink, akkor az ismétlődő sorokat el kell nyomni, hiszen egy adott országból több vevő is származhat.

SELECT DISTINCT Ország FROM Vevők;

1.7.3 A WHERE záradék használata:

Meghatározza, hogy a FROM záradékban felsorolt táblák mely rekordjait érintik a SELECT, UPDATE vagy DELETE utasítások.

Példák:

A következő példa minden olyan rekord Vezetéknév és Keresztnév mezőjét kijelöli, melyben a vezetéknév “King”.

SELECT Vezetéknév, Keresztnév FROM Alkalmazottak

WHERE Vezetéknév = 'King';

A következő példa az Alkalmazottak táblában minden olyan rekord Vezetéknév és Keresztnév mezőjét kijelöli, amelyben a vezetéknév S betűvel kezdődik.

SELECT Vezetéknév, Keresztnév FROM Alkalmazottak

WHERE Vezetéknév Like 'S*';

1.7.4 Táblák összekapcsolása – INNER JOIN

Egyesíti két tábla rekordjait, ha azok közös mezőjében azonos érték szerepel.

Szintaxis:

FROM tábla1 INNER JOIN tábla2 ON tábla1.mező1 hasonlító_művelet tábla2.mező2

Az INNER JOIN művelet a következő részekből áll:

tábla1, tábla2 - A két tábla neve, melyek rekordjaiból az egyesített rekordok készülnek.

mező1, mező2 - Az egyesítendő mezők neve. Ha a mezők nem szám típusúak, ugyanolyan adattípushoz kell tartozniuk, ugyanolyan jellegű adatokat kell tartalmazniuk, de a nevük lehet különböző.

Hasonlító_művelet - Bármely összehasonlító művelet: "=", "<", ">", "<=", ">=" vagy "<>".

Megjegyzés:

Az INNER JOIN művelet bármely FROM záradékban használható. Ez az illesztés leggyakoribb fajtája. Egyesíti két tábla rekordjait, ha azok közös mezőjében azonos érték szerepel.

Az INNER JOIN művelet segítségével kiválogathatjuk a Részlegek és az Alkalmazottak táblából minden részleg összes alkalmazottját. Ezzel szemben, ha az összes részleget szeretnénk kiválogatni (akkor is, ha némelyikhez nincs alkalmazott rendelve), vagy az összes alkalmazottat (akkor is, ha egyesek nem tartoznak egyik részleghez sem), a LEFT JOIN vagy RIGHT JOIN művelettel létesíthetünk laza illesztést.

Példa:

A következő példa azt mutatja, hogyan illeszthető a Kategóriák és a Termékek tábla a Kategóriakód mező segítségével:

SELECT Kategórianév, Terméknév

FROM Kategóriák INNER JOIN Termékek

ON Kategóriák.Kategóriakód = Termékek.Kategóriakód;

A példában a Kategóriakód az illesztett mező, de a lekérdezés eredményében nem jelenik meg, hiszen nem szerepel a SELECT utasításrészben. Ha az illesztett mezőt is meg szeretnénk jeleníteni, be kell azt (a fenti példában a Kategóriák.Kategóriakód mezőt) írni a SELECT után.

1.7.5 Eredménysorok csoportosítása (GROUP BY záradék)

A megadott mezőben az azonos értékű rekordokat egy rekorddá alakítja át. Összesítő érték hozható létre minden rekordról, ha SQL összesítő függvényt, mint például a Sum vagy a Count függvényt, írunk be a SELECT utasításba.

Példák:

A következő példa szállítónként kiszámítja a termékek átlagos egységárát, és az árlistát szállítónként csoportosítja.

SELECT Szállítókód, Avg(Egységár) AS [Átlagos egységár]

FROM Termékek GROUP BY Szállítókód;

A következő példa kategóriánként meghatározza a legmagasabb egységárú terméket.

SELECT Kategóriakód, Max(Egységár) AS [Legnagyobb egységár]

FROM Termékek GROUP BY Kategóriakód;

1.7.6 Csoportosított eredmények szűrése (HAVING záradék)

A záradékban megadhatjuk, hogy a SELECT utasítás GROUP BY záradékával csoportosított rekordok közül melyek legyenek megjelenítve. Miután a GROUP BY csoportosítottuk a rekordokat, a HAVING záradékban megadott feltételeknek megfelelő összes rekord megjelenik a képernyőn.

Példák:

A következő példa kikeresi azokat a szállítókat, akik által szállított termékek átlagos egységára 2500 forint fölött van.

SELECT Szállítókód, Avg(Egységár) AS [Átlagos egységár]

FROM Termékek GROUP BY Szállítókód

HAVING (Avg(Egységár)>2500);

A következő példa kijelöli azokat az alkalmazottakat, akik több, mint 100 rendelést bonyolítottak le.

SELECT Alkalmazottkód, Count(Rendeléskód) AS [Rendelések száma]

FROM Rendelések GROUP BY Alkalmazottkód

HAVING Count(Rendeléskód) > 100;

1.7.7 Eredménysorok rendezése (ORDER BY záradék)

A lekérdezés eredményeként kapott rekordok megadott mezőit növekvő vagy csökkenő sorrendbe rendezi.

Példák:

Az alábbi SQL utasítások az ORDER BY záradék segítségével rendezik a rekordokat betűrendbe, illetve kategória szerint.

A következő példa a rekordokat vezetéknév szerint rendezi visszafelé betűrendbe (Z-től A-ig).

SELECT Vezetéknév, Keresztnév FROM Alkalmazottak ORDER BY Vezetéknév DESC;

OKJ vizsga programozó - Adatbázis kezelés XVIII. tétel

18. Legfontosabb SQL utasítások

1.1 Tábla létrehozása: CREATE TABLE

Szintaxis:

CREATE TABLE tábla_neve

(

mező1 típus [(méret)] [NOT NULL] [ CONSTRAINT…],

mező2 típus [(méret)] [NOT NULL] [ CONSTRAINT…],

);

A CREATE TABLE utasítás részei:

tábla - A létrehozandó tábla neve

mező1, mező2 - Az új tábla mezőjének vagy mezőinek neve. Legalább egy mezőt létre kell hoznunk.

típus - Az új tábla mezőjének adattípusa

méret - A mező mérete karakterben (csak Szöveg és Bináris mezőnél)

NOT NULL - Kötelező adatbevitel

CONSTRAINT … - Megkötések egy mezőre

Példák:

(Ha az azonosítóban szóköz van, akkor azt szögletes zárójelbe kell tenni!!!) A következő példa létrehoz egy új táblát két Szöveg típusú és egy Dátum/Idő típusú mezővel, továbbá egy egyedi indexszel, amely mindhárom mezőt tartalmazza:

CREATE TABLE [Próba Tábla2]

(

Vezetéknév TEXT,

Keresztnév TEXT,

[Születési dátum] DATETIME,

CONSTRAINT TöbbmezősIndexNeve UNIQUE (Vezetéknév, Keresztnév, [Születési dátum])

A következő példa létrehoz egy új táblát elsődleges- és idegenkulccsal, és mindenféle csingilingivel:

CREATE TABLE [Próba Tábla4]

(

Rendeléskód INTEGER CONSTRAINT ElsődlegesKulcsNeve PRIMARY KEY,

Címzett TEXT NOT NULL,

Irányítószám TEXT CONSTRAINT EgyediIndexNeve UNIQUE,

Vevőkód TEXT (5) CONSTRAINT KülsőKulcsNeve REFERENCES Vevők

);

1.2 Indexek létrehozása – CREATE INDEX

Új index létrehozása a már létező táblán

Szintaxis:

CREATE [ UNIQUE ] INDEX index_neve

ON tábla

(

mező1 [ASC|DESC],

mező2 [ASC|DESC],

[WITH…]

);

A CREATE INDEX utasítás részei:

UNIQUE – Egyedi index (ismétlődések nem fordulhatnak elő a mezőben)

index - A létrehozandó index neve

tábla - A tábla neve, amelyet indexelni akarunk.

mező - A indexelendő mező(k) neve(i). Egymezős index esetén írjuk a mező nevét zárójelben a tábla neve után. Többmezős index esetén soroljuk fel azokat a mezőket, amelyekre az index vonatkozik. Csökkenő sorrend létrehozásához használjuk a DESC foglalt szót; egyébként a sorrend növekvő (ASC).

WITH – Ezzel a záradékkal az adatok érvényességi szabályait határozhatjuk meg (megadása nem kötelező):

A DISALLOW NULL beállítással tilthatjuk a Null értékű bejegyzéseket az új rekordok mezőibe.

Az IGNORE NULL beállítás esetén a Null értékű mezővel rendelkező rekordok nem fognak az indexben szerepelni.

A PRIMARY beállítással az indexelt mező(ke)t elsődleges kulcsként jelöljük meg. Ez magába foglalja a kulcs egyediségét is, ezért nem kell a UNIQUE foglalt szót használnunk.

Példák:

A következő példa létrehoz az Alkalmazottak táblához egy új indexet, mely az Otthoni telefon és a Mellék mezőből áll.

CREATE INDEX ÚjIndexNeve ON Alkalmazottak (Otthoni telefon, Mellék);

A következő példa létrehoz a Vevők táblához egy új indexet a Vevőkód mező alapján. Nem létezhet két rekord ugyanazzal a Vevőkód értékkel, és nincs engedélyezve a Null érték.

CREATE UNIQUE INDEX CustID ON Vevők (Vevőkód) WITH DISALLOW NULL;

1.3 Indexek törlése – DROP INDEX

Szintaxis:

DROP INDEX index_név ON táblanév;

Példa:

Az előző példában létrehozott indexet a DROP utasítás segítségével lehet törölni. A tábla Tervező nézetében az index kizárólag akkor törölhető, ha a Vevők táblához tartozó kapcsolatot is töröljük. A következő kódrészlet a DROP utasítás segítségével törli az új indexet.

DROP INDEX CustID ON Vevők;

1.4 Adatbevitel táblákba – INSERT INTO

Egy vagy több rekordot ad hozzá a táblához. Ezt hozzáfűző lekérdezésnek hívják.

Szintaxis:

Több rekordot létrehozó hozzáfűző lekérdezés:

INSERT INTO cél_tábla [(mező1, mező2, ...)]

SELECT [mező1, mező2, ...]

FROM forrás_tábla;

Egyetlen rekordot létesítő hozzáfűző lekérdezés:

INSERT INTO cél_tábla [(mező1, mező2, ...)]

VALUES (érték1, érték2, ...);

Az INSERT INTO utasítás a következő részekből áll:

Cél_tábla - A tábla neve, melyhez hozzá szeretnénk fűzni az új rekordokat.

Forrás_tábla - A tábla vagy lekérdezés neve, melyből a rekordokat át szeretnénk másolni.

mező1, mező2 - Ha cél argumentum után szerepelnek, az új rekordban kitöltendő mezők nevei, ha forrás argumentum után szerepelnek, akkor ezekből a mezőkből veendők az adatok.

érték1, érték2 - Az új rekord egyes mezőibe írandó értékek. Minden érték a vele a listában azonos pozíción szereplő mezőbe kerül: az érték1 a mező1-be, az érték2 a mező2-be, és így tovább. Az értékeket vesszővel választjuk el és a szöveges értékeket idézőjelbe (" ") tesszük.

Példák:

Ha ki szeretnénk próbálni a következő példákat, akkor hozzunk létre egy másolatot a Vevők tábláról Vevők2 névvel (csak a struktúrát másolja le).

A következő példa létrehoz egy új rekordot az Alkalmazottak táblában:

INSERT INTO Alkalmazottak (Keresztnév, Vezetéknév, Beosztás)
VALUES ('Pista', 'Budai', 'Gyakornok');

A következő példa egy feltételezett Tanulók táblából kiválaszt minden olyan gyakornokot, aki több, mint 30 napja van a vállalatnál, és az őket tartalmazó rekordokat hozzáadja az Alkalmazottak táblához.

INSERT INTO Alkalmazottak SELECT Gyakornok.* FROM Tanulók
WHERE [Belépés dátuma] <>

1.5 Adatok módosítása - UPDATE

Frissítő lekérdezést hoz létre, amely a megadott tábla mezőit módosítja a megadott feltétel alapján.

Szintaxis:

UPDATE tábla

SET új érték

WHERE feltétel;

Az UPDATE utasítás a következő részekből áll:

Tábla - Azon tábla neve, amelynek adatait módosítani szeretnénk.

új érték - Az a kifejezés, amely meghatározza, milyen érték kerül be a módosítandó rekordok egyes mezőibe.

Feltétel - Az a kifejezés, amely meghatározza, mely rekordok módosulnak. Csak a kifejezésnek eleget tevő rekordok változnak.

Megjegyzés:

Az UPDATE különösen akkor hasznos, amikor sok rekordot szeretnénk módosítani, vagy amikor a módosítandó rekordok több különböző táblában vannak.

Egyszerre több mezőt is módosíthatunk.

Az UPDATE nem hoz létre eredményhalmazt. Ha a rekordokat frissítő lekérdezéssel módosítjuk, a műveletet nem lehet visszavonni. Ha látni szeretnénk, mely rekordok módosulnának, először futtassunk le egy választó lekérdezést ugyanolyan feltétellel, s ennek eredményét vizsgáljuk meg. Csak ezután futtassuk le a módosító lekérdezést.

Az adatokról mindig legyen másolatunk. Ha rossz rekordokat módosítunk, a másolatból helyreállíthatjuk az eredeti adatokat.

Példák:

A következő példa minden olyan rekord Felettes mezőjét 5-re állítja, amelynek jelenleg 2 az értéke.

UPDATE Alkalmazottak SET Felettes = 5 WHERE Felettes = 2;

A következő példa minden olyan termék egységárát csökkenti 5 százalékkal, amely a Tokyo Traders nevű szállítótól származik, és amelyből van raktáron. A Termékek és a Szállítók tábla között több-az-egyhez kapcsolat van.

UPDATE Szállítók INNER JOIN Termékek

ON Szállítók.Szállítókód = Termékek.Szállítókód SET Egységár = Egységár * .95

WHERE Cégnév = 'Tokyo Traders' AND Raktáron>0;

1.6 Adatok törlése - DELETE

Létrehoz egy törlő lekérdezést, amely a FROM záradékban felsorolt táblákból törli azokat a rekordokat, amelyek eleget tesznek a WHERE záradék feltételének.

Szintaxis:

DELETE * FROM tábla

WHERE feltétel

A DELETE utasítás két részből áll:

Tábla - A tábla neve, amelyből a rekordokat törölni kell

Feltétel - A törlendő rekordokat kijelölő kifejezés

Megjegyzés

A DELETE különösen hasznos, ha sok rekordot szeretnénk törölni

Egész táblát a DROP TABLE utasítással töröljünk. Ha az egész táblát töröljük, akkor annak szerkezete is elvész. Ezzel szemben a DELETE használatakor csak az adatok törlődnek, a tábla szerkezete és minden jellemzője (például a mezőnevek, az indexek) érintetlen marad.

A DELETE segítségével olyan táblákból is törölhetünk rekordokat, amelyek más táblákkal egy-a-többhöz kapcsolatban állnak. Kaszkádolt törlésnél a kapcsolat "több" oldalán levő rekordok is törlődnek, ha a kapcsolat "egy" oldalán levő rekordot törli a lekérdezés. Például a Vevők és a Rendelések tábla esetében a Vevők vannak az "egy" oldalon, a Rendelések a "több" oldalon. Kaszkádolt törlés használatakor a Vevők táblából törölt rekordokkal együtt a hozzájuk tartozó Rendelések rekordok is törlődnek.

A törlő lekérdezés nem egyes mezők adatait törli, hanem a teljes rekordokat. Ha egyes mezők adatait szeretnénk törölni, használjunk frissítő lekérdezést, ami a mezők értékét Null értékre változtatja.

A törlő lekérdezés nem vonható vissza, a törölt rekordok elvesznek. Ha látni szeretnénk a törlendő rekordokat, akkor a törlés előtt először vizsgáljuk meg egy ugyanolyan feltételt használó választó lekérdezés eredményét.

Mindig legyen biztonsági mentés az adatokról. Így ha rossz rekordokat töröltünk, ezek visszanyerhetők.

Példa:

Ha a következő példát ki szeretnénk próbálni, akkor adjunk néhány rekordot az Alkalmazottak táblához, és a Beosztás mezőbe írjuk be a “Gyakornok” értéket.

A következő példa töröl az Alkalmazottak táblából minden olyan rekordot, amelyben a Beosztás mező értéke “Gyakornok”.

DELETE * FROM Alkalmazottak WHERE Beosztás = 'Gyakornok';

OKJ vizsga programozó - Adatbázis kezelés XVII. tétel

17. Ismertesse a beviteli maszk, validáció és formátumkód fogalmát

A beviteli maszk segítségével megkönnyíthetjük az adatbevitelt, de a hibás adatok kiszűrését is, hiszen meghatározhatjuk, milyen jellegű adatok vihetők be a mezőbe. A beviteli maszk tulajdonképpen egy karaktersorozat, amely meghatározott jelentésű karakterekből állhat. Például Access esetén ha egy irányítószám részére kívánunk beviteli maszkot létrehozni, használhatjuk a 9999 karakterláncot. Ebben az esetben azt adtunk meg, hogy négy karakter hosszú szöveget engedélyezünk bevinni (négy darab kilences), csak számjegyet engedélyezünk, de nem kötelező mind a négy számjegy kitöltése (ez a kilences számjegy jelentése). Ha nullákat írnánk, az azt jelentené, hogy mind a négy számjegyet meg kell adni.

Formátumkód: a mező megjelenítési formátuma

Példa: Tegyük fel, hogy van egy mezőnk melyben az áruk mennyiségét tároljuk

Ha az ehhez tartozó formátumkód "0 darab", akkor a mennyiség információt mindig követni fogja a "darab" karakterlánc. Nulla mennyiség esetén "0 darab" jelenik meg. Ha a "# darab" formátumkódot adnánk meg, akkor nulla mennyiség esetén csupán "darab" jelenne meg.

Validáció: egy mezőszintű ellenőrzést megvalósító feltétel, mely még az adatbázisba való lementés előtt lefut.

Példa: Ha egy személy nemét egy karakteren tároljuk, akkor a lehetséges értékek legyenek "F" és "N". A feltétel beállítása után más karaktert nem vihetünk be, különben hibaüzenetet kapunk.

OKJ vizsga programozó - Adatbázis kezelés XVI. tétel

16. A kulcsok szerepe, az indexelés, az azonosítás

Azt az tulajdonságot, amely a reláció minden sorára eltérő értéket vesz fel, és így azokat megkülönbözteti (egyértelműen azonosítja), elsődleges kulcsnak (primary key) nevezzük. Az elsődleges kulcs értéke nem lehet üres (null) vagy ismeretlen. Az elsődleges és idegen kulcsokat a legtöbb adatbázis-kezelő automatikusan indexeli. Az elsődleges kulcs kiválasztásakor a következő esetek fordulnak elő:

· A relációban felfedezünk egy és csakis egy ilyen tulajdonságot (pl. autók esetében a rendszámot)

· Több ilyen tulajdonság is létezik (ezek kulcsjelöltek), ilyenkor az egyiket kinevezzük elsődleges kulcsnak a többi alternatív kulcsként szolgálhat.

· A relációban nincs olyan oszlop mely egyedi értéket vesz fel:

· Több oszlopot választunk (összetett kulcs, vagy csupa-kulcs reláció).

· Mesterségesen hozunk létre a relációhoz egy oszlopot, amely miden sora egyedi értékeket vesz fel.

Azt a tulajdonságot, amely az egyik táblában nem elsődleges kulcs, de a másikban az, és így képes összefüggést teremteni a kettő között, idegen kulcsnak (foreign key), vagy külső kulcsnak nevezzük. A relációs adatbázis azáltal szerveződik egységgé, hogy táblái között idegen kulcsok teremtenek összefüggéseket.

OKJ vizsga programozó - Adatbázis kezelés XV. tétel

15. Adatszerkezet és elérés mód, az indexelés

Az indexelés egyfajta eljárás az adatok keresésének meggyorsításához. Az indexek valójában a logikai sorrendnek megfelelően a fizikai rekordsorszámokat tárolják. Az SQL adatbázis-kezelők automatikusan létrehoznak egyedi indexet az elsődleges és az idegen kulcsokhoz. Nem célszerűi indexelni azokat a mezőket, amelyek értékei gyakran változnak. Az indexelés a keresés gyorsítása mellett többlet-helyfoglaláshoz vezet. Jóllehet egy indexrekord általában sokkal rövidebb, mint az adatbázis megfelelő rekordja, egyfajta meggondolatlan indexelés jelentősen növelheti az adatbázis tárigényét.

OKJ vizsga programozó - Adatbázis kezelés XIV. tétel

14. Az ER relációs modell leképezési szabályai

1. Minden egyed-típusból reláció-típus lesz, amelyben az attribútumok az egyed-típus attribútumai, az elsődleges kulcs pedig a kulcs-attribútum lesz.

2. Minden 1:1 kapcsolat-típushoz tartozó relációpárnál kiegészítjük azt a relációt, amelynek egyedei tejesen részt vesznek a kapcsolatban, éspedig a részlegesen résztvevő egyed-reláció elsődleges kulcsával, mint idegen kulccsal. Ha a kapcsolatnak vannak attribútumai, akkor azokkal is kiegészítjük a teljesen résztvevő egyednek megfelelő reláció attribútumait. Ha az elsődleges kulcsok jelentése azonos a két relációban, akkor az egyik elsődleges kulcs egyben idegen kulcs is.

3. Minden 1:N kapcsolat-típushoz tartozó relációpárnál kiegészítjük a N oldalon levő relációt az 1-oldal elsődleges kulcsával, mint idegen kulccsal.

4. Minden M:N kapcsolat-típusból új relációt hozunk létre, amelynek elsődleges kulcsa az M és az N oldalon levő reláció elsődleges kulcsaiból képzett összetett kulcs; az összetett kulcs komponensei idegen kulcsokként szerepelnek. Ha a kapcsolat-típusnak vannak attribútumai (ez gyakori eset), akkor ezek az új relációban is attribútumok lesznek.

N-ágú kapcsolat

A leképezési szabály lényegében a 4. szabályhoz hasonló, csupán az összetett kulcs nem két hanem három komponensből áll. Az egyes komponensekkel, mint idegen kulcsokkal hivatkozhatunk a N-ágú kapcsolatban résztvevő egyedtípusokból nyert relációkra.

Többértékű attribútum

Amíg a relációs adatmodell nem tűri el a többértékű attribútumot addig az ER modellben feltételezhetünk ilyent.. A többértékű (multivalued) attribútum jelölésére az ER modellben kettős ellipszist használnak.

A leképzési szabály szerint többértékű attribútum esetén:

1. Új relációt hozunk létre, amelynek elsődleges kulcsa a többértékű attribútumot tartalmazó reláció elsődleges kulcsából és a többértékű attribútumból alkotott összetett kulcs. Az eredeti reláció elsődleges kulcsának megfelelő komponens az új reláció idegen kulcsa lesz.

2. Az eredeti relációban megszüntetjük a többértékű attribútumot.

A gyenge egyed

Egy egyed gyengeségét az adja, hogy azonosításához szükség van egy azonosító egyedre is, mert saját kulcsa (ha van) nem azonosítja egyértelműen. (pl. Nagy Ubulból több is lehet, de akinek az anyja Rézbányai Amália, olyan csak egy van.)

A gyenge egyed-típust és a hozzátartozó, azonosító kapcsolatot kettős vonallal szokták jelölni. A könnyebb rajzolás kedvéért szaggatott vonalat is használunk ugyanerre a célra.

Leképezési szabálya: A gyenge egyedből képzett reláció elsődleges kulcsa összetett kulcs, amely az azonosító egyednek megfelelő reláció elsődleges kulcsából és a gyenge egyed parciális kulcsából áll. A szülőreláció elsődleges kulcsa egyben idegen kulcs is.