HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Adatbázis kialakítása


Paradox használata hálózatban 1. rész

Példaprogram letöltése

37640 bájt

Új sorozatunk keretén belül megismerkedünk a paradox adattáblák használatával hálózatban, egy orvosi, betegnyilvántartó program elkészítésén keresztül. Először elkészítünk egy master-detail kapcsolatokon alapuló adatbázis kezelő programot, majd a legvégén programunkat egy hálózatos rendszerbe illesztjük. A sorozat segítségével lépésről-lépésre nyomon követhetjük egy hálózatos adatbázis kezelő alkalmazás elkészítését. Az első részben az adatbázis elkészítésével és a master-detail kapcsolatok kialakításával foglalkozunk.

Hozzunk létre egy új mappát, programunk számára. A mappán belül pedig egy újabb mappát, az adatbázis számára.
Három adattáblát fogunk használni. Nyilvántartjuk az orvosokat, betegeket, valamint a betegek vizsgálatait, panaszokkal, diagnózisokkal és javallatokkal együtt.
A Magyarországon működő háziorvosi rendszert próbáljuk meg feldolgozni, ahol egy beteg egy háziorvoshoz tartozik.
Az adatbázis kialakítása szempontjából a beteg alá van rendelve az orvosnak, a vizsgálatok pedig alá vannak rendelve a betegeknek. Ezek master – detail kapcsolatokat fognak alkotni.
A szükséges adatszerkezet a következő. (A táblázatokban a paradox-nak megfelelő elnevezéseket használjuk, úgy ahogyan azok a DatabaseDesktop segédprogramban szerepelnek.)
Orvosok.db
Field Name Type Size
Okod Autoincremet -
ONev Alpha 100
Jelszo Alpha 15
Másodlagos index: ONev alapján.
OKod: Orvos kódja. Kulcsmező a táblában.
ONev: Orvos neve.
Jelszo: Az orvos bejelentkezéséhez szükséges jelszó.
Betegek.db
Field Name Type Size
BKod Autoincrement -
OKod Long Integer -
BNev Alpha 100
AnyjaNeve Alpha 100
IRSZ Alpha 4
Telepules Alpha 50
Cim Alpha 100
SzulIdo Date -
SzulHely Alpha 50
Telefon Alpha 15
Másodlagos index: OKod, BNev alapján.
BKod: Beteg kódja. Kulcsmező a táblában.
OKod: A beteg orvosát azonosítja az Orvosok.db táblában.
BNev: Beteg neve.
AnyjaNeve: Beteg anyja neve.
IRSZ, Telepules, Cim: A beteg lakcím adatai.
SzulIdo: Beteg születési ideje.
SzulHely: Beteg születési helye.
Telefon: Telefonszám, amin a beteget esetleg el lehet érni.
Vizsgalat.db
Field Name Type Size
RKod Autoincrement -
BKod Long Integer -
Megjelent Date -
Panasz Memo 240
Diagnozis Memo 240
Javallat Memo 240
Másodlagos index: BKod, Megjelent alapján.
RKod: Kulcsmező a táblában.
BKod: A beteget azonosítja a Betegek.db táblában.
Megjelent: Dátum, amikor a beteg megjelent az orvosnál.
Panasz: A beteg panaszai.
Diagnozis: Az orvos által felállított diagnózis.
Javallat: Az orvos által javasolt kezelés, gyógyszerek, stb.
Paradox tábla létrehozása
A táblák létrehozásához használjuk a Delphi-hez mellékelt DatabaseDesktop segédprogramot.
Válasszuk File – New – Table menüpontot. Megjelenik egy kis ablak, amely alapértelmezés szerint, a Paradox 7-es adattábla típust kínálja fel. Ezt fogadjuk el az OK gombbal.
Ismét megjelenik egy újabb ablak, amelyben az adattábla szerkezetét kell megadnunk, úgy ahogy azok a fenti táblázatokban láthatóak.
Adattáblák használatakor célszerű minden táblában létrehozni egy kulcsot, amely egyértelműen azonosítja a tábla egy rekordját. Paradox táblák esetén a kulcsot *-al jelezzük a Key mezőben. Kulcsmező csak az első helyen állhat. Ha összetett kulcsot akarunk használni, akkor egymás alatt több sorban is elhelyezhetünk csillagokat.
A kulcs egy olyan mező, amelyben egy adott értékből csak egyetlenegy szerepelhet, erre a programok készítése során majd vigyáznunk kell.
A táblák rekordjainak rendezése a megadott kulcsok szerint történik. Lehetőségünk van más elrendezések létrehozására is. Ezeket másodlagos indexeknek nevezzük. Ezeket használjuk majd arra, hogy például a betegek név szerint jelenjenek meg majd a listákban.
Másodlagos index létrehozásához válasszuk a Table properties ComboBox, Secondary Indexes elemét, majd kattintsunk a Define feliratú gombra.
A Define Secondary Index ablakban, az Index fields listába kell kijelölni azokat a mezőket, amelyekből az adott indexet létre akarjuk hozni. Egy index állhat egyetlen, vagy akár több mezőből is. Ha kiválasztottuk a mezőket, akkor az OK gomb megnyomása után, és egy név megadása után létrejön az index.
Egy ilyen adatokat tároló program esetében fontos, hogy kívülről ne tudja mindenki módosítani az adatokat. Lehetőségünk van a táblákat jelszóval ellátni. Jelszó megadásához az előbb említett ComboBox-ban válasszuk a Password Security elemet, majd kattintsunk a Define gombra. Adjuk meg a jelszót, majd az OK gomb lenyomásával fogadjuk el azt. Ezt tegyük meg az összes táblánál. A mellékelt példaprogramban az adattáblák kódja „animare”.
Ha megalkottuk egy tábla szerkezetét, a Save As gomb lenyomásával mentsük el a létrehozott Data könyvtárunkba, majd hozzuk létre a többi táblát is.
Az adattáblák használatához elengedhetetlen lesz némi védelem. Figyelnünk kell a master – detail kapcsolatra, a megfelelő formátumú értékekre (pl.: dátum mező), és arra, hogy a kulcsokat véletlenül se kettőzzük.
A védelem során megtehetjük azt, hogy tábla szintű védelmet hozunk létre, így a programban csak a megfelelő hibaüzeneteket kell majd kezelnünk. A másik lehetőség, hogy programunkban adatfelvitel és módosítás előtt ellenőrizzük az adatokat. Az utóbbi a kényelmesebb, és több lehetőséget nyújtó megoldás, ezt fogjuk alkalmazni.
A táblákat azért láttuk el jelszavas védelemmel, hogy kívülről ne lehessen az adatokat módosítani és megnézni. A táblához rendelt jelszavak kezelését majd programból végezzük el a háttérben.
Master-detail kapcsolatok
A master-detail kapcsolatokat arra használhatjuk, hogy ha például az orvosok táblában kiválasztunk egy személyt, akkor a betegek táblában már csak a hozzá tartozó betegek szerepeljenek. A többi beteg adatai ilyenkor olyanok, mintha ott sem lennének. Ugyanez a helyzet a betegekkel, és az orvosnál tett látogatásaikkal (vizsgalat.db tábla).
A kapcsolat létrehozásának feltétele, hogy két táblát valamilyen kulcsmező alapján össze tudjunk kötni, valamint, hogy az adott kulcsmező mindkét táblában indexként szerepeljen. Az orvosok és a betegek esetében ez a mező az OKod.
A kapcsolatot a Delphi DataModul-ja segítségével hozzuk létre.
Indítsuk el a Delphi-t, kezdjünk egy új alkalmazást, hozzunk létre egy új DataModule-t, majd az egészet mentsük el abba a könyvtárba, amit a program számára létrehoztunk.
A DataModul-t nevezzük el DM-nek, hogy ne kelljen annyit gépelnünk. Helyezzünk el rajta három Table és három DataSource komponenst, ezeket kössük is össze.
A táblákat egyelőre jelszó védi. A program futása során a táblák megnyitását forráskódból fogjuk vezérelni, így a jelszó használat a felhasználót nem érinti.
Ahhoz, hogy a master-detail kapcsolatokat definiáljuk, most mégis meg kell nyitnunk a táblákat szerkesztési időben, de csak ideiglenesen.
Szerkesztési időben a táblák elérési útját relatívan adjuk meg. A Table komponens, TableName property-jének adjuk meg az adott tábla eléréséhez szükséges elérési utat és a tábla nevét. Ha a programunk és a létrehozott adattáblák az ismertetett könyvtárakban találhatóak, akkor ez a relatív elérési út a következő pl.:
Data\orvosok.db
Előfordulhat, hogy az elérési utat helyesen adjuk meg, de a Delphi mégsem találja a táblát. Ilyenkor mentsük el munkánkat, zárjuk be a Delphi-t, majd nyissuk meg újra.
A Table komponensek Active property-jét állítsuk True-ra. Nyissuk meg a Data Diagram ablakot. Ezt a Delphi 5-ben és 6-ban különböző módon tehetjük meg. Delphi 5 - a DataModul ablakban kattintsunk a Data Diagram fülre. Delphi 6 – a DataModule-hoz tartozó forráskód szerkesztő ablakban (lent) kattintsunk a Diagram fülre.
Delphi 5–ben az ablak bal oldaláról, Delphi 6-ban az Object Inspector ablakból, Drag and Drop módszerrel húzzuk át az adattáblákat a Diagram ablakba.
A három adattáblát egy-egy téglalap szemlélteti.
Az ablakban található néhány ikon, válasszuk a Master Detail feliratút. Ha rákattintunk, a kurzorból egy kereszt lesz. Vigyük a keresztet az orvosok tábla fölé, tartsuk lenyomva az egér bal gombját, húzzuk a keresztet a betegek tábla fölé, majd engedjük el. Olyan mintha egy rajzprogramot használnánk, és egy vonalat akarnánk húzni.
Megjelenik egy új ablak, ahol meg kell adnunk az összeköttetést biztosító mezőket. Az orvos – beteg kapcsolat esetén ez az OKod mező. A ComboBox-ban válasszuk az IOKod indexet. Mindkét listában jelöljük ki az Okod mezőt, majd kattintsunk az Add feliratú gombra.
Ekkor a Joined Fields listában megjelenik az OKod -> OKod felirat. Kattintsunk az OK gombra.
Ugyanezt a műveletet a vizsgalat és a betegek táblákkal is meg kell tennünk. A vonalat a betegek táblából húzzuk a vizsgalat táblára, összekötő mezőként a BKod mezőt adjuk meg, mindkét helyen.
Ezzel a master-detail kapcsolatokat meghatároztuk.



Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 253. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |