Firebird 10.díl, Domény

Napsal O webu (») 7. 1. 2008 v kategorii Databáze, přečteno: 2385×
Tento článek je psán za podpory webhostingu banan.cz, který Firebird plně podporuje.

Domény

Firebird sice neumožňuje vytvářet vlastní datové typy, ale umožňuje vytvářet pojmenované skupiny vlastností spojených s existujícím datovým typem označovaných jako domény. Domény lze použít při definici sloupců tabulek na místě datového typu. Sloupec poté získává datový typ a všechny vlastnosti definované v doméně. Využití domén pro definici sloupců je výhodné, je-li například více sloupců v navržené databázi stejné charakteristiky. Pak je definice sloupců mnohem přesnější, jednodušší a přehlednější. Další nespornou výhodou definice domén je, že při změně definice domény se automaticky změní vlastnosti všech sloupců tabulek, které jsou z dané domény odvozeny.


Při definici domény lze specifikovat následující vlastnosti:


1. Datový typ (povinně)
2. Implicitní hodnotu pro operace INSERT
3. NULL status (povolení/zakázání vstupu NULL)
4. CHECK podmínka omezující přípustné hodnoty
5. Znakovou sadu (pro řetězce a BLOBy)
6. COLLATE (předpis třídění řetězců)

Vytvoření domény

Syntaxe pro vytvoření domény
CREATE DOMAIN název [AS] <datový typ>
[DEFAULT literál |NULL |USER}]
[NOT NULL] [CHECK (<doménová podmínka >)]
[CHARSET znaková sada | NONE}]
[COLLATE collate];



Název domény musí být v rámci databáze unikátní. Povinný je pouze datový typ, ostatní vlastnosti nemusí být při vytváření domény vyplněny. Lze použít všechny datové typ, včetně BLOB a ARRAY.


Příklady definice domény
CREATE DOMAIN mojedomena AS CHAR (10) [0:10]; //doména pole znaků CHAR
CREATE DOMAIN mojedomena2 AS BLOB SUB_TYPE TEXT CHARACTER SET win1250; // doména textového BLOBu v kódování WIN1250



Atribut default


Tato implicitní výchozí hodnota bude použita v případě, nebude-li v příkazu INSERT specifikována hodnota pro sloupec založený na doméně. Například pro doménu typu DATE může být výchozí hodnotou aktuální čas. Dále implicitní hodnotou může být konstanta (uživatelem definovaná), NULL, datumový literál, USER (aktuálně přihlášený uživatel) a ostatní kontextové proměnné.


V následujícím příkladu je vytvořena doména UZIVATEL s definicí výchozí hodnoty loginu aktuálního přihlášeného uživatele.


CRETE DOMAIN uzivatel AS CHAR(20) DEFAULT USER;
CREATE TABLE zbozi (pocet INTEGER
zadal UZIVATEL
vytvoreno DATE );
INSERT INTO zbozi (pocet, vytvoreno) VALUES ('500','5.10.2007');



Jelikož nebyl při vkládání do tabulky "zbozi" specifikována položka "zadal", byla do řádku vložena implicitní hodnota. Kdyby výše uvedený příkaz zadal uživatel BANAN bude výsledek:


SELECT * FROM zbozi //dotaz
500 BANAN 5.10.2007 // odpověď



Atribut NOT NULL


Tento atribut je vhodné použít tam, kde je vyžadováno, aby všechny sloupce odvozené z dané domény měly nějakou hodnotu. NOT NULL reprezentuje stav, kdy je nutné do dané položky vložit nějakou hodnotu. Při pokusu o vložení prázdné položky do sloupce definovaného jako NOT NULL se zobrazí chybové hlášení a příslušná operace bude zrušena.


V následujícím díle se podíváme na další atributy, které je možné použít u vytváření domén ve Firebirdu.


Autor: Robert Habrman
Štítky: Firebird
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
Článek ještě nebyl okomentován.


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel nula a třináct