DatabßzovΘ aplikace umo╛≥ujφ u╛ivateli pracovat s informacemi
kterΘ jsou ulo╛eny v databßzφch. Databßze poskytuje informacφm strukturu
a umo╛≥uje jejich sdφlenφ mezi r∙zn²mi aplikacemi. C++ Builder poskytuje
podporu pro relaΦnφ databßzovΘ aplikace. RelaΦnφ databßze organizujφ informace
do tabulek, kterΘ obsahujφ °ßdky (zßznamy) a sloupce (polo╛ky). S t∞mito
tabulkami m∙╛eme manipulovat jednoduch²mi operacemi znßm²mi jako relaΦnφ
poΦet.
Kdy╛ navrhujeme databßzovΘ aplikace, pak musφme v∞d∞t
jak jsou data strukturovßna. Na zßklad∞ tΘto struktury, m∙╛eme navrhnout
u╛ivatelskΘ rozhranφ k zobrazenφ dat pro u╛ivatele a k umo╛n∞nφ u╛ivateli
zadßvat novΘ informace nebo modifikovat existujφcφ data.
┌vod do nßvrhu databßzov²ch aplikacφ bude uveden v t∞chto
bodech:
Pou╛φvßnφ databßzφ
Komponenty na strßnce Data Access Palety komponent
umo╛≥ujφ na╣φ aplikaci Φφst z a zapisovat do databßze. Tyto komponenty
pou╛φvajφ Borland Database Engine (BDE) pro zp°φstupn∞nφ databßzov²ch informacφ,
kterΘ d∞lß dostupn²mi v datov²ch ovladaΦφch v na╣em u╛ivatelskΘm rozhranφ.
V zßvislosti na na╣i verzi C++ Builderu, BDE obsahuje
ovladaΦe pro r∙znΘ typy databßzφ. I kdy╛ v╣echny typy databßzφ obsahujφ
tabulky s ulo╛en²mi informacemi, r∙znΘ typy podporujφ dal╣φ slu╛by jako:
M∙╛eme se p°ipojit k r∙zn²m typ∙m databßzφ, a to v zßvislosti
na instalovan²ch ovladaΦφch v BDE. V╣echny verze C++ Builderu zahrnujφ
ovladaΦe pro lokßlnφ databßze. Dßle n∞kterΘ verze pou╛φvajφ ovladaΦe instalovanΘ
s SQL Links pro komunikaci se vzdßlen²mi databßzov²mi servery. Volba typu
databßze zßvisφ na n∞kolika faktorech. Na╣e data mohou b²t takΘ ulo╛ena
v ji╛ existujφcφch databßzφch. Pokud vytvß°φme tabulky pro informace pou╛φvanΘ
na╣φ aplikacφ, pak je vhodnΘ zodpov∞d∞t si nßsledujφcφ otßzky:
-
Kolik dat budou tabulky obsahovat?
-
Kolik u╛ivatel∙ bude tyto tabulky sdφlet?
-
Jak² typ v²konnosti (rychlost) po╛adujeme od databßze?
Lokßlnφ databßze sφdlφ na na╣em lokßlnφm disku nebo
lokßlnφ oblasti sφt∞. Mß p°φslu╣nΘ API pro zp°φstup≥ovßnφ dat. ╚asto jsou
urΦeny pro jedin² systΘm. Kdy╛ jsou sdφleny n∞kolika u╛ivateli, pak pou╛φvajφ
uzamykacφ mechanismus zalo╛en² na souborech. Z tohoto d∙vodu tyto databßze
takΘ naz²vßme databßze zalo╛enΘ na souborech.
Lokßlnφ databßze mohou b²t rychlej╣φ ne╛ vzdßlenΘ databßzovΘ
servery, proto╛e Φasto sφdlφ na stejnΘm systΘmu jako databßzovΘ aplikace.
Proto╛e jsou zalo╛eny na souborech, lokßlnφ databßze jsou vφce omezeny
ne╛ vzdßlenΘ databßzovΘ servery v mno╛stvφ dat, kterß mohou ulo╛it. Tedy
p°i rozhodovßnφ, zda pou╛φt lokßlnφ databßzi, musφme odhadnout kolik dat
tabulka bude obsahovat.
Aplikace, kterΘ pou╛φvajφ lokßlnφ databßze se naz²vajφ
jedno
vrstvovΘ aplikace, proto╛e aplikace a databßze sdφlφ jeden souborov²
systΘm. P°φklady lokßlnφch databßzφ jsou Paradox, dBASE, FoxPro a Access.
VzdßlenΘ databßzovΘ servery obvykle sφdlφ na vzdßlenΘm
poΦφtaΦi. Pou╛φvajφ Strucrured Query Language (SQL) pro umo╛n∞nφ klient∙m
p°istupovat k dat∙m. Z tohoto d∙vodu se takΘ naz²vajφ SQL servery.
JinΘ jmΘno je Remote Database Management System (RDBMS). Mimo spoleΦn²ch
p°φkaz∙, tvo°φcφch zßklad SQL, n∞kterΘ vzdßlenΘ databßzovΘ servery podporujφ
unikßtnφ "dialekty" SQL.
VzdßlenΘ databßzovΘ servery jsou urΦeny pro souΦasn²
p°φstup n∞kolika u╛ivatel∙. Mφsto uzamykacφho systΘmu zalo╛enΘho na souborech,
kter² je vyu╛φvßn lokßlnφmi databßzemi, poskytujφ rafinovan∞j╣φ vφceu╛ivatelskou
podporu, zalo╛enou na transakcφch.
VzdßlenΘ databßzovΘ servery udr╛ujφ vφce dat ne╛ lokßlnφ
databßze. N∞kdy data ze vzdßlen²ch databßzov²ch server∙ nesφdlφ na jednom
poΦφtaΦi, ale jsou distribuovanΘ na n∞kolika serverech.
Aplikace, kterΘ pou╛φvajφ vzdßlenΘ databßzovΘ servery
se takΘ naz²vajφ dvou vrstvovΘ aplikace nebo vφce vrstvovΘ aplikace,
proto╛e aplikace a databßze operujφ na nezßvisl²ch systΘmech.
P°φklady SQL serveru jsou Interbase, Oracle, Sybase,
Informix, Microsoft SQL server a DB2.
Databßzovß bezpeΦnost
Databßze Φasto obsahujφ citlivΘ informace. R∙znΘ databßze
poskytujφ bezpeΦnostnφ schΘma pro ochranu t∞chto informacφ. N∞kterΘ databßze,
jako je Paradox nebo dBASE, pouze poskytujφ zabezpeΦenφ na ·rovni tabulek
nebo polo╛ek. Kdy╛ se u╛ivatel pokusφ p°istupovat ke chrßn∞nΘ tabulce,
pak musφ zadat heslo. Po autorizaci u╛ivatele, pak u╛ivatel vidφ pouze
ty polo╛ky (sloupce), ke kter²m mß oprßvn∞nφ.
V∞t╣ina SQL server∙ vy╛aduje k pou╛itφ databßzovΘho serveru
jmΘno u╛ivatele a heslo. Po p°ihlß╣enφ u╛ivatele k databßzi, pak jmΘno
u╛ivatele urΦuje, kterΘ tabulky m∙╛e u╛ivatel pou╛φvat a jak je m∙╛e pou╛φvat.
P°i v²voji databßzovΘ aplikace, musφme zvß╛it jak² typ
autorizace je po╛adovßn na╣φm databßzov²m serverem. Pokud nechceme aby
u╛ivatel musel zapisovat heslo, pak musφme pou╛φt databßzi, kterß to nevy╛aduje
nebo musφme p°edat jmΘno u╛ivatele a heslo programov∞. P°i programovΘm
p°edßvßnφ hesla je ale omezena bezpeΦnost dat.
Pokud po╛adujeme, aby u╛ivatel musel zadßvat heslo, pak
se musφme zamyslet, kdy je heslo po╛adovßno. Pokud pou╛φvßme lokßlnφ databßze
a chystßme se p°ejφt na SQL server, pak se m∙╛eme dotazovat na heslo p°ed
p°φstupem k tabulce i kdy╛ jej zatφm nebudeme pou╛φvat.
Pokud na╣e aplikace vy╛aduje vφce hesel proto╛e se musφme
p°ihla╣ovat k n∞kolikrßt chrßn∞nΘmu systΘmu nebo databßzi, pak m∙╛eme u╛ivateli
poskytnout jedno hlavnφ heslo, kterΘ je pou╛ito pro p°φstup k tabulce chrßn∞nΘ
heslem chrßn∞n²m systΘmem. Aplikace pak p°edßvß heslo programov∞, bez nutnosti
zadßvßnφ n∞kolika hesel u╛ivatelem.
Ve vφce vrstvov²ch aplikacφch m∙╛eme chtφt pou╛φt jin²
bezpeΦnostnφ model. M∙╛eme pou╛φt MTS k °φzenφ p°φstupu ke st°ednφ vrstv∞
a st°ednφ vrstva pak m∙╛e kompletn∞ zpracovßvat p°ihla╣ovßnφ k databßzov²m
server∙m.
Transakce
Transakce je skupina akcφ, kterΘ musφ b²t v╣echny provedeny
·sp∞╣n∞ na jednΘ nebo n∞kolika tabulkßch v databßzi ne╛ se stanou trval²mi.
Pokud n∞kterß akce ze skupiny je ne·sp∞╣nß, pak v╣echny akce tvo°φcφ tuto
skupinu jsou zru╣eny.
Transakce takΘ chrßnφ p°ed d∙sledky hardwarov²ch chyb,
kterΘ nastanou v pr∙b∞hu databßzovΘho p°φkazu nebo mno╛iny p°φkaz∙. Jsou
takΘ zßkladem °φzenφ vφceu╛ivatelskΘho soub∞╛nΘho p°φstupu na SQL serverech.
Kdy╛ ka╛d² u╛ivatel pracuje s databßzφ pouze prost°ednictvφm transakcφ,
pak p°φkazy jednoho u╛ivatele nemohou naru╣it transakce jinΘho u╛ivatele.
SQL server sleduje p°ichßzejφcφ transakce a zajistφ jejich ·plnΘ provedenφ
nebo ·plnΘ zru╣enφ.
I kdy╛ podpora transakcφ nepat°φ do v∞t╣iny lokßlnφch
databßzφ, ovladaΦe BDE poskytujφ omezenou podporu transakcφ pro tyto databßze.
Pro SQL servery a ODBC databßze, podpora transakcφ je poskytnuta samotnou
databßzφ. Ve vφce vrstvov²ch aplikacφch, m∙╛eme vytvß°et transakce, kterΘ
obsahujφ i jinΘ akce ne╛ pouze databßzovΘ operace nebo kterΘ se t²kajφ
vφce databßzφ.
Datov² slovnφk
Bez ohledu na typ pou╛itΘ databßze, na╣e aplikace mß p°φstup
k DatovΘmu slovnφku. Datov² slovnφk poskytuje p°izp∙sobitelnou uklßdacφ
oblast, nezßvislou na na╣i aplikaci, kde m∙╛eme vytvß°et mno╛iny roz╣φ°en²ch
atribut∙ polo╛ek, kterΘ popisujφ obsah a vzhled dat.
Nap°. pokud Φasto vyvφjφme finanΦnφ aplikace, m∙╛eme
vytvo°it °adu mno╛in specializovan²ch atribut∙ polo╛ek popisujφcφch r∙znΘ
zobrazovacφ formßty pro finanΦnφ polo╛ky. Kdy╛ p°i nßvrhu vytvß°φme datovΘ
mno╛iny pro na╣i aplikaci, pak mφsto pou╛itφ Inspektora objekt∙ k nastavenφ
finanΦnφch polo╛ek v ka╛dΘ datovΘ mno╛in∞, m∙╛eme p°i°adit tyto polo╛ky
k mno╛in∞ roz╣φ°en²ch atribut∙ polo╛ek v DatovΘm slovnφku. Pou╛φvßnφ DatovΘho
slovnφku takΘ zaji╣╗uje konzistentnost vzhledu dat a to i r∙zn²ch vytvß°en²ch
aplikacφch.
V prost°edφ klient/server, Datov² slovnφk m∙╛e b²t umφst∞n
na vzdßlenΘm serveru pro sdφlenφ informacφ. S vytvß°enφm a pou╛φvßnφm DatovΘho
slovnφku se seznßmφme pozd∞ji.
Programovacφ rozhranφ k DatovΘmu slovnφku je dostupnΘ
v jednotce drintf (umφst∞nΘ v adresß°i lib). Rozhranφ nabφzφ
nßsledujφcφ metody:
Metoda |
Pou╛itφ |
DictionaryActive |
Indikuje zda Datov² slovnφk je aktivnφ. |
DictionaryDeactivate |
Deaktivuje Datov² slovnφk. |
IsNullID |
Indikuje zda danΘ ID je NULL. |
FindDatabaseID |
Vracφ ID pro databßzi danou jejφ p°ezdφvkou. |
FindTableID |
Vracφ ID pro tabulku ve specifikovanΘ databßzi. |
FindFieldID |
Vracφ ID pro polo╛ku ve specifikovanΘ databßzi. |
FindAttrID |
Vracφ ID pro pojmenovanou mno╛inu atribut∙. |
GetAttrName |
Vracφ jmΘno mno╛iny atribut∙ danΘ jejφm ID. |
GetAttrNames |
Provßdφ zp∞tnΘ volßnφ pro ka╛dou mno╛inu atribut∙ ve
slovnφku. |
GetAttrID |
Vracφ ID mno╛iny atribut∙ pro specifikovanou polo╛ku. |
NewAttr |
Vytvß°φ novou mno╛inu atribut∙ z polo╛kovΘ komponenty. |
UpdateAttr |
Aktualizuje mno╛inu atribut∙ k nalezenφ vlastnostφ polo╛ky. |
CreateField |
Vytvß°φ polo╛kovou komponentu zalo╛enou na ulo╛en²ch
atributech. |
UpdateField |
M∞nφ vlastnosti polo╛ek na shodu se specifikovanou mno╛inou
atribut∙. |
AssociateAttr |
P°i°azuje mno╛inu atribut∙ s danou ID polo╛ky. |
UnassociateAttr |
Odstra≥uje mno╛inu atribut∙ p°i°azenou pro ID polo╛ky. |
GetControlClass |
Vracφ °φdφcφ t°φdu pro specifikovanΘ ID atributu. |
QualifyTableName |
Vracφ pln∞ kvalifikovanΘ jmΘno tabulky (kvalifikovanΘ
jmΘnem u╛ivatele). |
QualifyTableNameByName |
Vracφ pln∞ kvalifikovanΘ jmΘno tabulky (kvalifikovanΘ
jmΘnem u╛ivatele). |
HasConstraints |
Indikuje, zda datovß mno╛ina mß omezenφ ve slovnφku. |
UpdateConstraints |
Aktualizuje importovanß omezenφ datovΘ mno╛iny. |
UpdateDataset |
Aktualizuje datovou mno╛inu na souΦasnΘ nastavenφ a omezenφ
ve slovnφku. |
ReferenΦnφ
integrita, ulo╛enΘ procedury a spou╣t∞Φe
V╣echny relaΦnφ databßze majφ jistΘ slu╛by, kterΘ obecn∞
umo╛≥ujφ aplikacφm uklßdat a manipulovat s daty. Dßle databßze nabφzejφ
dal╣φ slu╛by specifickΘ pro databßzi, kterΘ jsou u╛iteΦnΘ pro zaji╣t∞nφ
vztah∙ mezi tabulkami v databßzi. To zahrnuje:
-
ReferenΦnφ integrita - poskytuje mechanismus k chrßn∞nφ
vztahu Master-detail. Kdy╛ se u╛ivatel pokusφ zru╣it polo╛ku v tabulce
Master, pak pravidla referenΦnφ integrity chrßnφ zßznamy Detail.
-
Ulo╛enΘ procedury - jsou mno╛iny p°φkaz∙ SQL, kterΘ
jsou pojmenovanΘ a ulo╛enΘ na SQL serveru. Ulo╛enΘ procedury obvykle provßd∞jφ
obecnΘ databßzovΘ ·lohy na serveru a vracejφ mno╛inu zßznam∙.
-
Spou╣t∞Φe - jsou mno╛iny p°φkaz∙ SQL, kterΘ jsou automaticky
provßd∞ny v reakci na jist² p°φkaz.
V²vojovΘ prost°edφ
DatabßzovΘ slu╛by a nßstroje C++ Builderu slou╛φ k snadnΘmu
nßvrhu, implementaci, v²voji a udr╛ovßnφ databßzov²ch aplikacφ v r∙zn²ch
v²poΦetnφch prost°edφch. N∞kterΘ databßzovΘ slu╛by a nßstroje, jako je
Pr∙zkumnφk SQL (SQL Explorer), Monitor SQL, Vytvß°eΦ SQL, KlientskΘ datovΘ
mno╛iny, Moduly vzdßlen²ch dat a Poskytovacφ komponenty jsou specifickΘ
pro verzi Client/Server C++ Builderu (Pr∙zkumnφk databßze nahrazuje ve
verzi Professional Pr∙zkumnφka SQL). Ostatnφ nßstroje, jako jsou standardnφ
databßzovΘ komponenty, BDE (Borland Database Engine) a samostatn² Database
desktop (DBD) jsou poskytnuty ve v╣ech verzφch C++ Builderu.
Obecn∞ verze Client/Server poskytuje vysokou integraci
nßstroj∙ pot°ebn²ch pro nßvrh, testovßnφ a vytvß°enφ dvouvrstvov²ch a vφcevrstvov²ch
aplikacφ, kterΘ pracujφ s databßzemi SQL na vzdßlen²ch serverech a databßzφch
dBASE, Paradox, MS Access a FoxPro (a to lokßln∞ nebo sφ╗ov∞). Pomocφ ovladaΦ∙
ODBC m∙╛eme takΘ p°istupovat k dal╣φm lokßlnφm nebo vzdßlen²m databßzφm.
Verze Professional umo╛≥uje budovat a testovat klientskΘ
aplikace pro databßze dBASE, Paradox, Access a FoxPro a to op∞t lokßln∞
i sφ╗ov∞ a pomocφ ODBC lze p°istupovat k dal╣φm lokßlnφm nebo vzdßlen²m
databßzφm.
Pr∙zkumnφk SQL a Pr∙zkumnφk databßze
Ve verzi Client/Server C++ Builderu, m∙╛eme prohlφ╛et
databßze a jejich tabulky s daty pomocφ Pr∙zkumnφka SQL z IDE. Ve verzi
Professional C++ Builderu, m∙╛eme pou╛φt Pr∙zkumnφka databßze. Ob∞ verze
pr∙zkumnφka umo╛≥ujφ:
-
Prohlφ╛et existujφcφ databßzovΘ tabulky a struktury. Pomocφ
Pr∙zkumnφka SQL m∙╛eme prohlφ╛et a dotazovat se vzdßlen²ch SQL databßzφ.
-
Vytvß°et objekty SQL na vzdßlen²ch databßzov²ch serverech,
jako jsou ulo╛enΘ procedury (Pr∙zkumnφkem SQL). M∙╛eme takΘ zobrazovat
textovΘ objekty SQL na serveru.
-
V Pr∙zkumnφku SQL spou╣t∞t skript SQL.
-
Zapl≥ovat tabulky daty.
-
Vytvß°et mno╛inu roz╣φ°en²ch atribut∙ polo╛ek v DatovΘm slovnφku
pro pozd∞j╣φ zφskßnφ a pou╛itφ. Roz╣φ°enΘ atributy polo╛ek popisujφ jak
hodnoty sloupce jsou formßtovßny a zobrazeny.
-
P°i°adit roz╣φ°enΘ atributy polo╛ek k polo╛kßm v na╣φ aplikaci.
-
Vytvß°et a spravovat p°ezdφvky BDE pou╛φvanΘ na╣φ aplikacφ
pro p°ipojenφ k databßzi.
Vφce o Pr∙zkumnφku SQL a Pr∙zkumnφku databßze se dozvφme
pozd∞ji.
Vytvß°eΦ SQL
Ve verzi Client/Server C++ Builderu m∙╛eme pou╛φvat Vytvß°eΦ
SQL k vizußlnφmu vytvß°enφ SQL pro dotazy. Vytvß°eΦ SQL m∙╛e b²t vyvolßn
z mφstnφ nabφdky komponenty Query. Vytvß°eΦ SQL usnad≥uje:
-
Vizußln∞ specifikovat p°φkazy SELECT.
-
Vytvß°et vno°enΘ v²razy.
-
Pou╛φvat °et∞zcovΘ konstanty.
-
P°φm² zßpis k≤du SQL a prohlφ╛enφ jeho zrcadlenφ ve vizußlnφ
reprezentaci.
Vytvß°eΦem SQL se vφce zab²vat nebudeme.
Desktop databßze
Desktop databßze (DBD) m∙╛eme pou╛φt k prohlφ╛enφ a modifikaci
existujφcφch tabulek Paradoxu a dBASE nebo k jejich vytvß°enφ a zapl≥ovßnφ,
vytvß°enφ index∙, definovßnφ referenΦnφ integrity a vytvß°enφ ov∞°ovacφch
pravidel pro n∞. M∙╛eme takΘ prohlφ╛et a vytvß°et p°ezdφvky BDE.
DBD je samostatnß utilita, kterß se spou╣tφ mimo IDE.
Vφce informacφ bude uvedeno v p°φ╣tφ kapitole.
DatovΘ moduly
DatovΘ moduly znaΦn∞ zjednodu╣ujφ p°φstup k dat∙m v na╣ich
aplikacφch. DatovΘ moduly nabφzejφ centralizovanΘ nßvrhovΘ kontejnery pro
v╣echny na╣e komponenty datovΘho p°φstupu, kterΘ umo╛≥ujφ modularizovat
nß╣ k≤d a odd∞lovat logiku datovΘho p°φstupu v na╣i aplikaci od logiky
u╛ivatelskΘho rozhranφ na formulß°φch aplikace.
Po definici na╣ich datov²ch mno╛in a jejich polo╛ek v
DatovΘm modulu, v╣echny formulß°e kterΘ pou╛φvajφ modul majφ konzistentnφ
p°φstup k datov²m mno╛inßm a polo╛kßm a to bez nutnosti jejich op∞tovnΘho
vytvß°enφ pro ka╛d² formulß°. DatovΘ moduly mohou b²t ulo╛eny v Zßsobnφku
objekt∙ pro sdφlenφ mezi v²vojß°i a aplikacemi.
VzdßlenΘ datovΘ moduly umo╛≥ujφ vytvß°et DatovΘ moduly
ActiveX, kterΘ jsou zßkladem pro vytvß°enφ objekt∙ automatizace OLE, kterΘ
mohou slou╛it jako aplikaΦnφ servery ve vφcevrstvov²ch databßzov²ch aplikacφch.
⌐ablony komponent
⌐ablony komponent umo╛≥ujφ umφstit jednu nebo vφce komponent
na formulß°, nastavit jejich vlastnosti, zapsat pro n∞ obsluhy udßlostφ
a potom ulo╛it tuto skupinu komponent na Paletu komponent pro pozd∞j╣φ
opakovanΘ pou╛φvßnφ. ⌐ablony komponent umo╛≥ujφ rychlΘ vytvo°enφ u╛ivatelskΘho
rozhranφ s implicitnφm chovßnφm a jejich sdφlenφ mezi aplikacemi.
Zßsobnφk objekt∙
Zßsobnφk objekt∙ uklßdß vazby na datovΘ moduly, formulß°e
a projekty pro opakovanΘ pou╛itφ. Kdy╛ vytvß°φme novou aplikaci, pak m∙╛eme:
-
Kopφrovat existujφcφ datovΘ moduly, formulß°e nebo projekty,
co╛ zajistφ, ╛e na╣e kopie je ·pln∞ nezßvislß na zßsobnφku.
-
D∞dit existujφcφ datovΘ moduly, formulß°e a projekty, co╛
zajistφ, ╛e zm∞ny v propojen²ch modulech, formulß°φch a projektech v zßsobnφku
se projevφ i v na╣φ aplikaci, kdy╛ ji op∞tovn∞ p°elo╛φme.
-
Pou╛φt existujφcφ datovΘ moduly, formulß°e a projekty, co╛
zajistφ, ╛e zm∞ny kterΘ provedeme v modulu, formulß°i nebo projektu jsou
dostupnΘ pro pou╛itφ v ostatnφch aplikacφch.
Zßsobnφk objekt∙ podporuje t²mov² v²voj. Pou╛φvß odkazov²
mechanismus na DatovΘ moduly, formulß°e a projekty, kterΘ existujφ na sφ╗ovΘm
serveru nebo sdφlenΘm poΦφtaΦi. Ka╛d² v²vojß° v na╣i organizaci m∙╛e uklßdat
objekty na sdφlenΘ mφsto a pak nastavovat odkazy Zßsobnφku objekt∙ na mφsto
jejich ulo╛enφ. Zßsobnφk objekt∙ takΘ m∙╛eme p°izp∙sobit volbou Tools
| Repository v IDE.
Vytvß°enφ vφcevrstvov²ch aplikacφ
M∙╛eme vytvß°et vφcevrstvovΘ databßzovΘ aplikace a to
pomocφ databßzov²ch komponent TClientDataSet, TMIDASConnection
(nebo
TRemoteServer) a TProvider. TClientDataSet umo╛≥uje
vytvo°it nezßvislou datovou mno╛inu databßzovΘho modulu p°φstupu k databßzi,
kterß m∙╛e zφskßvat data z lokßlnφch datov²ch zdroj∙, soubor∙ a vzdßlen²ch
databßzov²ch server∙.
TClientDataSet m∙╛eme pou╛φt k vytvß°enφ jednovrstvov²ch
databßzov²ch aplikacφ, kterΘ nepou╛φvajφ BDE a komponentu TClientDataSet
m∙╛eme pou╛φt v klientsk²ch aplikacφch jako Φßst vφcevrstvovΘ databßzovΘ
aplikace.
TMIDASConnection umo╛≥uje vytvß°et klientskΘ aplikace,
kterΘ se p°ipojujφ ke vzdßlen²m aplikaΦnφm server∙m pomocφ DCOM, Soket∙
Windows nebo OLEEnterprise. Pokud pou╛φvßme pouze DCOM, m∙╛eme k t∞mto
·Φel∙m takΘ pou╛φt TRemoteServer. TProvider umo╛≥uje vytvß°et
dußlnφ rozhranφ mezi klientskou aplikacφ a aplikaΦnφm serverem (kde komponenta
TProvider sφdlφ) a tak klientskß datovß mno╛ina v klientskΘ aplikaci
m∙╛e komunikovat prost°ednictvφm poskytovatele nebo p°φmo s datovou mno╛inou
na aplikaΦnφm serveru.
Architektura databßze
DatabßzovΘ aplikace jsou budovßny z prvk∙ u╛ivatelskΘho rozhranφ,
komponent kterΘ spravujφ databßzi nebo databßze a komponent kterΘ reprezentujφ
data obsa╛enß v tabulkßch v t∞chto databßzφch (datov²ch mno╛inßch). Architektura
na╣φ databßzovΘ aplikace urΦuje jak tyto prvky pou╛φvat. Izolovßnφm komponent
databßzovΘho p°φstupu do Datov²ch modul∙, m∙╛eme vyvφjet v na╣φ databßzovΘ
aplikaci formulß°e, kterΘ poskytujφ konzistentnφ u╛ivatelskΘ rozhranφ.
Ulo╛enφm vazeb na dob°e navr╛enΘ formulß°e a DatovΘ moduly do Zßsobnφku
objekt∙, dosßhneme toho, ╛e my a ostatnφ v²vojß°i mohou budovat na existujφcφch
zßkladech mφsto zaΦφnßnφ od niΦeho v ka╛dΘm novΘm projektu. Sdφlenφ formulß°∙
a Datov²ch modul∙ takΘ umo╛≥uje standardizaci databßzovΘho p°φstupu a aplikaΦnφho
rozhranφ.
Mnoho aspekt∙ architektury na╣φ databßzovΘ aplikace zßvisφ
na typu pou╛φvanΘ databßze, poΦtu u╛ivatel∙, kte°φ budou sdφlet databßzovΘ
informace a typu informacφ se kter²mi budeme pracovat.
Kdy╛ zapisujeme aplikace, kterΘ pou╛φvajφ informace nesdφlenΘ
n∞kolika u╛ivateli, pak m∙╛eme chtφt pou╛φt lokßlnφ databßze v jednovrstvΘ
aplikaci. Toto °e╣enφ m∙╛e mφt v²hodu v rychlosti (proto╛e data jsou ulo╛ena
lokßln∞) a nevy╛adujφ samostatn² databßzov² server a poΦφtaΦovou sφ╗. Jsme
ale omezeni mno╛stvφm dat v tabulkßch a poΦtem u╛ivatel∙, kterΘ na╣e aplikace
m∙╛e podporovat.
Zßpisem dvouvrstvΘ aplikace poskytneme vφceu╛ivatelskou
podporu a zφskßme mo╛nost pou╛φvat velkΘ vzdßlenΘ databßze, kterΘ mohou
uklßdat znaΦn∞ velkΘ mno╛stvφ informacφ.
Kdy╛ databßzovΘ informace obsahujφ komplikovanΘ vazby
mezi n∞kolika tabulkami nebo kdy╛ se poΦet klient∙ zv∞t╣uje, pak m∙╛eme
chtφt pou╛φvat vφcevrstvovΘ aplikace. VφcevrstvovΘ aplikace obsahujφ st°ednφ
vrstvu, kterß centralizuje logiku ovlßdßnφ databßzov²ch interakcφ. To umo╛≥uje
r∙zn²m klientsk²m aplikacφm pou╛φvat stejnß data se zaji╣t∞nφm konzistentnφ
datovΘ logiky. To takΘ zmen╣uje klientskΘ aplikace, proto╛e Φßst zpracovßnφ
je p°esunuta do st°ednφ vrstvy (na jinΘm poΦφtaΦi). Tyto men╣φ klientskΘ
aplikace se snadn∞ji instalujφ, konfigurujφ a udr╛ujφ, proto╛e neobsahujφ
p°ipojenφ k databßzφm. VφcevrstvovΘ aplikace mohou zvy╣ovat v²konnost rozlo╛enφm
·loh zpracovßnφ dat na n∞kolik systΘm∙.
Seznßmenφm s u╛ivatelsk²m rozhranφm
C++ Builder poskytuje °adu datov²ch ovladaΦ∙ pro vytvß°enφ
u╛ivatelskΘho rozhranφ ve v╣ech typech databßzov²ch aplikacφ. DatovΘ ovladaΦe
zobrazujφ data z polo╛ek v databßzov²ch zßznamech a umo╛≥ujφ u╛ivateli
editovat tato data a posφlat zm∞ny zp∞t do databßze. DatovΘ ovladaΦe umis╗ujeme
na formulß° a jsou tedy viditelnΘ a p°φstupnΘ pro u╛ivatele.
V∞t╣ina t∞chto ovladaΦ∙ se podobß vzhledem a funkΦnostφ
standardnφm ovladaΦ∙m Windows, kterΘ umis╗ujeme na formulß°. Nap°. ovladaΦ
TDBEdit
je datovou verzφ standardnφho ovladaΦe TEdit, kter² umo╛≥uje prohlφ╛et
a editovat textovΘ °et∞zce. Dal╣φ datovΘ ovladaΦe, jako je TDBNavigator
a TDBGrid majφ vzhled a funkΦnost, kterß pot°ebuje databßzi. Nap°.
ovladaΦ navigßtora nezobrazuje ani needituje data, ale umo╛≥uje u╛ivateli
prochßzet zßznamy databßze, p°ejφt do editaΦnφho nebo vklßdacφho re╛imu,
ru╣it zßznamy, odeslat zm∞ny do databßze a po╛adovat novΘ zobrazenφ dat.
TDBGrid
m∙╛e zobrazit n∞kterΘ nebo v╣echny polo╛ky pro n∞kolik zßznam∙ najednou
v tabulkovΘm formßtu.
V nßsledujφcφ tabulce je uveden p°ehled vizußlnφch datov²ch
ovladaΦ∙, kterΘ jsou na strßnce Data Controls Palety komponent:
Komponenta |
V²znam |
TDBGrid |
Zobrazuje a edituje zßznamy datovΘ mno╛iny v tabulkovΘm
formßtu. |
TDBNavigator |
Prochßzenφ zßznamy datovΘ mno╛iny; umo╛≥uje stavy Edit
a Insert; odeslßnφ nov²ch nebo modifikovan²ch zßznam∙; zru╣enφ editaΦnφho
re╛imu; obnovenφ zobrazenφ. |
TDBText |
Zobrazenφ polo╛ky jako popisu. |
TDBEdit |
Zobrazenφ a editace polo╛ky v editaΦnφm ovladaΦi. |
TDBMemo |
Zobrazenφ a editace vφce°ßdkovΘho textu v rolovatelnΘm
vφce°ßdkovΘm editaΦnφm ovladaΦi. |
TDBImage |
Zobrazenφ a editace grafickΘho obrßzku nebo BLOB dat. |
TDBListBox |
Zobrazenφ seznamu voleb pro zadßvßnφ do polo╛ek. |
TDBComboBox |
Zobrazenφ editaΦnφho ovladaΦe a rozbalovacφho seznamu
voleb pro editaci a zadßvßnφ do polo╛ky. |
TDBCheckBox |
Zobrazovßnφ a nastavovßnφ logickΘ polo╛ky ve znaΦce. |
TDBRadioGroup |
Zobrazovßnφ a nastavovßnφ vzßjemn∞ vyluΦujφcφch se voleb
pro polo╛ku ve skupin∞ voliΦ∙. |
TDBLookupListBox |
Zobrazenφ seznamu voleb odvozenΘho od polo╛ky v jinΘ
datovΘ mno╛in∞ pro zadßvßnφ do polo╛ky. |
TDBLookupComboBox |
Zobrazenφ editaΦnφho ovladaΦe a rozbalovacφho seznamu
voleb odvozenΘho od polo╛ky v jinΘ datovΘ mno╛in∞ pro editaci a zadßvßnφ
do polo╛ky. |
TDBRichEdit |
Zobrazenφ a editace vφce°ßdkovΘho formßtovanΘho textu
nebo BLOB ve vφce°ßdkovΘm rolovatelnΘm editaΦnφm ovladaΦi. |
TDBCtrlGrid |
Zobrazovßnφ a editace zßznam∙ v tabulkovΘm formßtu, kde
ka╛dß bu≥ka v m°φ╛ce obsahuje opakujφcφ se mno╛inu datov²ch komponent pro
jeden zßznam (pouze verze Client/Server a Professional). |
TDBChart |
Reprezentuje databßzovΘ informace v grafickΘm formßtu. |
DatovΘ ovladaΦe zφskßvajφ data z a zasφlajφ data do komponenty
datovΘho zdroje TDataSource. Komponenta datovΘho zdroje slou╛φ jako
propojenφ mezi u╛ivatelsk²m rozhranφm a komponentou datovΘ mno╛iny reprezentujφcφ
databßzovou tabulku, dotaz nebo ulo╛enou proceduru. N∞kolik datov²ch ovladaΦ∙
na formulß°i m∙╛e sdφlet jeden datov² zdroj a zobrazenφ v t∞chto ovladaΦφch
je synchronizovßno s prochßzenφm v zßznamech (v ka╛dΘm ovladaΦi je zobrazena
hodnota odpovφdajφcφ polo╛ky souΦasnΘho zßznamu). DatovΘ zdroje aplikace
obvykle umis╗ujeme do datovΘho modulu (odd∞len∞ od datov²ch ovladaΦ∙ na
formulß°i).
Ka╛dß komponenta datovΘho zdroje v aplikaci je spojena
s jednou komponentou datovΘ mno╛iny. Komponenta datovΘ mno╛iny je v╛dy
odvozena od TDataSet. Pokud vytvß°φme tradiΦnφho dvouvrstvovΘho
klienta, kter² pou╛φvß BDE, pak na╣e aplikace pou╛φvß komponenty TQuery,
TStoredProc
a TTable, kterΘ jsou v╣echny odvozeny od TDataSet. P°i vytvß°enφ
vφcevrstvovΘ databßzovΘ aplikace, klientskß Φßst aplikace pou╛φvß komponentu
TClientDataSet,
kterß je reprezentacφ datovΘ mno╛iny nezßvislΘho modulu p°φstupu k databßzi.
M∙╛eme takΘ odvodit svou vlastnφ datovou mno╛inu pro spoluprßci s databßzemi
dal╣φch firem. Bez ohledu na typ komponenty datovΘ mno╛iny, vytvß°φme v╛dy
u╛ivatelskΘ rozhranφ stejn²m zp∙sobem. Nßsledujφcφ obrßzek ukazuje vzßjemn²
vztah komponent vytvß°ejφcφch u╛ivatelskΘ rozhranφ v na╣φ databßzovΘ aplikaci
k datov²m mno╛inßm, kterΘ zφskßvajφ data a kterΘ zasφlajφ aktualizace.
DatovΘ ovladaΦe usnad≥ujφ zßpis aplikacφ zabstraktn∞nφm
chovßnφ databßze a dat ulo╛en²ch v databßzi. Bez ohledu na to, zda zapisujeme
jedno, dvou nebo vφcevrstvovou aplikace, pak m∙╛eme izolovat jejφ u╛ivatelskΘ
rozhranφ od vrstvy databßzovΘho p°φstupu, jak ukazuje nßsledujφcφ obrßzek.
Formulß° reprezentuje u╛ivatelskΘ rozhranφ a obsahuje datovΘ
ovladaΦe a dal╣φ prvky u╛ivatelskΘho rozhranφ. DatovΘ ovladaΦe v u╛ivatelskΘm
rozhranφ jsou p°ipojeny k datov²m mno╛inßm, kterΘ reprezentujφ informace
z tabulek v databßzi. Datov² zdroj (TDataSource) spojuje datovΘ
ovladaΦe s t∞mito datov²mi mno╛inami. Izolovßnφm datovΘho zdroje a datovΘ
mno╛iny v DatovΘm modulu, dosßhneme toho, ╛e p°i zm∞n∞ typu pou╛φvanΘ databßze
se formulß° nezm∞nφ. Musφ se zm∞nit pouze datovΘ mno╛iny.
Kdy╛ zapisujeme aplikace zalo╛enΘ na BDE, pak snadno
p°ejdeme z jednovrstvΘ na dvouvrstvou aplikaci. Je nutno zm∞nit pouze n∞kolik
vlastnostφ datovΘ mno╛iny a m∙╛eme se p°ipojit mφsto k lokßnφ databßzi
p°φmo ke vzdßlenΘmu SQL serveru. Databßzovß aplikace zalo╛enß na souborech
je snadno zm∞n∞na na klienta ve vφcevrstvovΘ aplikaci, proto╛e ob∞ architektury
pou╛φvajφ stejnΘ komponenty datov²ch mno╛in. Z tohoto d∙vodu m∙╛eme zapsat
aplikaci, kterß pracuje jako souborovß aplikace i jako vφcevrstv² klient.
Pokud plßnujeme zm∞nu pou╛itΘ architektury, pak mimo
izolace u╛ivatelskΘho rozhranφ je vhodnΘ izolovat i v╣echnu logiku, kterß
m∙╛e sφdlit v budoucnu ve st°ednφ vrstv∞.
Nßsledujφcφ tabulka uvßdφ p°ehled v╣ech databßzov²ch komponent,
kterΘ jsou uvedeny na strßnce Data Access Palety komponent.
Komponenta |
V²znam |
TBatchMove |
P°esouvß data z jednΘ tabulky do jinΘ. |
TClientDataSet |
Zaobaluje datovou mno╛inu, kterß je nezßvislß na BDE,
pro pou╛itφ v jednovrstvov²ch aplikacφch a ve vφcevrstvov²ch aplikacφch
na klientu. Pouze ve verzi Client/Server. |
TDatabase |
Zaobaluje p°ipojenφ klient/server k jednΘ databßzi v
jednom sezenφ. |
TDataSource |
Slou╛φ jako propojenφ mezi ostatnφmi komponentami datovΘho
p°φstupu a vizußlnφmi datov²mi komponentami. |
TProvider |
Poskytuje dußlnφ rozhranφ povolujφcφ ActiveX, kterΘ slou╛φ
jako komunikaΦnφ kanßl mezi aplikaΦnφm serverem a klientskou aplikacφ ve
vφcevrstvov²ch aplikacφch. Pouze ve verzi Client/Server. |
TQuery |
Reprezentuje datovou mno╛inu, kterß zφskßvß podmno╛inu
sloupc∙ a zßznam∙ z jednΘ nebo vφce lokßlnφch nebo vzdßlen²ch databßzov²ch
tabulek na zßklad∞ dotazu SQL. |
TMIDASConnection |
P°ipojuje klientskou aplikaci k aplikaΦnφmu serveru ve
vφcevrstvov²ch aplikacφch. Pouze ve verzi Client/Server. |
TRemoteServer |
P°ipojuje klientskou aplikaci k aplikaΦnφmu serveru ve
vφcevrstvov²ch aplikacφch pou╛φvajφcφch pouze DCOM. Pouze ve verzi Client/Server. |
TSession |
Reprezentuje jedno sezenφ ve vφcevrstvov²ch databßzov²ch
aplikacφch. Ka╛dΘ sezenφ m∙╛e mφt vφce databßzov²ch p°ipojenφ. |
TStoredProc |
Reprezentuje datovou mno╛inu, kterß zφskßvß jeden nebo
vφce zßznam∙ z databßzovΘ tabulky na zßklad∞ ulo╛enΘ procedury definovanΘ
pro databßzov² server. |
TTable |
Reprezentuje datovou mno╛inu, kterß zφskßvß v╣echny sloupce
a zßznamy z databßzovΘ tabulky. |
TUpdateSQL |
Reprezentuje p°φkazy SQL INSERT, UPDATE a DELETE, kterΘ
mohou b²t pou╛ity k aktualizaci v²sledkovΘ mno╛iny n∞kter²ch dotaz∙. |
Mimo t∞chto p°φstupov²ch a datov²ch komponent, verze Client/Server
obsahuje na Palet∞ komponent strßnku DecisionCube. Obsahuje ╣est
komponent, kterΘ umo╛≥ujφ provßd∞t anal²zu dat.
Architektura jednovrstvov²ch BDE aplikacφ
V modelu jednovrstvovΘ databßze, kterß pou╛φvß BDE pro p°φstup
k Paradoxu a dBASE, aplikace obsahuje u╛ivatelskΘ rozhranφ a spolupracujφcφ
BDE. C++ Builder mß v╛dy podporu pro tento typ jednovrstvov²ch databßzov²ch
aplikacφ. Nßsledujφcφ obrßzek ukazuje model architektury pro jednovrstvovΘ
aplikace, kterΘ pou╛φvajφ BDE:
Mimo tohoto jednovrstvovΘho modelu C++ Builder podporuje
jednovrstvov² model nevy╛adujφcφ DBE.
Architektura jednovrstvov²ch aplikacφ
V modelu jednovrstvovΘ databßze, aplikace obsahuje u╛ivatelskΘ
rozhranφ. Pou╛φvß komponentu TClientDataSet k vytvo°enφ nezßvislΘ
datovΘ mno╛iny modulu p°φstupu k databßzi, kterß Φte data z a zapisuje
data do soubor∙ na disku bez po╛adavk∙ na samostatn² modul p°φstupu k databßzi
nebo databßzov² server. Nßsledujφcφ obrßzek ukazuje model architektury
pro jednovrstvovΘ aplikace, kterΘ pou╛φvajφ klientskΘ datovΘ mno╛iny:
Dv∞ metody obsa╛enΘ v TClientDataSet, LoadFromFile
a SaveToFile, umo╛≥ujφ klientskΘ datovΘ mno╛in∞ Φφst data p°φmo
ze souboru pro zobrazenφ a zßpis dat z datov²ch ovladaΦ∙ p°φmo do souboru.
V tomto smyslu komponenta klientskΘ datovΘ mno╛iny nahrazuje modul p°φstupu
k databßzi. Struktura polo╛ek definovanß pro klientskou datovou mno╛inu
urΦuje jak data jsou zapisovßna na a Φtena z disku.
TClientDataSet se takΘ pou╛φvß (v pon∞kud jinΘm
v²znamu) v klientskΘ Φßsti vφcevrstvov²ch databßzov²ch aplikacφch.
DvouvrstvovΘ databßzovΘ aplikace
V modelu dvouvrstvov²ch databßzφ, klientskß aplikace poskytuje
u╛ivatelskΘ rozhranφ k dat∙m a spolupracuje p°φmo s lokßlnφm nebo vzdßlen²m
databßzov²m serverem prost°ednictvφm BDE. Toto ukazuje nßsledujφcφ obrßzek:
V tomto modelu, v╣echny aplikace jsou klienty databßze. Klient
zφskßvß informace z a zasφlß na databßzov² server. Server m∙╛e zpracovßvat
po╛adavky od mnoha klient∙ souΦasn∞, koordinacφ p°φstupu a aktualizacφ
dat.
Dob°e navr╛enΘ dvouvrstvovΘ aplikace snadno zobrazujφ
a editujφ data i v p°φpad∞ kdy╛ aplikace pracuje se slo╛en²m datov²m modelem.
V²vojß° aplikace musφ pochopit slo╛enφ na╣eho datovΘho modelu a pracuje
s maskou pro p°φpadnΘho koncovΘho u╛ivatele na╣φ aplikace.
Pokud mßme verzi Professional C++ Builderu, pak investice
do vytvß°enφ databßzov²ch aplikacφ jsou chrßn∞ny, i kdy╛ p°ejdeme na verzi
Client/Server C++ Builderu. C++ Builder zjednodu╣uje v²voj databßzov²ch
aplikacφ a takΘ umo╛≥uje p°ejφt na vy╣╣φ implementaci klientskß aplikace
- aplikaΦnφ server, kdy╛ je pot°eba.
VφcevrstvovΘ databßzovΘ aplikace
V modelu vφcevrstvovΘ databßze, aplikace je rozd∞lena do
Φßstφ, kterΘ sφdlφ na r∙zn²ch poΦφtaΦφch. Klientskß aplikace poskytuje
u╛ivatelskΘ rozhranφ k dat∙m. Zφskßvß v╣echny datovΘ po╛adavky a aktualizace
prost°ednictvφm aplikaΦnφho serveru. AplikaΦnφ server komunikuje p°φmo
se vzdßlen²m databßzov²m serverem. Obvykle v tomto modelu, klientskß aplikace,
aplikaΦnφ server a vzdßlen² databßzov² server jsou na r∙zn²ch poΦφtaΦφch.
To ukazuje nßsledujφcφ obrßzek:
M∙╛eme pou╛φt C++ Builder k vytvo°enφ klientskΘ aplikace
i aplikaΦnφho serveru. Jak je ukßzßno, klientskß aplikace pou╛φvß standardnφ
datovΘ ovladaΦe spojenΘ prost°ednictvφm datovΘho zdroje na jednu nebo vφce
komponent klientsk²ch datov²ch mno╛in pro zobrazovßnφ a editaci dat. Ka╛dß
klientskß datovß mno╛ina komunikuje se serverovou aplikacφ prost°ednictvφm
rozhranφ IProvider, kterΘ je Φßstφ vzdßlenΘho datovΘho modulu aplikaΦnφho
serveru. Rozhranφ
IProvider
je dußlnφ rozhranφ ActiveX, kterΘ je
z°φzeno aplikaΦnφm serverem, kdy╛ klient poprvΘ pou╛ije komponentu TMIDASConnection
pro z°φzenφ propojenφ na aplikaΦnφ server.
AplikaΦnφ server vytvß°φ rozhranφ IProvider jednφm
ze dvou zp∙sob∙. Pokud aplikaΦnφ server obsahuje jeden nebo vφce objekt∙
TProvider,
pak tyto objekty jsou vytvo°eny p°i vytvß°enφ rozhranφ
IProvider.
Pokud ne, pak aplikaΦnφ server vytvß°φ rozhranφ IProvider automaticky.
V obou p°φpadech, v╣echny data jsou p°edßvßna mezi klientskou aplikacφ
a aplikaΦnφm serverem prost°ednictvφm rozhranφ. Rozhranφ zφskßvß data z
a zasφlß aktualizace na normßlnφ komponenty datov²ch mno╛in C++ Builderu
a tyto komponenty komunikujφ s databßzov²m serverem prost°ednictvφm BDE.
Obecn∞, je n∞kolik klientsk²ch aplikacφ, kterΘ komunikujφ
s jednφm aplikaΦnφm serverem ve vφcevrstvovΘm modelu. AplikaΦnφ server
poskytuje brßnu k na╣im databßzφm a pro v╣echny na╣e klientskΘ aplikace
poskytuje databßzovΘ ·koly v centrßlnφm mφst∞.
Roz╣φ°enφ databßzovΘ architektury C++ Builderu
Mimo v╣ech t∞chto zp∙sob∙ vytvß°enφ databßzov²ch aplikacφ,
model otev°enΘ datovΘ mno╛iny umo╛≥uje roz╣φ°it architekturu p°idßnφm po╛adovan²ch
mo╛nostφ. V roz╣φ°enΘm modelu datov²ch mno╛in, urΦφme co po╛adujeme a odvodφme
u╛ivatelskou komponentu datovΘ mno╛iny od TDataSet nebo n∞kterΘho
z jeho potomk∙. Odvozenφm u╛ivatelskΘ komponenty od TDataSet umo╛≥uje
pou╛φt datovΘ ovladaΦe C++ Builderu k vytvß°enφ u╛ivatelskΘho rozhranφ.
Nap°. jestli╛e chceme udr╛ovat tenkou klientskou aplikaci,
pak ji m∙╛eme vytvo°it pomocφ TClientDataSet, ale kdy╛ se chceme
p°ipojit k databßzi DB2 bez pou╛itφ BDE, pak musφme vytvo°it u╛ivatelskou
komponentu datovΘ mno╛iny. TDataSet definuje funkΦnost spoleΦnou
pro v╣echny objekty datov²ch mno╛in. M∙╛eme zjistit, ╛e existujφcφ objekty
datov²ch mno╛in, jako TClientDataSet nabφzφ dal╣φ slu╛by, kterΘ
chceme pou╛φt. V tomto p°φpad∞ m∙╛eme odvodit u╛ivatelskou komponentu datovΘ
mno╛iny od
TClientDataSet namφsto od TDataSet. Tφm zmen╣φme
mno╛stvφ pot°ebnΘho k≤dovßnφ.
Nßvrh u╛ivatelskΘho
rozhranφ
Strßnka Data Controls Palety komponent poskytuje datovΘ
ovladaΦe, kterΘ reprezentujφ data z polo╛ek v zßznamech databßze a mohou
umo╛nit u╛ivateli editovat a odesφlat zm∞ny zp∞t do databßze. Pomocφ t∞chto
datov²ch ovladaΦ∙, m∙╛eme budovat u╛ivatelskΘ rozhranφ na╣φ databßzovΘ
aplikace tak, ╛e informace jsou viditelnΘ a p°φstupnΘ u╛ivateli.
DatovΘ ovladaΦe p°idßvßme k u╛ivatelskΘmu rozhranφ podle
typu zobrazovan²ch dat. Seznßmφme se s nimi v t∞chto bodech:
Zobrazovßnφ jednoho zßznamu
V mnoha aplikacφch m∙╛eme pouze po╛adovat poskytnutφ informacφ
o jednom zßznamu dat. Nap°. aplikace zadßvßnφ objednßvek m∙╛e zobrazovat
informace o jednΘ objednßvce bez indikovßnφ jakΘ ostatnφ objednßvky jsou
prßv∞ zadßvßny. Tuto informaci pravd∞podobn∞ zφskßme z jednoho zßznamu
v datovΘ mno╛in∞ objednßvek.
Aplikace kterΘ zobrazujφ jeden zßznam jsou obvykle snadno
ΦitelnΘ a pochopitelnΘ, proto╛e v╣echny databßzovΘ informace jsou o jednΘ
v∞ci (v p°edchozφm p°φklad∞ o n∞jakΘ objednßvce). DatovΘ ovladaΦe v t∞chto
u╛ivatelsk²ch rozhranφch reprezentujφ jednu polo╛ku ze zßznamu datovΘ mno╛iny.
Strßnka Data Controls Palety komponent poskytuje ╣irok² v²b∞r ovladaΦ∙
k reprezentaci r∙zn²ch t°φd polo╛ek.
Zobrazovßnφ vφce zßznam∙
N∞kdy po╛adujeme zobrazit mnoho zßznam∙ ve stejnΘm formulß°i.
Nap°. aplikace m∙╛e chtφt zobrazit na jednom formulß°i v╣echny objednßvky
od jednoho zßkaznφka.
K zobrazenφ vφce zßznam∙, pou╛ijeme ovladaΦ m°φ╛ky. OvladaΦ
m°φ╛ky poskytuje vφcepolo╛kov² vφce zßznamov² pohled na data, kter² m∙╛e
d∞lat u╛ivatelskΘ rozhranφ na╣φ aplikaci komplexn∞j╣φ a efektivn∞j╣φ.
M∙╛eme po╛adovat nßvrh u╛ivatelskΘho rozhranφ, kterΘ
zobrazuje jak polo╛ky z jednoho zßznamu tak i m°φ╛ky reprezentujφcφ vφce
zßznam∙. Jsou dva modely, kterΘ t∞chto p°φpadech pou╛φvßme:
-
Formulß°e Master-detail. M∙╛eme prezentovat informace
jak z tabulky Master tak i tabulky Detail vlo╛enφm ovladaΦ∙, kterΘ zobrazujφ
jednotlivΘ polo╛ky, tak i ovladaΦe m°φ╛ky. Nap°. m∙╛eme po╛adovat zobrazenφ
informacφ o jednom zßkaznφkovi s detailem m°φ╛ky, kterß zobrazuje objednßvky
pro tohoto zßkaznφka.
-
RozbalovanΘ formulß°e. Na formulß°, kter² zobrazuje
vφce zßznam∙, m∙╛eme vlo╛it ovladaΦe jednotliv²ch polo╛ek, kterΘ zobrazujφ
detailnφ informace z prßv∞ vybranΘho zßznamu. Tato mo╛nost je obzvlß╣t∞
u╛iteΦnß kdy╛ zßznam obsahuje dlouhou poznßmku nebo grafickou informaci.
Jak u╛ivatel prochßzφ zßznamy m°φ╛ky, memo nebo grafika je aktualizovßna
k zobrazovßnφ hodnoty souΦasnΘho zßznamu. Toto nastavenφ je velmi snadnΘ.
Synchronizace mezi dv∞mi zobrazenφmi je automatickß: pokud ovladaΦ m°φ╛ky
a memo nebo image sdφlejφ spoleΦn² datov² zdroj.
Poznßmka: Obecn∞ nenφ vhodnΘ kombinovat tyto dv∞
mo╛nosti na jednom formulß°i. I kdy╛ v²sledek m∙╛e b²t efektivnφ, je obvykle
obtφ╛nΘ pro u╛ivatele pochopit vzßjemnΘ vztahy dat.
Analyzovßnφ dat
N∞kterΘ databßzovΘ aplikace neprezentujφ databßzovΘ informace
p°φmo. Mohou analyzovat a sumarizovat informace z databßze a zobrazit souhrn
dat. Komponenta TDBChart na strßnce
Data Controls Palety
komponent umo╛≥uje prezentovat informace z databßze v grafickΘm formßtu,
co╛ umo╛≥uje u╛ivateli rychlΘ pochopenφ importovan²ch databßzov²ch informacφ.
Dßle n∞kterΘ verze C++ Builderu obsahujφ strßnku Decision
Cube na Palet∞ komponent. Obsahuje ╣est komponent, kterΘ provßd∞jφ
datovou anal²zu na datech.
Pokud po╛adujeme vlastnφ komponentu, kterß zobrazuje
sumarizovanß data na zßklad∞ r∙zn²ch seskupovacφch kritΘriφ, pak m∙╛eme
pou╛φt agregaΦnφ funkce s klientskou datovou mno╛inou.
V²b∞r, kterß data
zobrazit
╚asto data, kterß chceme zpracovßvat v na╣φ databßzovΘ aplikaci
neodpovφdajφ p°esn∞ dat∙m v jednΘ databßzovΘ tabulce. M∙╛eme po╛adovat
pouze podmno╛inu polo╛ek nebo podmno╛inu zßznam∙ v tabulce. M∙╛eme takΘ
kombinovat informace z vφce tabulek do jednoho spojenΘho pohledu.
Data dostupnß v na╣φ databßzovΘ aplikaci jsou urΦovßna
volbami komponenty datovΘ mno╛iny. Vlastnosti a metody abstraktnφ datovΘ
mno╛iny databßzovΘ tabulky nerozli╣ujφ to, zda data jsou ulo╛eny v databßzovΘ
tabulce nebo zda jsou odvozeny od jednΘ nebo vφce tabulek v databßzi.
Na╣e aplikace m∙╛e obsahovat vφce ne╛ jednu datovou mno╛inu.
Ka╛dß datovß mno╛ina reprezentuje logickou tabulku. Pomocφ datov²ch mno╛in,
logika na╣φ aplikace je slo╛ena z restrukturalizovan²ch fyzick²ch tabulek
v na╣φ databßzi. M∙╛eme pot°ebovat zm∞nit typ komponenty datovΘ mno╛iny
nebo zp∙sob specifikace obsa╛en²ch dat, ale zbytek na╣eho u╛ivatelskΘho
rozhranφ m∙╛e pokraΦovat v prßci beze zm∞ny.
M∙╛eme pou╛φvat tyto nßsledujφcφ typy datov²ch mno╛in:
-
Komponenty tabulek: Tabulky odpovφdajφ p°φmo p°ipojen²m
tabulkßm v databßzi. M∙╛eme urΦit, kterΘ polo╛ky zobrazovat (vΦetn∞ p°idßvßnφ
vyhledßvacφch a poΦitateln²ch polo╛ek) pomocφ trval²ch polo╛kov²ch komponent.
M∙╛eme omezit zobrazovanΘ zßznamy pomocφ rozsahu nebo filtru.
-
Komponenty dotaz∙: Dotazy poskytujφ obecn∞j╣φ mechanismus
pro specifikaci co mß b²t obsa╛eno v datovΘ mno╛in∞. M∙╛eme kombinovat
data z vφce tabulek pomocφ spojenφ a omezovat polo╛ky a zßznamy na zßklad∞
n∞jakΘho kritΘria uvedenΘho v p°φkazu SQL.
-
Ulo╛enΘ procedury: Ulo╛enΘ procedury jsou mno╛inami
p°φkaz∙ SQL, kterΘ jsou pojmenovanΘ a ulo╛enΘ na SQL serveru. Pokud nß╣
databßzov² server definuje vzdßlenΘ procedury, kterΘ vracejφ datovΘ mno╛iny,
pak m∙╛eme pou╛φt komponentu ulo╛enΘ procedury.
-
KlientskΘ datovΘ mno╛iny: KlientskΘ datovΘ mno╛iny
uklßdajφ zßznamy logickΘ datovΘ mno╛iny do pam∞ti. Mohou tedy obsahovat
pouze omezen² poΦet zßznam∙. Umo╛≥ujφ vytvß°et men╣φ aplikace, proto╛e
nevy╛adujφ BDE. KlientskΘ datovΘ mno╛iny jsou pln∞ny daty dv∞ma zp∙soby:
z aplikaΦnφho serveru nebo dat ulo╛en²ch v souboru na disku.
-
Vno°enΘ datovΘ mno╛iny: Vno°enΘ datovΘ mno╛iny reprezentujφ
zßznamy ve vno°enΘ detailnφ mno╛in∞ Oracle8. C++ Builder neumo╛≥uje vytvß°et
tabulky s vno°en²mi polo╛kami datov²ch mno╛in, ale umo╛≥uje jejich editaci
a zobrazenφ. Vno°enß datovß mno╛ina zφskßvß svß data z komponenty polo╛ky
datovΘ mno╛iny.
-
P°izp∙sobenΘ datovΘ mno╛iny: M∙╛eme vytvß°et svΘ vlastnφ
p°izp∙sobenΘ potomky TDataSet k reprezentaci dat, kterß vytvß°φme
nebo k nim p°istupujeme v k≤du.
Vytvß°enφ sestav
Pokud pot°ebujeme vytisknout databßzovΘ informace z datov²ch
mno╛in v na╣φ aplikaci, pak m∙╛eme pou╛φt komponenty sestav na strßnce
QReport
Palety komponent. Pomocφ t∞chto komponent m∙╛eme vizußln∞ budovat prou╛kovou
sestavu k prezentaci a sumarizaci informacφ z na╣ich databßzov²ch tabulek.
M∙╛eme p°idßvat sumarizace na hlaviΦky a patiΦky skupin k anal²ze dat na
zßklad∞ seskupujφcφch kritΘriφ.
![](/file/23411/Chip_2002-05_cd1.bin/chplus/cpp/4/PreviousArrow.gif) ![](/file/23411/Chip_2002-05_cd1.bin/chplus/cpp/4/NextArrow.gif) ![](/file/23411/Chip_2002-05_cd1.bin/chplus/cpp/4/WayUpArrow.gif) |
1. ┌vod do nßvrhu databßzov²ch
aplikacφ
|