12 Pravidel E F Codda 1. Informační pravidlo: Všechny informace v relační databázi jsou vyjádřeny explicitně na logické úrovni jediným způsobem - hodnotami v tabulkách. 2. Pravidlo jistoty: Všechna data v relační databázi jsou zaručeně přístupná kombinací jména tabulky s hodnotami primárního klíče a jménem sloupce. 3. Systematické zpracování nulových hodnot: Nulové hodnoty jsou plně podporovány relačním SŘBD pro reprezentaci informace, která není definována a to nezávisle na datovém typu. 4. Dynamický on-line katalog založený na relačním modelu: Popis databáze je vyjádřen na logické úrovni stejným způsobem jako zákaznická data, takže autorizovaný uživatel může aplikovat stejný relační jazyk ke svému dotazu jako uživatel při práci s daty. 5. Obsáhlý datový podjazyk: Relační systém může podporovat několik jazyků a různých módů použitých při provozu terminálu. Nicméně musí být nejméně jeden příkazový jazyk s dobře definovanou syntaxí, který obsáhle podporuje definici dat, definici pohledů, manipulaci s daty jak interaktivně, tak programem, integritní omezení, autorizovaný přístup k databázi, transakční příkazy apod. 6. Pravidlo vytvoření pohledů: Všechny pohledy, které jsou teoreticky možné, jsou také systémem vytvořitelné. 7. Schopnost vkládání, vytvoření a mazání: Schopnost zachování relačních pravidel u základních i odvozených relací je zachována nejen při pohledu na data, ale i při operacích průniku, přidání a mazání dat. 8. Fyzická datová nezávislost: Aplikační programy jsou nezávislé na fyzické datové struktuře. 9. Logická datová nezávislost: Aplikační programy jsou nezávislé na změnách v logické struktuře databázového souboru. 10. Integritní nezávislost: Integritní omezení se musí dát definovat prostředky relační databáze nebo jejím jazykem a musí být schopna uložení v katalogu a nikoliv v aplikačním programu. 11. Nezávislost distribuce: Relační SŘBD musí být schopny implementace na jiných počítačových architekturách. 12. Pravidlo přístupu do databáze: Jestliže má relační systém jazyk nízké úrovně, pak tato úroveň nemůže být použita k vytváření integritních omezení a je nutno vyjádřit se v relačním jazyce vyšší úrovně. Pan Codd je ten chytrý člověk co vymyslel princip relačních DB. Tyto pravidla popisují a definují co musí DB stroj resp. SŘBD umět, aby se dalo řici, že jde o relační databázi nehledě jestli je výrobcem oracle nebo microsoft. Stručný popis významu pravidel Ad1) jediný způsob jak zaznamenat data do DB jsou tabulky Ad2) Každý záznam, který hledáte dotazem musí jít nalézt (resp. je určen) pomocí 3 hodnot - PK, jméno sloupce a jméno tabulky Ad3) Systém musí umět pracovat s nulovými hodnotami neboli vyplníte li do tabulky 0 je to hodnota i to je číslo, ale necháte-li políčko v tabulce prázdné zobrazí se "null" a některé starší programovací ev. DB systém pokud nedefinujete co se má stát tak dotaz, který bude s nevyplněným políčkem pracovat vyhodí error. U sql DB se to nestane. Ad4) online katolog je de facto tabulka tabulek, kterou běžně uživatel nevidí Ad5) SQL má 3 datové podjazyky DML, DCL, DDL - budou náplní látky č. 3 zjednodušeně se jedná o příkazy pro manipulaci s daty, ovládání dat a definici dat Ad6) Pohledy vytváříte create view (něco jako tabulka, ale jsou dynamické, můžete do pohledu načíst tabulku a "nezbořit" si původní tab. při nějakých dotazech apod.) Ad7) Tady snad není potřeba nic dodat, když smažu data v tabulce nebudu je mít pak ani ve výsledku dotazu apod. Ad8) Struktura je de facto trojvstvá aplikační program (např web server) přistupuje k systému řízení báze dat (databázový stroj např. oracle) a ten manipuluje se samotnou databází (tedy daty) - z pravidla plyne že aplikační program nemanipuluje s daty přímo, ale přístup zajišťuje SŘBD Ad9) Navazuje na předchozí pravidlo - změna datové struktury DB neovlivní aplikační program Ad10) Data a pravidla pro zacházení s daty (nevím jak jinak blíže přiblížit pojem integritní omezení) se definují pouze SQL jazykem a ne např v kódu php webové aplikace - musíte příkazy předat DB stroji - neprovedou se přímo Ad11) SŘBD by mělo být multiplatformní Ad12) Jazyky vyšší a nižší úrovně bych osvětlil na příkladu běžných lidských jazyků čeština umí v psané formě zaznamenat souhlásky i samohlásky. U arabštiny se nepíší znaky pro krátké samohlásky. Význam slova musíte doplnit z kontextu věty. Tedy slovo ahoj by při zápisu bez krátkých samohlásek bylo napsáno jako hj a zpětně prostě nezjistíte co to bylo ahoj, hoj, hej.... Z nastíněného příkladu tedy plyne, že nesmíte pro programování, tvorbu DB apod využít jazyk nízké úrovně. Z ahoj hj vytvoříte, obráceně to dohromady nedáte.