Integrita dat datab áze Oracle

Post on 23-Feb-2016

70 views 1 download

description

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. - PowerPoint PPT Presentation

transcript

Integrita dat databáze Oracle

Lubomír Andrlelubomir.andrle@unicorn.eu

4. přednáška21.10.2013

Obsah

• Data integrity– Integrity constraints– Reference integrity– Triggers

• Jak přistupovat k řešení data integrity

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ý Unique Key– Skládá se z více sloupců

PRIMARY KEY constraint

• Každá tabulka musí mít definován právě jeden Primary Key (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í Primary Key Columns

• Ú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

REFERENCE INTEGRITY

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

• Foreign Key (FK)– Sloupec, který určuje danou referenci

• Reference Key– Unique nebo primary key, který je referencován

právě cizím klíčem (FK)• Závislá tabulka (child)– Tabulka obsahující FK

• Referencovaná tabulka (parent)

Foreign Key

• Dvě úrovně zadání– Hodnota odpovídá odkazované hodnotě– Obsahuje NULL hodnotu

• Možnost využití DELETE CASCADE

Foreign Key

Foreign Key – reference v 1 tabulce

Foreign Key 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

Triggers

JAK PŘISTUPOVAT K ŘEŠENÍ DATA INTEGRITY

Best practices

• 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

Q&A