220 likes | 403 Views
Databázové systémy. Přednáška č. 2. Relační model dat. Zveřejněn v r. 1970 E. F. Coddem Základní myšlenky jsou: Oddělení dat (relací) od jejich implementace Při manipulaci s daty se nezajímáme o přístupové mechanismy k datům
E N D
Databázové systémy Přednáška č. 2
Relační model dat • Zveřejněn v r. 1970 E. F. Coddem • Základní myšlenky jsou: • Oddělení dat (relací) od jejich implementace • Při manipulaci s daty se nezajímáme o přístupové mechanismy k datům • Pro manipulaci s daty se využívají dva prostředky – relační algebra a relační kalkul • Pro omezení redundance dat jsou k dispozici pojmy umožňující normalizovat relace
Požadavky na relační databázový systém (RDBMS) • Základní pravidla • Pravidla o struktuře dat • Pravidla o integritě dat • Pravidla o modifikaci dat • Pravidla o nezávislosti dat
Základní pravidla • RDBMS musí být schopen manipulovat s daty pomocí operací relační algebry • Má-li RDBMS jazyk nižší úrovně – tato nižší úroveň nemůže porušit pravidla integrity vyjádřené na vyšší úrovni jazyka
Pravidla o struktuře dat • RDBMS by měl podporovat: relace, domény, primární a cizí klíče • Všechna data jsou reprezentována hodnotami v tabulkách • Je-li pohled teoreticky upravitelný, měl by být upravitelný i fakticky
Pravidla o integritě dat • Podporování hodnot NULL • Integritní omezení – definovány v JDD a uloženy v systémovém katalogu
Pravidla o modifikaci dat • Garantovaný přístup ke každé atomické hodnotě na základě jména tabulky, hodnoty primárního klíče a názvu sloupce • Obsáhlý jazyk na manipulaci s daty • Ideální DBMS by měl podporovat 18 možností na manipulaci s daty
Pravidla o nezávislosti dat • Nezávislost dat od aplikace, která data používá • Uživatelé i aplikační programátoři jsou izolování od organizace dat na nižší úrovni
Matematická definice relace • Relace R nad množinou atributů {A1:D1, A2:D2, …, An:Dn} je podmnožina kartézského součinu domén D1 x D2 x … x Dn • Doména: množina hodnot
Matematická definice relace • Příklad: D1 = {0,1} D2 = {a,b,c} D1 x D2 = {(0,a), (0,b), (0,c), (1,a), (1,b), (1,c)} relace: {(0,a), (0,c), (1,b)}
Databázová relace • Vybavena pomocnou strukturou (schéma relace – skládá se z jména relace, jmen atributů a z domén) • Prvky domén jsou atomické hodnoty • Reprezentována tabulkou
Vlastnosti tabulky • Každá tabulka má jednoznačné jméno • Každý sloupec v tabulce má jednoznačné jméno • Všechny hodnoty daného sloupce musí být stejného typu • Nezáleží na pořadí sloupců • Nezáleží na pořadí řádků • Tabulka nemůže mít duplicitní řádky • Všechny hodnoty jsou atomické • Každá tabulka musí mít primární klíč
Integritní omezení databáze: • Integrita entit – v databázové relaci nesmí být hodnota primárního klíče NULL • Referenční integrita – obsahuje-li databázová relace cizí klíč, tak každá jeho hodnota musí být obsažena v rodičovské tabulce, nebo musí mít hodnotu NULL
Příklad relačního modelu • Zaměstnanec (rodné_číslo, kód_oddělení, jméno, příjmení, funkce, číslo_kanc, telefon) • Oddělení (kód_oddělení, název_odd, poznámka) • Tabulka Oddělení má primární klíč kód_oddělení, který je cizím klíčem v tabulce Zaměstnanec
Transformace E-R modelu do relačního modelu dat Pravidla: • Tabulka – každý typ entit se stává samostatnou tabulkou • Sloupec – každý atribut se stává sloupcem • Řádek – každá entita se stává řádkem v tabulce • Primární klíč = identifikační klíč
Transformace E-R modelu do relačního modelu dat Pravidla: • Vztahy – reprezentují se tabulkou, která bude obsahovat cizí klíč jako odkaz do druhé tabulky • 1:N – cizí klíč přidán do tabulky na straně N • M:N – dekomponujeme na dva vztahy 1:N
Transformace E-R modelu do relačního modelu dat • Specializace a generalizace (ISA) • Jedna tabulka, která obsahuje i sloupce, které jsou ve specializovaném entitním typu (v každém řádku může být hodnota NULL) nehospodárné, jednoduché • tabulka, která obsahuje atributy společné pro všechny entitní typy. Pro každý specializovaný entitní typ vytvoříme další tabulku, která bude obsahovat pouze sloupce specifické pro daný entitní typ.
Transformace E-R modelu do relačního modelu dat • Transformujte E-R model z příkladu č. 1 do relačního modelu (pro úplnost připomínáme E-R model)
Č_ČT JMÉNO ADRESA ČTENÁŘ N DAT_REZ 1 MÁ PŮJČEN MÁ REZERVOVÁNU DAT_ZPĚT M N KNIHA 1 N EXEMPLÁŘ MÁ KOPIE TITUL INV_Č CENA ISBN AUTOR
Transformace: ČTENÁŘ (č_čt:char(10), jméno: char(30), adresa: char (80)) KNIHA (ISBN: char(10), autor: char(50), titul: char(50)) EXEMPLÁŘ (inv_č: char(10), ISBN: char(10), cena: num) VÝPUJČKY (inv_č: char(10), č_čt: char(10), datum_zpět: date) REZERVACE (ISBN: char(10), č_čt:char(10), datum_rez: date)
Úkol: • Převeďte z E-R modelu do relačního modelu příklad č. 2 – databázi malého obchodního domu
plat RČ jméno č_dod jméno isa Zaměstnanec Dodavatel N Vedoucí pracuje_v 1 M číslo řídí 1 dodává cena 1 Oddělení N 1 číslo název prodává N Zboží název M N vystavil N obsahuje 1 Objednávka Zákazník č.obj množství datum č.zák jméno