Anchor modeling je technologie modelování datového skladu vhodná pro informace, které se v čase mění jak ve struktuře, tak v obsahu. Poskytuje grafiku[ objasnit ] používá se pro koncepční modelování, podobné modelování entit a vztahů , s rozšířeními pro práci s časovými daty. Technika modelování využívá čtyři modely modelování: Anchor, Attribute, Link a Node, z nichž každý odráží různé aspekty modelované domény. Výsledné modely lze převést do fyzických návrhů databází pomocí formalizovaných pravidel. Když je takový překlad proveden, tabulky v relační databázi budou většinou v šesté normální formě .
Kotevní modelování bylo vytvořeno s cílem využít vysoký stupeň normalizace databáze a vyhnout se jejím nevýhodám. Existují výhody, jako je schopnost nezničit model, vyhnout se prázdným (tj. null ) hodnotám a nepovolit nadbytečné informace. Problémy s výkonem kvůli zvláštním spojením jsou do značné míry eliminovány funkcí v moderních databázových strojích nazývanou „ eliminace tabulek “.
První datové sklady na kotevních modelech byly vybudovány ve Švédsku , první z nich (2004) byl pro pojišťovnu. V roce 2007 byla tato technika použita v několika datových skladech a jednom systému OLTP a mezinárodně ji představil Lars Rönbeck na konferenci TDWI (Data Warehouse Institute) v Amsterdamu [1] . To podnítilo zájem o techniku, aby získal formálnější popis. Od té doby probíhá výzkum související s modelováním kotev ve spolupráci tvůrců - Ulle Regardt a Larse Rönbecka, a také za účasti specialistů z Katedry počítačových a systémových věd Stockholmské univerzity . První příspěvek [2] , který technologii formálně popisoval, byl prezentován na 28. mezinárodní konferenci konceptuálního modelování [3] a získal cenu za nejlepší příspěvek.
Materiál pro modelování kotvy je dostupný pod licencí Creative Commons . K dispozici je také online simulační nástroj, který lze používat volně a jako open source.
Modelování kotev má čtyři základní koncepty modelování: kotvy, atributy, vazby a uzly. Kotvy se používají k modelování entit a událostí, atributy se používají k modelování vlastností kotev, spojuje modelové vztahy mezi kotvami, uzly se používají k modelování obecných vlastností, jako jsou stavy. Atributy a vztahy lze interpretovat, když je třeba uložit změny informací, které modelují.
Příkladný model zobrazující různé grafické symboly pro čtyři koncepty modelu je uveden níže. Symboly se podobají symbolům použitým v modelu modelování entit a vztahů s několika rozšířeními.[ specifikovat ] . Dvojitý obrys na atributu nebo kotvě znamená, že je uchovávána historie změn a je k dispozici také symbol uzlu (zakroužkovaný čtverec se zaoblenými hranami).
Kotevní modelování řídí dva typy informačního vývoje[ upřesnit ] , strukturální změny a obsahové změny. Změny ve struktuře informací jsou znázorněny prostřednictvím rozšíření. Vysoký stupeň normalizace dat umožňuje nedestruktivně přidávat nezbytné koncepty modelování potřebné k potvrzení změn, takže každé předchozí schéma databáze vždy zůstane jako podmnožina aktuálního schématu . Vzhledem k tomu, že stávající schéma je nedotčené, má to tu výhodu, že se může vyvinout do databáze velmi iterativním způsobem a nezpůsobit žádné prostoje.
Změny obsahu informací se provádějí emulací podobných funkcí dočasné databáze v relační databázi . V ukotveném modelování mohou být informace svázány s časovými body nebo s časovými obdobími (otevřenými i uzavřenými). Časy, kdy k událostem dochází, jsou modelovány pomocí atributů, jako jsou data narození lidí nebo časy nákupu. Časové intervaly, ve kterých je hodnota platná, jsou pevně stanoveny pomocí historizace[ termín neznámý ] atributy a vztahy, jako jsou změny v barvě vlasů osoby nebo doba, po kterou je osoba vdaná. V relační databázi je toho dosaženo přidáním jednoho sloupce datového typu , dostatečně zrnitého, aby zachytil rychlost změny v tabulce odpovídající historickému atributu nebo vztahu. To přidává trochu složitosti, protože je třeba prozkoumat více než jeden řádek v tabulce, aby se zjistilo, zda je interval uzavřen nebo ne.
Body nebo časové intervaly, které nejsou přímo spojeny s modelovanou doménou, jako jsou informace o časovém bodu vložené do databáze, jsou zpracovávány pomocí metadat v modelování kotev a nikoli v žádné z výše uvedených konstrukcí. Pokud chcete uložit informace o takových změnách do databáze, můžete použít modelování s odkazem na bidemop[ neznámý termín ] kotvy, kde se kromě aktualizací stávají odstraněné příkazy nedestruktivními.
V kotevním modelování existuje vzájemná shoda mezi symboly použitými v koncepčním modelu a tabulkami v relační databázi. Každá kotva, atribut, odkaz a uzel má v databázi odpovídající tabulku s jedinečně definovanou strukturou. Koncepční model lze tedy pomocí jednoduchých automatických pravidel převést do schématu relační databáze a naopak. To se liší od mnoha jiných modelovacích technik, kde existují složité a někdy subjektivní kroky překladu mezi konceptuální, logickou a fyzickou úrovní.
Tabulky vazeb obsahují jeden sloupec, který ukládá informace o identitě. Identita je považována za jedinou vlastnost objektu, která je vždy přítomná a neměnná. Protože identity jsou z modelované domény jen zřídka dostupné, jsou místo toho technicky generovány, např. ze vzestupné číselné sekvence.
Příkladem kotvy pro identifikaci synovců Kačera Donalda je sada 1 n-tic:
{⟨#42⟩, ⟨#43⟩, ⟨#44⟩}
Uzly si lze představit jako kombinaci kotvy a jediného atributu. Tabulky uzlů obsahují dva sloupce, jeden pro ID a jeden pro hodnotu. Kvůli ukládání identit a hodnot nelze uzly interpretovat. Jejich užitečnost vychází ze schopnosti snížit požadavky na paměť a zlepšit výkon, protože tabulky odkazující na uzly mohou ukládat spíše krátkou hodnotu než dlouhý řetězec.
Příkladem uzlu pro skupiny pohlaví je sada dvou n-tic:
{⟨#1, 'Male'⟩, ⟨#2, 'Female'⟩}
Tabulky statických atributů obsahují dva sloupce, jeden pro ID objektu, ke kterému hodnota patří, a jeden pro skutečnou hodnotu vlastnosti. Tabulky historických atributů mají další sloupec pro uložení počátečního bodu časového intervalu. V tabulce atributů uzlů je sloupec hodnoty identifikátor, který odkazuje na tabulku uzlů.
Příkladem statického atributu pro jejich jména je 2-tice sada:
{⟨#42, 'Huey'⟩, ⟨#43, 'Dewey'⟩, ⟨#44, 'Louie'⟩}
Příkladem vázaného statického atributu pro jejich pohlaví je sada dvou n-tic:
{⟨#42, #1⟩, ⟨#43, #1⟩, ⟨#44, #1⟩}
Příkladem atributu s historií pro (měnící se) barvy jejich oblečení je sada 3 řad:
{⟨#44, 'Orange', 1938-04-15⟩, ⟨#44, 'Green', 1939-04-28⟩, ⟨#44, 'Blue', 1940-12-13⟩}
Tabulky statických spojů navzájem spojují dvě nebo více kotev a obsahují dva nebo více sloupců pro ukládání identifikátorů. Historicky měly spanning tabulky další sloupec pro uložení počátečního bodu časového intervalu. Propojené tabulky s uzlem mají další sloupec pro každý uzel propojení.
Příkladem statického vztahu pro sourozenecký vztah je sada dvou n-tic:
{⟨#42, #43⟩, ⟨#42, #44⟩, ⟨#43, #42⟩, ⟨#43, #44⟩, ⟨#44, #42⟩, ⟨#44, #43⟩}
Všechny výsledné tabulky budou v šesté normální formě , s výjimkou vztahů, kde nejsou všechny sloupce součástí primárního klíče.