V 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:<?php
class Product { public $name; public $description; }
class Book extends Product { public $pagesCount; public $author; }
class Phone extends Product { public $system; public $batteryCapacity; }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.
Reference
Kategorie:Programování