The relační model databází je metoda strukturování dat pomocí vztahů pomocí struktur podobných mřížce, skládající se ze sloupců a řádků. Jedná se o koncepční princip relačních databází. Navrhl to Edgar F. Codd v roce 1969.
Od té doby se stal dominantním databázovým modelem pro obchodní aplikace ve srovnání s jinými databázovými modely, jako jsou hierarchické, síťové a objektové..
Codd vůbec netušil, jak extrémně zásadní a vlivná bude jeho práce jako platformy pro relační databáze. Většina lidí je velmi dobře obeznámena s fyzickým vyjádřením relace v databázi: v tabulce.
Relační model je definován jako databáze, která umožňuje seskupit jeho datové prvky do jedné nebo více nezávislých tabulek, které lze navzájem propojit pomocí polí společných pro každou související tabulku..
Rejstřík článků
Databázová tabulka je obdobou tabulky. Vztahy, které lze vytvořit mezi tabulkami, však umožňují relační databázi efektivně ukládat velké množství dat, která lze efektivně načíst..
Účelem relačního modelu je poskytnout deklarativní metodu pro specifikaci dat a dotazů: uživatelé přímo deklarují, jaké informace databáze obsahuje a jaké informace od ní chtějí.
Na druhou stranu nechali software systému pro správu databází zodpovědný za popis datových struktur pro ukládání a postup načítání pro zodpovězení dotazů..
Většina relačních databází používá pro dotazy a definování dat jazyk SQL. V současné době existuje mnoho systémů pro správu relačních databází nebo RDBMS (Relational Data Base Management System), jako jsou Oracle, IBM DB2 a Microsoft SQL Server..
- Všechna data jsou koncepčně reprezentována jako uspořádané uspořádání dat v řádcích a sloupcích, které se nazývá relace nebo tabulka.
- Každá tabulka musí mít záhlaví a tělo. Záhlaví je jednoduše seznam sloupců. Tělo je sada dat, která vyplňuje tabulku, uspořádaná do řádků.
- Všechny hodnoty jsou skalární. To znamená, že na jakékoli dané pozici řádku / sloupce v tabulce existuje pouze jedna hodnota.
Následující obrázek ukazuje tabulku se jmény jejích základních prvků, které tvoří úplnou strukturu.
Každá řada dat je n-ticí, známou také jako záznam. Každý řádek je n-ticí, ale znak „n-“ je obecně vyřazen.
Každý sloupec v n-tici se nazývá atribut nebo pole. Sloupec představuje sadu hodnot, které může mít konkrétní atribut.
Každý řádek má jeden nebo více sloupců nazývaných klíč tabulky. Tato kombinovaná hodnota je jedinečná pro všechny řádky v tabulce. Pomocí tohoto klíče bude každá n-tice jedinečně identifikována. To znamená, že klíč nelze duplikovat. Říká se tomu primární klíč.
Na druhou stranu cizí nebo sekundární klíč je pole v tabulce, které odkazuje na primární klíč nějaké jiné tabulky. Slouží k odkazu na primární tabulku.
Při navrhování relačního modelu definujete některé podmínky, které musí databáze splňovat, tzv. Pravidla integrity.
Primární klíč musí být jedinečný pro všechny n-tice a nesmí mít hodnotu null. Jinak nebudete moci řádek jednoznačně identifikovat.
U klíče s více sloupci nesmí žádný z těchto sloupců obsahovat NULL.
Každá hodnota cizího klíče se musí shodovat s hodnotou primárního klíče odkazované nebo primární tabulky.
Řádek s cizím klíčem lze vložit do sekundární tabulky, pouze pokud tato hodnota existuje v primární tabulce.
Pokud se hodnota klíče změní v nadřazené tabulce, aktualizací nebo odstraněním řádku by měly být odpovídajícím způsobem aktualizovány nebo odstraněny všechny řádky v podřízených tabulkách s tímto cizím klíčem.
Musí být shromážděny potřebné údaje, aby mohly být uloženy v databázi. Tato data jsou rozdělena do různých tabulek.
Pro každý sloupec musí být zvolen vhodný datový typ. Například: celá čísla, čísla s plovoucí desetinnou čárkou, text, datum atd..
U každé tabulky musí být jako primární klíč vybrán sloupec (nebo několik sloupců), který jedinečně identifikuje každý řádek v tabulce. Primární klíč se také používá k označení jiných tabulek.
Databáze skládající se z nezávislých a nesouvisejících tabulek má malý účel.
Nejdůležitějším aspektem při navrhování relační databáze je identifikace vztahů mezi tabulkami. Typy vztahů jsou:
V databázi „Výpis tříd“ může učitel učit nula nebo více tříd, zatímco třídu vyučuje jeden učitel. Tento typ vztahu je znám jako jedna k mnoha..
Tento vztah nelze reprezentovat v jedné tabulce. V databázi „Seznam tříd“ můžete mít tabulku s názvem Učitelé, která obsahuje informace o učitelích.
Chcete-li uložit třídy vyučované jednotlivými učiteli, můžete vytvořit další sloupce, ale narazíte na problém: kolik sloupců vytvořit.
Na druhou stranu, pokud máte tabulku nazvanou Třídy, která ukládá informace o třídě, můžete vytvořit další sloupce pro uložení informací o učiteli..
Protože však učitel může učit v mnoha třídách, jeho data by byla duplikována v mnoha řádcích tabulky Třídy.
Proto je třeba navrhnout dvě tabulky: tabulku Classes pro ukládání informací o třídách s Class_Id jako primárním klíčem a tabulku Teachers pro ukládání informací o učitelích s Teacher_Id jako primárním klíčem..
Potom lze vytvořit vztah jedna k mnoha uložením primárního klíče hlavní tabulky (Master_Id) v tabulce tříd, jak je znázorněno níže.
Sloupec Master_Id v tabulce Classes je známý jako cizí klíč nebo sekundární klíč.
Pro každou hodnotu Master_Id v hlavní tabulce může být v tabulce tříd nula nebo více řádků. Pro každou Class_Id hodnotu v tabulce Classes existuje pouze jeden řádek v tabulce Teachers.
V databázi „Prodej produktu“ může objednávka zákazníka obsahovat více produktů a produkt se může objevit ve více objednávkách. Tento typ vztahu je známý mnoha lidem.
Databázi „Prodej produktů“ můžete spustit dvěma tabulkami: Produkty a Objednávky. Tabulka Produkty obsahuje informace o produktech s primárním klíčem productID.
Na druhou stranu obsahuje tabulka Objednávky objednávky zákazníka, přičemž jako primární klíč je uvedeno IDObjednávky.
Objednané produkty nemůžete uložit v tabulce Objednávky, protože nevíte, kolik sloupců je třeba pro produkty rezervovat. Ze stejného důvodu také nelze ukládat objednávky do tabulky Produkty.
Chcete-li podporovat vztah mnoho k mnoha, musíte vytvořit třetí tabulku, známou jako tabulka spojení (OrderDetails), kde každý řádek představuje položku v určitém pořadí.
U tabulky OrderDetails se primární klíč skládá ze dvou sloupců: orderID a productID, které jednoznačně identifikují každý řádek.
Sloupce orderID a productID v tabulce OrderDetails slouží k odkazování na tabulky objednávek a produktů. Proto jsou také cizí klíče v tabulce OrderDetails..
V databázi „Prodej produktů“ může mít produkt volitelné informace, například další popis a jeho obrázek. Ponechání uvnitř tabulky Products by generovalo spoustu prázdných mezer.
Proto lze vytvořit další tabulku (ProductExtras) pro uložení volitelných dat. Pro produkty s volitelnými daty bude vytvořen pouze jeden záznam.
Tyto dvě tabulky, Products a ProductExtras, mají vztah jedna k jedné. Pro každý řádek v tabulce Products existuje maximálně jeden řádek v tabulce ProductExtras. Pro obě tabulky je třeba jako primární klíč použít stejné ID produktu.
V modelu relační databáze nemají změny ve struktuře databáze vliv na přístup k datům.
Je-li možné provést změny ve struktuře databáze, aniž by to ovlivnilo schopnost systému DBMS přistupovat k datům, lze říci, že bylo dosaženo strukturální nezávislosti.
Model relační databáze je koncepčně ještě jednodušší než model hierarchické nebo síťové databáze.
Vzhledem k tomu, že model relační databáze osvobozuje návrháře od podrobností fyzického ukládání dat, mohou se návrháři zaměřit na logické zobrazení databáze.
Model relační databáze dosahuje jak nezávislosti na datech, tak nezávislosti na struktuře, díky čemuž je návrh, údržba, správa a používání databáze mnohem jednodušší než u ostatních modelů..
Přítomnost velmi silné, flexibilní a snadno použitelné kapacity dotazu je jedním z hlavních důvodů nesmírné popularity modelu relační databáze..
Dotazovací jazyk modelu relační databáze, zvaný Structured Query Language nebo SQL, umožňuje ad-hoc dotazy realizovat. SQL je jazyk čtvrté generace (4GL).
4GL umožňuje uživateli určit, co by mělo být provedeno, aniž by specifikoval, jak by to mělo být provedeno. Díky SQL mohou uživatelé určit, jaké informace chtějí, a nechat podrobnosti o tom, jak tyto informace získat, do databáze.
Model relační databáze skrývá složitost jeho implementace a podrobnosti fyzického ukládání uživatelských dat.
K tomu potřebují systémy relační databáze počítače s výkonnějším hardwarem a zařízeními pro ukládání dat..
RDBMS proto potřebuje výkonné stroje, aby fungovaly hladce. Jelikož však výpočetní výkon moderních počítačů roste exponenciálním tempem, není dnes potřeba většího výpočetního výkonu v dnešním scénáři velkým problémem..
Relační databáze se snadno navrhuje a používá. Uživatelé nepotřebují znát složité podrobnosti o fyzickém ukládání dat. Nepotřebují vědět, jak jsou data ve skutečnosti uložena, aby k nim měli přístup.
Toto snadné navrhování a používání může vést k vývoji a implementaci špatně navržených systémů správy databází. Vzhledem k tomu, že databáze je efektivní, tyto návrhové neefektivity nevyjde najevo, když je databáze navržena a když existuje jen malé množství dat.
Jak databáze roste, špatně navržené databáze zpomalí systém a povedou ke snížení výkonu a poškození dat..
Jak již bylo zmíněno dříve, systémy relační databáze se snadno implementují a používají. Tím se vytvoří situace, kdy příliš mnoho lidí nebo oddělení vytvoří vlastní databáze a aplikace..
Tyto informační ostrovy zabrání integraci informací, která je nezbytná pro hladké a efektivní fungování organizace..
Tyto jednotlivé databáze také způsobí problémy, jako je nekonzistence dat, duplikace dat, redundance dat atd..
Předpokládejme databázi, která se skládá z tabulek Dodavatelé, Díly a Zásilky. Struktura tabulek a některých ukázkových záznamů je následující:
Každý řádek v tabulce Dodavatelé je identifikován jedinečným číslem dodavatele (SNo), které jednoznačně identifikuje každý řádek v tabulce. Podobně má každá součást jedinečné číslo dílu (PNo).
Kromě toho pro danou kombinaci Dodavatel / Díl v tabulce Zásilky nemůže existovat více než jedna zásilka, protože tato kombinace je primárním klíčem Zásilek, který slouží jako sjednocující tabulka, protože se jedná o vztah typu „mnoho k mnoha“..
Vztah tabulek dílů a zásilek je dán společným polem PNo (číslo dílu) a vztah mezi dodavateli a zásilkami vzniká společným polem SNo (číslo dodavatele).
Analýzou tabulky Zásilky lze získat informace, že od dodavatelů Suneet a Ankit je odesláno celkem 500 ořechů, každý 250.
Podobně bylo dodáno celkem 1100 šroubů od tří různých dodavatelů. 500 modrých šroubů bylo odesláno od dodavatele Suneet. Žádné zásilky červených šroubů.
Zatím žádné komentáře