
Domino a relační databáze - DECS - spojování dat z více tabulek 
Petr Šantrůček (ELAT), 03.07.2010
|
Kategorie: Články
Opět použijeme vzorovu db z minulého dílu, tedy Northwindtraders. Nejprve se podívejme na struktury tabulek v MS SQL databázi a realce mezi nimi.
Nyní se podívejme na příslušné formuláře v naší Notes databázi. Začneme formulářem pro data z tabulky Customers. Jde o formulář z předchozího dílu, jen malinko zdobnější. Navíc je v něm vložený poheld (Embedded View) pro pohled na objednávky dle CustomerID.
Příslušnou aktivitu v DECS Admin databázi máme z minula, pojďme tedy na samotné objednávky a jejich položky.
Struktura tabulky Orders v MS SQL vypadá následovně.
Vytvoříme si analogii v LN databázi.
A opět si potřebujeme vytvořit příslušné dokumenty Connection a Activity.
Až potud je vše, jak jsme byli zvyklí dosud. Nyní bez screenshotů (pozorní čtenáři již je nepotřebují) si vyrobte Connection dokumenty na tabulky Employees a Shippers. Vnímavý čtenář totiž jistě nepřehlédl, že ve formuláři pro tabulku Orders jsou pole, která nejsou na straně SQL databáze. Jde konkrétně o pole ShipperCompany a ShipperPhone a pak LastName a FirstName. Podívejte se na oba dokumenty Activity pro údaje přepravce (Shipper) a obchodníka (Employee).
Důležitá hodnota je v poli „Monitor Order“, kde je namísto implicitní jedničky hodnota 2. Spolu s hodnotou v poli Form to dává ten smysl, že aktivity sledující události nad formulářem Order se zpracují v pořadí podle hodnot v poli „Monitor Order“. To znamená v našem případě, že nejdříve se do LN databáze a jejího formuláže dotáhnou pomocí SELECT příkazu z SQL tabulky hodnoty tabulky Orders, potom se zpracují aktivity pro obchodníka a přepravce a na základě klíčů v polích ShippVia a EmployeeID se natáhnou (opět SELECTEM) údaje z tabulek Employees a Shippers. Vidíte, že na jednom LN formuláři se tak spojí údaje ze 3 různých tabulek.
Výsledek pak může vypadat takto. Pracujeme s pohledem na zákazníky:
Odtud si snadno otevřeme detail zákazníka a ve vloženém pohledu jeho realizované objednávky.
Otevřením dokumentu z vloženého pohledu vidíme detaily dané objednávky.
Ve formuláři objednávky se nám dotáhnou informace o dopravci a obchodníkovi, které jsou v jiných tabulkách na straně SQL. V LN aplikaci jsme je pomocí DECSu spojili aniž bychom museli vytvářet nějaký specializovaný pohled na straně SQL databáze.
Dále bychom ve formuláři Objedávky mohli mít pohled na řádky objednávky (tabulka Orders details) a ty opět otevřít. Toto již ponechám jako domácí cvičení čtenářům Postup ja analogický vazbě mezi zákazníkem a objednávkou.
Z výše uvedného vidíte, že použití DECSu se nemusí omezit je na tupé mapování 1:1 notesového dokumentu a konkrétní tabulky. Přestože jsme se nevyhnuli použití Domino Designera, nelze to považovat za programování. A přece jsme se dostali až k funkčnímu základu aplikace používající relační databázi a její data. Příště se posunueme o krok dále - od čerpání dat ze SQL serveru k jejich úpravám (a postupně tkaé ke slíbeným detailům o nastavení RealTime Fields Activities a řešení kolizí a nestandardních stavů).
Seznam komentářů (2)
