Jak na denormalizovaná data v ObjectGears

22.03.2016

S následující situací se pravděpodobně již mnohokrát setkal každý správce či vývojář databázového systému. Začnete s textovým pole, které uživatelům poskytuje flexibilitu v zadání dat, ale později zjistíte, že byste potřebovali spíše odkaz na číselník hodnot (cizí klíč), abyste řešili kvalitu a denormalizaci dat. Např. potřebujete evidovat další vlastnosti odkazované entity nebo ji propojit s dalšími informacemi ve vašem systému. Jak s řešením tohoto problému pomáhá ObjectGears? O tom se dočtete v tomto článku.

ObjectGears odstiňuje uživatele od databázové implementace. Nabízí mu proto i funkce, které by jinak řešil databázový administrátor.

Výše uvedený problém by Vás v ObjectGears asi napadlo řešit následujícím způsobem:

  1. Vytvoření nové třídy pro daný číselník

  2. V třídě obsahující textový sloupec, který se má nahradit, vytvoříme sloupec typu odkaz na novou třídu/číselník

  3. Z třídy s textovým sloupcem exportujeme data do souboru

  4. Data ze souboru importujeme do třídy číselník pomocí funkce importující unikátní záznamy

  5. Ve třídě s textovým sloupcem postupně filtrujeme záznamy podle textového pole a nastavujeme odpovídající záznamy ve sloupci typu odkaz na číselník pomocí hromadných změn

Body 4 a 5 by bylo možné řešit i vytvořením mapovací tabulky různých hodnot v textovém sloupci a odpovídající hodnoty číselníku a importu pomocí mapovacího dotazu použitého pro import.

ObjectGears nabízí také další možnosti, které využijete při rozsáhlejších úpravách datového modelu a migracích dat.

Funkce CreateTypeRows

Tuto funkci spustíte ve Skriptovacím okně ObjectGears. Jako vstupy jí předáte identifikátor textového sloupce, identifikátor sloupce s hodnotami v číselníku a identifikátor sloupce s odkazem. Tento jediný příkaz vyřeší vše za vás. Pokud chcete provést vyčištění dat, proveďte ho předtím pomocí filtrování a hromadných změn záznamů.

Export číselníku pomocí Admin toolu

Stejnou operaci můžete provést i v Admin toolu. Třídy a sloupce vybíráte v comboboxech.