Dosud je vše stejné. Nyní je však třeba připojit data ukládaná do tabulek jiného dokumentu. Uvědomme si nejprve, že vedle prvků definovaných v XDS jsou ještě prvky, které jsou tvořeny automaticky. Jsou to prvky fdk a fsk do kterých se ukládá klíčová hodnota odkazovaného dokumentu a případně i odkazovaného segmentu, pokud je opakovatelný. V případě propojení způsobem foreign jsou klíčové hodnoty jediný údaj, který se v dokumentu ukládá - to je i tento příklad. Vzhledem k tomu, že ani obast iniciály zástupce ani oblast subjekt nejsou opakovatelné, budou se klíče ukládat do hlavního array. U propojení na dokument subjekt je vedle klíče dokumentu ještě zapotřebí klíč provozovny, neboť ta je v dokumentu subjekt opakovatelná (již nepotřebujeme klíče opakovatelné oblasti telefon a opakovatelného prvku e-mail, protože ty nejsou zahrnuty do služby korespondenční adresa. Za klíčové hodnoty ještě doplníme vlastní prvky specifikace vztahu a hlavní array zástupce subjektu bude vypadat takto:
Zástupce subjektu
45
46
007
pdk
general ...
fdk1
fdk2
fsk1
uprvz_drvz
uprvz_fus
008
009
010
table:
zastsub
basic
true
distance:
0
select:
true
previous:
0
key-owner:
false
key-prev:
0
frgn-main:
false
join-key:
-
Nyní se podívejme na odvozené array pro iniciály zástupce:
Zástupce subjektu
35
36
37
38
39
008
pdk
cjm_kjm
cjm_pjm
adr_uli
adr_mst
adr_psc
table:
clovek
basic
false
distance:
1
select:
true
previous:
007
key-owner:
false
key-prev:
007
frgn-main:
true
join-key:
fdk1
Názvy políček v tomto array jsou převzaty z názvů základního (a zároveň hlavního) array dokumentu člověk. Proto neodpovídají skladbě short na větvi každého prvku z dokumentu zástupce subjektu. Ve vlastnostech odvozeného array není název tabulky, která patří dokumentu zástupce subjektu (i když toto odvozené array k němu patří), ale název tabulky pro dokument typu člověk. Zároveň se závislost na hlavním array zvyšuje na hodnotu 1 a ve vlastnostech je jednoznačně určeno, že se jedná o odvozené array (basic=false). I nadále se však jedná o příkazové array (select=true).
Vedle odvozeného array pro iniciály zástupce bude ještě dále existovat odvozené array pro účely subjektu. Zde se nám začínají kombinovat dvě souvislé skutečnosti vytvářející větší počet array než je na první pohled třeba. Jedná se o kombinaci cizího zdroje a opakovatelnosti tohoto zdroje, což na místo jedné array pro subjekt vytváří array dvě a to i přesto, že dokument zástupce subjektu pro účely propojení na dokument subjekt neobsahuje opakovatelné segmenty. Důvod je ovšem prostý, každé array v systému může být (aby plnilo svou funkci) ukládáno pouze v jediné databázové tabulce. Korespondenční adresa subjektu je ukládána do tabulek dvou a proto i všechny další dokumenty využívající tato data musí tuto skutečnost odrážet ve struktuře svých odvozených array. Naše array pro propojení na adresu subjektu budou tedy tato:
Zástupce subjektu
40
009
pdk
ozn_ojm
table:
subjekt
basic
false
distance:
2
select:
true
previous:
007
key-owner:
false
key-prev:
007
frgn-main:
true
join-key:
fdk2
Zástupce subjektu
41
42
43
44
010
psk
opr
adr_uli
adr_mst
adr_psc
table:
subjekt_pvz
basic
false
distance:
2
select:
true
previous:
009
key-owner:
false
key-prev:
007
frgn-main:
false
join-key:
fsk1
Všimněte si, že v array č. 007 jsou uvedeny odkazy na všechny tři zbývající array dokumentu zástupce subjektu (tj. odkazy fdk1 - 008/clovek, fdk2 - 009/subjekt a fsk1 - 010/provozovna). Díky těmto odkazům se pak na základě jednotlivých array tvoří SQL příkazy pro operace s daty dokumentů, kde je třeba realizovat spojení tabulek (viz. algoritmus pro sestavování příkazů SELECT pro přehledy dokumentů dle zadaných výstupních sloupců a vstupních kritérií - příloha 2).
V tomto příkladu se poprvé vyskytla odlišnost vlastnosti previous a key-prev. Zatímco previous odkazuje na cizí array tabulky subjekt,key-prev odkazuje na vlastníka klíče fsk1 v rámci dokumentu zástupce. To je také důvod proč jsou uváděny v každém vedlejším poli obě hodnoty - indikují přesun použitého klíče. POZN: Pokud by bylo z nějaké důvodu u dokumentu zástupce třeba nahlížet na všechny provozovny cizího dokumentu subjekt (a nikoli jen výběr provozovny pro zástupce) a za tím účelem se použilo respektované opakování (repetition="type:depend"), pak by se opět obě hodnoty předchozích array shodovaly.
Pokud by bylo zapotřebí propojit zástupce subjektu s více než jedním subjektem, pak by se oblast subjekt musela nastavit jako opakovatelná. To by pro DAD znamenalo vytvoření ne jednoho základního array, ale dvou. Klíče pro propojení na subjekt, které jsou uloženy v kolonkách fdk2 a fsk1 v hlavním array dokumentu zástupce subjektu by se museli přesunout do vedlejšího základního array pro opakovatelnou oblast a na odvozená array subjektu by bylo odkazováno odtud. Tuto kombinaci nyní uvidíme v další příkladu.