Relační databázová technologie

Podobné dokumenty
A5M33IZS Informační a znalostní systémy. Relační databázová technologie

Relační databázová technologie

Relace x vztah (relationship)

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Transformace konceptuálního modelu na relační

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Úvod do databázových systémů

Databáze I. Přednáška 4

DBS Transformace konceptuálního schématu na

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Primární klíč (Primary Key - PK) Je právě jedna množina atributů patřící jednomu z kandidátů primárního klíče.

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

Konceptuální modelování a SQL

Databáze. Logický model DB. David Hoksza

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Transformace ER SQL. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, P edn. 9

Kapitola 6: Omezení integrity. Omezení domény

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hoksza, Ph.D.

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Databázové systémy Cvičení 5.2

Databáze I. Přednáška 7

Úvod do databázových systémů 6. cvičení

DUM 12 téma: Příkazy pro tvorbu databáze

Databázové modelování. Analýza Návrh konceptuálního schématu

Konceptuální datové modely používané při analýze

Relační databázový model. Vladimíra Zádová, KIN, EF, TUL- DBS

Souvislost E-R schématu s relačním

C8 Relační databáze. 1. Datový model

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

A5M33IZS Informační a znalostní systémy. O čem předmět bude? Úvod do problematiky databázových systémů

Návrh a tvorba WWW stránek 1/14. PHP a databáze

8.2 Používání a tvorba databází

Konceptuální modelování. Pavel Tyl

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

5. POČÍTAČOVÉ CVIČENÍ

Databázový systém označuje soubor programových prostředků, které umožňují přístup k datům uloženým v databázi.

Fakulta elektrotechniky a informatiky Vysoká škola báňská - Technická univerzita Ostrava. Úvod do databázových systémů 2012/2013 IS MHD

Sada 1 - PHP. 14. Úvod do jazyka SQL

Databázové systémy. Tomáš Skopal. - úvod do relačního modelu. - převod konceptuálního schématu do relačního

Marketingová komunikace. 2. soustředění. Mgr. Pavel Vávra Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph)

Použití databází na Webu

Marketingová komunikace. 2. a 3. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK3PH (vm3aph)

Dotazovací jazyk SQL I

Úvod do databázových systémů 2012/2013 IS MHD. Jiří Znoj zno

Obsah přednášky. Databázové systémy RDBMS. Fáze návrhu RDBMS. Coddových 12 pravidel. Coddových 12 pravidel

6. SQL složitější dotazy, QBE

Databáze I. Přednáška 2

Terminologie v relačním modelu

DATOVÉ MODELOVÁNÍ ER MODEL

Úvod do databázových systémů

Databázové systémy a SQL

1. Relační databázový model

2 Konceptuální modelování a návrh databáze

Microsoft. Access. Databáze s více tabulkami. Mgr. Jan Veverka Střední odborná škola sociální Evangelická akademie

2 Konceptuální modelování a návrh databáze

Databázové systémy. Integritní omezení. Vilém Vychodil. V. Vychodil (KMI/DATA1, Přednáška 9) Integritní omezení Databázové systémy 1 / 33

Relační databáze. V dnešní době existuje řada komerčních DBMS, nejznámější jsou:

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

VŠB FEI - Technická Univerzita Ostrava. DAIS - Projekt. Dopravní podnik. Jméno: Matěj Kotyz (KOT0177)

Jazyk SQL databáze SQLite. připravil ing. petr polách

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

- sloupcové integritní omezení

Databáze 2013/2014. Konceptuální model DB. RNDr. David Hoksza, Ph.D.

12. blok Fyzický návrh databáze

Dotazovací jazyk SQL I

Jazyk SQL 3 - DML, DDL, TCL, DCL

Primární klíč, cizí klíč, referenční integrita, pravidla normalizace, relace

Jazyk SQL slajdy k přednášce NDBI001

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant

Database engine (databázový stroj, databázový motor, databázové jádro) Systém řízení báze dat SŘBD. Typy SŘBD podle způsobu práce s daty

Objektově relační databáze a ORACLE 8

DATABÁZOVÉ A INFORMAČNÍ SYSTÉMY

Inovace tohoto kurzu byla spolufinancována z Evropského sociálního fondu a státního rozpočtu České republiky.

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června krovacek@students.zcu.cz

Co se stane po jeho vykonání? Vyberte libovolný počet možných odpovědí. Správná nemusí být žádná, ale také mohou být správné všechny.

Semestrální práce 4IT450

Obsah přednášky. Databázové systémy. Normalizace relací. Normalizace relací. Normalizace relací. Normalizace relací

Databázové systémy I

Vzorové příklady SQL. Tabulka: Kniha CREATE TABLE kniha (id INTEGER, název VARCHAR(50), PRIMARY KEY (id))

Zkouškový příklad 4IT218 Rezervační systém zážitkové agentury. Karel Kohout FIS VŠE

Databázové systémy. Cvičení 2

Databázové systémy trocha teorie

KIV/ZIS cvičení 6. Tomáš Potužák

Databázové systémy I. 3. přednáška

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

Měřící systém se vzdáleným přístupem. Databáze

SII - Informatika. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá:

SQL. strukturovaný dotazovací jazyk. Structured Query Language (SQL)

MySQL. mysql> CREATE DATABASE nova CHARACTER SET latin2 COLLATE latin2_czech_cs; Query OK, 1 row affected (0.02 sec)

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů.

Databázové systémy. Vztahy a relace. 3.přednáška

Integritní omezení (IO)

Databázové systémy I

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

PG 9.5 novinky ve vývoji aplikací

Transkript:

Relační databázová technologie Klíč: množina (možná jednoprvková) atributů (sloupců), jež jednoznačně idetifikuje danou entitu. Poznámky: 1. Daný entitní typ (tabulka) může mít více klíčů. Například (i) rodnéčíslo, (ii) osobníčíslo zaměstnance, (iii) syntetický klíč. 2. Každá tabulka má alespoň jeden klíč. V (opravdové) relační databázi nemůže tabulka obsahovat více řádků s týmiž hodnotami v jednortlivých sloupcích. Osobní číslo Rodné číslo Jméno Příjmení Datum narození Jméno Příjmení Datum narození 101 8811010033 Josef Novák 1.11.1988 Josef Novák 1.11.1988 101 8811010033 Josef Novák 1.11.1988

Relační databázová technologie Cizí klíč: množina (možná jednoprvková) atributů (sloupců), jejichž hodnota určuje hodnotu klíče jiné tabulky. Poznámky: 1. Datový typ jednotlivých atributů musí být kompatibilní s datovým typem odpovídajících atrinutů klíče referencované tabulky. 2. Cizí klíč není (nemusí být) v dané tabulce klíčem (jednoznačnost). 3. Vztah mezi entitami se realizuje asociativní vazbou cizí klíč -> primární klíč. 4. Vzhledem k tomu, že tabulka může mít více klíčů, je dobré jeden z nich zvolit a systematicky ho používat k realizaci vztahů s ostatními tabulkami. Takto zvolený klíč nazýváme klíčem primárním. Osobní číslo Rodné číslo Jméno Příjmení Datum narození 101 8811010033 Josef Novák 1.11.1988 Osobní číslo Popis Ráže 101 Kalašnikov 7,65 Rodné číslo SPZ Značka 8811010033 BE-04-30 Škoda

http://www.sybase.com/products/modelingmetadata/powerdesigner

Převod konceptuální model -> logický model Entitní typ -> tabulka Atribut entitního typu -> sloupec tabulky Vztah: 1:1 nebo 1:N: vztah->cizí klíč na straně N atribut vztahu -> sloupec tabulky na straně N N:M: Vztah -> vazební tabulka Atribut vztahu -> sloupec vazební tabulky

DC8,0 VA30 Slabý entitní typ 1 Notace Crow's Foot VARCHAR(30) ma-linky FK_LINKY_RELATIONS_ORGANIZA 1 DC8,0 1 CHAR(15) CHAR(20) <fk> 11111111 Nemocnice Motol 224 43 11111111 1111 Ústředna 22222222 Honda Motol 234 09 11111111 2920 Kardiocentrum 11111111 2101 Novorozenecké oddělení 22222222 1111 Recepce 22222222 6690 Prodej nových vozů

DC8,0 VA30 Slabý entitní typ 1 Notace Crow's Foot VARCHAR(30) ma-linky FK_LINKY_RELATIONS_ORGANIZA 1 Není to divné? Sloupec IČO tu máme 2x DC8,0 1 CHAR(15) CHAR(20) <fk> 11111111 Nemocnice Motol 224 43 11111111 1111 Ústředna 22222222 Honda Motol 234 09 11111111 2920 Kardiocentrum 11111111 2101 Novorozenecké oddělení 22222222 1111 Recepce 22222222 6690 Prodej nových vozů Tento sloupec tu bude 2x Cizí klíč Cizí Primární klíč

DC8,0 VA30 Slabý entitní typ 1 Notace Crow's Foot VARCHAR(30) ma-linky FK_LINKY_RELATIONS_ORGANIZA 1 Není to divné? Sloupec IČO tu máme 2x DC8,0 1 CHAR(15) CHAR(20) <fk> 11111111 Nemocnice Motol 224 43 11111111 1111 Ústředna 22222222 Honda Motol 234 09 11111111 2920 Kardiocentrum 11111111 2101 Novorozenecké oddělení 22222222 1111 Recepce 22222222 6690 Prodej nových vozů Tento sloupec tu bude 2x Cizí klíč Cizí Primární klíč

Slabý entitní typ 2 DC8,0 VA30 DC8,0 VA30 ma-linky ma-linky 1 DC8,0 11111111 Nemocnice Motol 224 43 11111111 1111 Ústředna 22222222 Honda Motol 234 09 11111111 2920 Kardiocentrum 11111111 2101 Novorozenecké oddělení 22222222 1111 Recepce 22222222 6690 Prodej nových vozů

Řídící entitní typ Slabý entitní typ 2 DC8,0 VA30 DC8,0 VA30 ma-linky Slabý entitní typ ma-linky Identifikující vztah (vazba) 1 DC8,0 11111111 Nemocnice Motol 224 43 11111111 1111 Ústředna 22222222 Honda Motol 234 09 11111111 2920 Kardiocentrum 11111111 2101 Novorozenecké oddělení 22222222 1111 Recepce 22222222 6690 Prodej nových vozů

Slabý entitní typ 3 DC8,0 VA30 VARCHAR(30) ma-linky FK_LINKY_MA-LINKY_ORGANIZA CHAR(15) CHAR(20) <pk,fk>

Slabý entitní typ 4 VARCHAR(30) create table ( not null, not null, Uzivatel-jmeno CHAR(15) null, Uzivatel-prijmeni CHAR(20) null, constraint PK_LINKY primary key (, ) ); create table ( not null, Nazev VARCHAR(30) not null, null, constraint PK_ORGANIZACE primary key () ); FK_LINKY_MA-LINKY_ORGANIZA CHAR(15) CHAR(20) <pk,fk> alter table add constraint "FK_LINKY_MA-LINKY_ORGANIZA" foreign key () references () on delete restrict on update restrict;

Reflexivní vztah 1 matka ma-matku Osoba Rodne-cislo Jmeno Prijemni DC10,0 dítě Reflexive mandatory reference A reflexive reference exists should not have a mandatory parent which could lead to inconsistent dítě joins. FK_OSOBA_RELATIONS_OSOBA Rodne-cislo Oso_Rodne-cislo Jmeno Prijemni Osoba DECIMAL(10,0) DECIMAL(10,0) CHAR(15) CHAR(20) <fk> matka

Reflexivní vztah 2 Rodne-cislo Jmeno Prijemni dítě Osoba DC10,0 ma-matku matka Nepovinná hodnota cizího klíče create table Osoba ( Rodne_cislo DECIMAL(10,0) not null, Oso_Rodne_cislo DECIMAL(10,0) null, Jmeno CHAR(15) null, Prijmeni CHAR(20) null, matka FK_OSOBA_RELATIONS_OSOBA constraint PK_OSOBA primary key (Rodne_cislo) ); Osoba alter table Osoba add constraint FK_OSOBA_RELATIONS_OSOBA Rodne-cislo DECIMAL(10,0) foreign key (Oso_Rodne_cislo) dítě references Osoba ("Rodne-cislo") Oso_Rodne-cislo DECIMAL(10,0) <fk> on delete restrict on Jmeno update restrict; CHAR(15) Prijemni CHAR(20)

Reflexivní vztah 2 dítě Osoba ma-matku create Rodne-cislo table Osoba DC10,0 ( Rodne_cislo Jmeno DECIMAL(10,0) not matka null, Oso_Rodne_cislo Prijemni DECIMAL(10,0) null, Jmeno CHAR(15) null, Prijmeni CHAR(20) null, constraint PK_OSOBA primary key (Rodne_cislo) ); matka FK_OSOBA_RELATIONS_OSOBA alter table Osoba add constraint FK_OSOBA_RELATIONS_OSOBA foreign key (Oso_Rodne_cislo) references Osoba ("Rodne-cislo") Osoba on delete restrict on Rodne-cislo update restrict; DECIMAL(10,0) dítě Oso_Rodne-cislo DECIMAL(10,0) <fk> Jmeno CHAR(15) Prijemni CHAR(20)

Referenční integrita 1 Mějme dvě tabulky A a B takové, že tabulka B obsahuje cizí klíč odkazující to tabulky A. V databázi nesmí dojít k tomu, že pro nějaký řádek tabulky B odkazuje jeho hodnota cizího klíče na neexistujícířádek tabulky A.

Referenční integrita 2 Rodne_cislo Jmeno Prijmeni Osoba drzitel Vyrobni_cislo Vyrobce Typ Popis Strelna_zbran Osoba Zbran Rodne_cislo Jmeno Prijmeni Drzitel Vyrobni_cislo Vyrobce Typ Popis 1 Josef Novák 1 101 Zbrojovka Vzduchovka Slavie 2 Jaroslav Novotný 2 202 Zbrojovka Kalashnikov Vzor 57 Jak může dojít k porušení referenční integrity? a) Zrušíme záznam v tabulce Osoba => cizí klíč příslušného řádku tabulky Zbran bude odkazovat na neexistujícířádek tabulky Osoba. b) Změníme hodnotu primárního klíče některého řádku v tabulce Osoba => cizí klíč příslušného řádku tabulky Zbran bude odkazovat na neexistující řádek tabulky Osoba.

Referenční integrita 3 Rodne_cislo Jmeno Prijmeni Osoba drzitel Vyrobni_cislo Vyrobce Typ Popis Strelna_zbran create table Strelna_zbran ( Vyrobni_cislo CHAR(10) not null, Vyrobce CHAR(10) not null, Rodne_cislo CHAR(10) not null, Typ CHAR(10) null, Popis CHAR(10) null, constraint PK_STRELNA_ZBRAN primary key (Vyrobni_cislo, Vyrobce) constraint FK_STRELNA DRZITEL_OSOBA foreign key (Rodne_cislo) references Osoba (Rodne_cislo) on delete restrict on update restrict; );

Referenční integrita 4 constraint FK_STRELNA DRZITEL_OSOBA foreign key (Rodne_cislo) references Osoba (Rodne_cislo) on delete restrict on update restrict; Proč disabled? Proč disabled? Protože mandatory parent