Rozkládání dokumentů do databázových tabulek

Rozkládání dokumentů do databáze je klíčovým momentem celého systému flexideo. Jak uživatelé, tak i návrháři informační struktury užívají nebo vytvářejí pouze dokumenty a nikoli tabulky. Ty se vytvářejí v závislosti na struktuře dokumentu zcela automaticky.

Jako příklad si můžeme vzít dokument faktura, na který jsme již dříve narazili. Tento dokument obsahuje celkem tři hlavní oblasti, v rámci kterých ještě existují podoblasti (např. v oblasti hlavicka existují vedle prvků i dvě podoblasti dodavatel a odberatel). V našem případě však nejsou zajímavé, protože mají z hlediska rozkládání tabulek stejné nastavení.

rozlozeni-faktury

První a třetí oblast nemají nastaven opakovatelný atribut repeat (tj. použije se výchozí repeat="none") a proto jsou uloženy do hlavní tabulky. Tato tabulka má vždy shodné jméno jako má zkratka jména dokumentu (vlastnost short dokumentu). Druhá oblast má nastaven atribut repeat na hodnotu user, protože jedna faktura může mít několik fakturačních položek. Proto je nutné pro tuto oblast vytvořit novou, podřízenou tabulku, jejíž sloupce budou odpovídat jednotlivým prvkům oblasti polozky.

Název takové podřízené tabulky se tvoří z názvu hlavní tabulky a zkratkového názvu (short) patřičné oblasti podle následující syntaxe:

Document short + "_" + Area short

Mezi hlavní a podřízenou tabulkou se vytvoří relace 1 : n (jedna faktura = několik položek).

V rámci oblasti polozky (short="pol") je možné vytvořit další podoblast a nastavit této oblasti také možnost opakování. Například seznam komponent (komponenty / komp), které obsahuje jedna fakturační položka). V tom případě se vytvoří podřízená tabulka faktura_pol_komp, která bude mít relaci 1 : n k podřízené tabulce faktura_pol (jedna položka = několik komponent).

Název hlavní tabulky odpovídá definovanému zkrácenému názvu celého dokumentu (tag short v definici dokumentu DocumentDef).

Každý prvek, který se v dokumentu vyskytuje má svůj zkratkový název (atribut short). Z tohoto názvu se tvoří i název sloupce tabulky. K názvu prvku se přidává zároveň název oblasti, ve které je umístěn a to podle následující syntaxe:

Area short + "_" + Element short

Pokud se prvek vyskytuje v oblasti, která je podoblastí jiné oblasti, pak se názvy dále skládají. Tak může například prvek s telefonním číslem do kanceláře (kancelar / kanc), který je umístěn v dokumentu klienta (klient / klnt), oblasti údaje o klientovi (udaje / udj) a podoblasti telefonní čísla (telefony / tel), mít následující název:

udj_tel_kanc

Tento sloupec pak bude uložen v tabulce klnt. Podle zápisu syntaxe SQL pak bude přístup k údaji o telefonu (v rámci dané databáze) následující:

klnt.udj_tel_kanc

Pokud bychom se rozhodli, že klient může mít více telefonních čísel do kanceláře, pak bychom to vyřešili opakovanou oblastí a ta by automaticky dostala v databázové struktuře podtabulku. Pak by odkazování bylo následující

klient_udj_tel.kanc

To samozřejmě vyžaduje zadat i patřičné podmínky (např. abychom získali telefony jen daného klienta, atp.).


Rozkládání dokumentů do databázových tabulekNázvosloví klíčových sloupců tabulekVytváření primárních a cizích klíčů segmentů a dokumentůCo je DAD?