Začínáme
Systém LISp-Miner a proces DZD
Analytické procedury
Pokročilé funkce
Výzkum a vývoj
Začínáme
Systém LISp-Miner a proces DZD
Analytické procedury
Pokročilé funkce
Výzkum a vývoj
Vztahy mezi tabulkami (angl. relationships) jsou v relačních databázích realizovány pomocí primárních a cizích klíčů. Vždy určíme sloupce v první a ve druhé tabulce, jejichž hodnoty musí být shodné.
Na obrázku vidíme relační schéma pro data Hotel. Tabulka Hotel je na dvě další tabulky propojena pomocí hodnoty ve sloupci PPobytOd (den začátku pobytu). Druhé dvě tabulky pak obsahují záznamy pro každý den sledovaného období.
Oba vztahy jsou typu 1:n (resp. n:1) – pro jeden záznam v tabulce Hotel je vždy právě jeden záznam v tabulce Meteo a právě jeden záznam v tabulce Smenarna. Pro jeden záznam v tabulkách Meteo a Smenarna však může existovat více záznamů v tabulce Hotel, protože v jeden den mohlo přijet více hostů.
Pozor! Pokud je mezi tabulkami vztah m:n, není obvykle možné vytvořit nad nimi databázový pohled. Proto ani nezadáváme vztah mezi tabulkami a hodnoty z druhé tabulky musíme nejprve nějakým způsobem seskupit (agregovat). To můžeme udělat buď už v databázi, nebo použijeme odvozenou hodnotu vypočtenou vnořeným SQL dotazem.
Postupně zadáváme relace pro všechny vztahy typu 1:n (případně 1:1) mezi tabulkami v analyzovaných datech.
V menu Data Introduction
vybereme položku Relationships
a objeví se dialogové okno se seznamem již nadefinovaných vztahů.
Pomocí tlačítka Add
přidáváme vztah nový. Vybereme obě tabulky, mezi kterými chceme vztah vytvořit.
Po stisku tlačítka Ok
se objeví dialogové okno vztahu mezi dvěma tabulkami, ve kterém opět pomocí tlačítka Add
zadáme jednu (nebo více) vazebních podmínek. Obvykle jde o výběr dvojice sloupců (první z první tabulky, druhý z druhé tabulky), jejichž hodnoty se mají rovnat.
V systému LISp-Miner je momentálně možné definovat pouze „vnitřní spojení“ tabulek (angl. inner join).
Někdy může být potřeba vazební podmínku definovat pomocí výrazu. Příkladem je situace, kdy v databázovém sloupci typu Datum/Čas
je vyplněna jak složka datumu, tak času. Chceme-li definovat vztah n:1 s tabulkou obsahující informace k jednotlivým dnům, tak vazební podmínka v podobě např. PPobytOd = MDatum nebude fungovat správně, protože se budou ignorovat hosté, kteří měli vyplněný i čas příjezdu. Hodnotu ve sloupci PPobytOd je nejprve třeba převést pouze na datum. V případě použití Accessu jako databáze pro uložení dat použijeme funkci Int a podmínka bude vypadat Int(PPobytOd) = MDatum.
Způsob zadání v LISp-Mineru vidíme na obrázku.
Pozor! Nevkládejte funkci Int tam, kde není nezbytně nutná. I když by bylo možné zapsat podmínku i jako Int(PPobytOd) = Int(MDatum), tak dojde k výraznému zpomalení vytváření odvozeného pohledu v Accessu.
Související témata:
Vytvoření dynamického databázového pohledu
Seznam databázových tabulek
Praktická ukázka: Demo Hotel: Propojení tabulek