1. ┌vod do nßvrhu databßzov²ch aplikacφ

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: 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:

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φ:

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:

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:

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: 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:
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φ.
 
1. ┌vod do nßvrhu databßzov²ch aplikacφ