Discriminator
Author
Albert FloresV programování slouží discriminator jako identifikátor entity (tzv. tag), který vyjadřuje, o jaký typ entity se jedná na základě předem definovaného výčtu, který určuje samotný systém (například UNION nebo ENUM typ v relační databázové tabulce).
Discriminator se používá pro převod objektového návrhu entit v rámci programovacího jazyka do tabulkové podoby, kdy potřebujeme zachovat informaci o názvu původního typu entity v programovacím jazyce.
Příklad:
Mějme 3 entity reprezentující různé typy produktů v internetovém obchodu, které mezi sebou zároveň definují závislosti pomocí dědičnosti: Například v jazyce PHP můžeme velice jednoduše instancovat objekt Book, která reprezentuje produkt s knihou a přidává informaci o počtu stran a autorovi. Pokud však budeme chtít všechny typy produktů (základní produkt, knihu a telefon) uložit do relační databáze, můžeme vytvořit pouze jednu tabulku product, která bude mít následující sloupce:
* name * description * pages_count * author * system * battery_capacity * discriminator
Sloupec discriminator v tomto případě bude nést hodnoty product, book nebo phone v závislosti na aktuálně uložené entitě. Úkolem knihovny pro obsluhu databáze v konkrétním jazyce (například Doctrine) je pochopit nastavení Discriminatoru a podle toho vytvořit instance správné entity s ohledem na předem definovaný seznam.