300 likes | 518 Views
Integrita dat datab áze Oracle. Lubom ír Andrle lubomir.andrle @ unicorn.eu 4 . přednáška 21 .10.201 3. Obsah. Data integrity Integrity constraints Reference integrity Triggers Jak přistupovat k řešení data integrity. DATA integrity. Data integrity.
E N D
Integritadatdatabáze Oracle Lubomír Andrle lubomir.andrle@unicorn.eu 4. přednáška 21.10.2013
Obsah • Data integrity • Integrity constraints • Reference integrity • Triggers • Jak přistupovat k řešení data integrity
Data integrity • Integrita databáze znamená, že databáze vyhovuje zadaným pravidlům – integritním omezením (wiki) • Důvody vzniků nekonzistencí • nedostatečná aktualizace dat • vložení nesprávných hodnot • Vložená data neodpovídají realitě • referenční integrita • Při rušení řádku v jedné tabulce může nastat situace, kdy v jiné tabulce zůstanou informace, které se k tomuto řádku vztahují (odkazují)
Zajištění data integrity • Volba správného datového typu • Číslo je opravdu číslo, apod. • Použití mechanismu Integrity constraints • Využití triggerů
Integrity constraints • NOT NULL • UNIQUE KEY • PRIMARY KEY • FOREIGN KEY • CHECK
NOT NULL constraint • Zamezuje vložení NULL hodnoty do daného sloupce
UNIQUE KEY constraint • Zamezuje vložení dvakrát stejné hodnoty do daného sloupce
COMPOSITE UNIQUE KEY • Lze definovat tzv. Složený UniqueKey • Skládá se z více sloupců
PRIMARY KEY constraint • Každá tabulka musí mít definován právě jeden PrimaryKey (PK) constraint • Implementace PK constraint garantuje • V rámci jedné tabulky neexistují dva řádky se stejným PK • PK neumožňuje vložit hodnotu NULL
PRIMARY KEY (PK) • Sloupce definující PK constranit se nazývají PrimaryKeyColumns • Úloha PK • Každý řádek je jednoznačně identifikován • Neexistují duplicitní řádky v jedné tabulce
PRIMARY KEY Indexes • Každý PK constraints používá Index • Unique index • I pro složené PK je vytvořen složený Index
CHECK constraint • Omezení definováno speciální podmínkou
Jak definovat contraints • Při založení a úpravě tabulek • CREATE a ALTER TABLE • Pozor na zanedbání definice constraints! • Ošetření na úrovni business vrstvy není dostačující • Lze využít jako doplněk DB constraints
Integrity contraints a výkon • Každý constraint má dopad na práci s řádky • Pořadí náročnosti • NOT NULL • UNIQUE • PRIMARY KEY • FOREIGN KEY • CHECK • TRIGGERS
Co je referenční integrita • Jedná se o požadavek, aby pro pole záznamu, jež má obsahovat odkaz na jiný záznam někde v databázi, takový odkazovaný záznam skutečně existoval, tedy aby takový odkaz nevedl „do prázdna“ a nejednalo se o tzv. databázového sirotka (wiki)
Referenční integrita - Reference integrity • Každá reference mezi tabulkami podléhá určitým pravidlům • Úkolem referenční integrity je tyto pravidla dodržovat a udržovat • Reference integrity constraints
Reference integrity constraints • ForeignKey (FK) • Sloupec, který určuje danou referenci • Reference Key • Unique nebo primarykey, který je referencován právě cizím klíčem (FK) • Závislá tabulka (child) • Tabulka obsahující FK • Referencovaná tabulka (parent)
ForeignKey • Dvě úrovně zadání • Hodnota odpovídá odkazované hodnotě • Obsahuje NULL hodnotu • Možnost využití DELETE CASCADE
ForeignKey III • Porovnání zámků při indexovaném FK
Další možnosti constraints • Možnost definovat typ vyhodnocení constraints • deferrable nebo not deferrable • Stavy constraints • Enable, Disable • Validate, Novalidate
Triggers • Definice dalších integritní omezení • Komplexnější definice kontrol, jež se budou provádět při každém pokusu o zápis záznamu do databáze • Typ uložené procedury spouštěné za předem definovaných událostí • Insert, Update, Delete
Bestpractices • Constraints používejte vždy! • Výjimky • Dávkový import dat • Rozsáhlé datové modely, kde je již v době návrhu počítáno s absencí některých constraints
Informace • http://docs.oracle.com/cd/B19306_01/server.102/b14220/data_int.htm#i4665