Počítačová cvičení z předmětu Datové sklady #1 Relační model dat Vladimír Bartík Jan Kupčík Petr Leixner Vysoké učení technické v Brně, Fakulta informačních technologií Božetěchova 2, 612 66 Brno
Relační struktura dat Počítačová cvičení z předmětu Datové sklady pro FP
Relační model dat: zákl. pojmy Doména - pojmenovaná množina skalárních hodnot téhož typu. Př) Doména názvů měst Skalární hodnota - nejmenší sémantická jednotka dat, atomická (vnitřně nestrukturovaná). Př) Josef Novák – nerozlišujeme-li jméno a příjmení Složená doména – doména složená z několika jednoduchých domén. Př) (Josef, Novák) Relace Relace na doménách D1, D2, ... ,Dn je dvojice R = (R, R*), kde R = R(A1:D1, A2:D2, ... An:Dn ) je schéma relace a R* ⊆ D1 x D2 x ... x Dn je tělo relace. Schéma relace zapisujeme často zjednodušeně ve tvaru R(A1,A2, ... ,An). Počet atributů n relace se označuje stupeň (řád) relace, kardinalita těla relace m = |R*| se označuje kardinalita relace. Vztah pojmu „relace“ v relačním modelu dat a pojmu „tabulka“ relace základní abstraktní pojem relačního modelu tabulka forma znázornění relace Atribut relace ~ sloupec tabulky, n-tice relace ~ řádek tabulky Počítačová cvičení z předmětu Datové sklady pro FP
Integritní omezení omezení plynoucí z reality reprezentované daty v databázi Typy integritních omezení: specifická – pro konkrétní aplikaci obecná – musí platit v každé databázi daného typu obecná omezení v relačním modelu se týkají primárních a cizích klíčů Primární klíč atribut, který jednoznačně identifikuje n-tici v relaci Kandidátní klíč Atribut k relace R se nazývá kandidátním klíčem, když má tyto dvě časově nezávislé vlastnosti: 1. jednoznačnost 2. minimalita (neredukovatelnost). Počítačová cvičení z předmětu Datové sklady pro FP
Integritní omezení - pokračování Cizí klíč Př) Zaměstnanci.oddělení - je hodnota ‘Vývoj’ legální? Atribut FK bázové relace R2 se nazývá cizí klíč, právě když splňuje tyto časově nezávislé vlastnosti: 1. Každá hodnota FK je buď plně zadaná nebo plně nezadaná. 2. Existuje relace R1 s kandidátním klíčem CK takovým, že každá zadaná hodnota FK je identická s hodnotou CK nějaké n-tice relace R1. - soulad hodnot cizích a primárních klíčů představuje vztahy mezi řádky tabulek ("drží databázi pohromadě") Počítačová cvičení z předmětu Datové sklady pro FP
SQL je standardizovaný dotazovací jazyk používaný pro práci s daty v relačních databázích. SQL je zkratka anglických slov Structured Query Language (strukturovaný dotazovací jazyk). Dělení příkazů: Příkazy pro manipulaci s daty (SELECT, INSERT, UPDATE, DELETE, …) Příkazy pro definici dat (CREATE, ALTER, DROP, …) Příkazy pro řízení přístupových práv (GRANT, REVOKE) Příkazy pro řízení transakcí (START TRANSACTION, COMMIT, ROLLBACK) Ostatní nebo speciální příkazy Počítačová cvičení z předmětu Datové sklady pro FP
SQL: Příkazy pro definici dat Základní příkazy: CREATE - vytvoření DROP - zrušení databázového objektu ALTER - změna vlastností databázového objektu Vytvoření bázové (skutečně existující v databázi) tabulky CREATE TABLE jm_bázové_tabulky (def_sloupce, … [definice_integritních_omezení_tabulky] ) → vytvoří novou, prázdnou tabulka + popis uloží do katalogu Definice sloupce jméno_sloupce typ [impl_hodnota] [seznam_io_sloupce] Definice integritních omezení (io) Integritní omezení jsou omezení kladená na hodnoty ve sloupcích tabulky, aby nedošlo k porušení integrity dat. Počítačová cvičení z předmětu Datové sklady pro FP
SQL: Příkazy pro definici dat – integritní omezení Kandidátní klíč - sloupec, resp. sloupce tabulky (pro složený kandidátní klíč), jehož hodnota, resp. kombinace hodnot je v rámci tabulky unikátní. Primární klíč – jeden z kandidátních klíčů, který bude sloužit k „adresaci“ řádků tabulky. Musí splňovat vlastnosti kandidátního klíče, navíc nesmí být hodnota prázdná. Alternativní klíč – kandidátní klíč, který není primárním klíčem. Cizí klíč – sloupec, resp. sloupce tabulky (pro složený cizí klíč), jehož hodnota, resp. kombinace hodnot se musí rovnat hodnotě kandidátního klíče v nějaké tabulce. Slouží k vytváření vazeb mezi tabulkami. Soulad hodnot cizího klíče a odkazovaného kandidátního klíče se nazývá referenční integrita. Počítačová cvičení z předmětu Datové sklady pro FP
SQL: Příkazy pro definici dat – integritní omezení Integritní omezení (deklarativní) pro sloupce NULL, resp NOT NULL CHECK (podmíněný_výraz) PRIMARY KEY UNIQUE FOREIGN KEY REFERENCES tabulka [(jm_sloupce)] [událost ref_akce] Integritní omezení (deklarativní) celé tabulky PRIMARY KEY (jm_sloupce, …) UNIQUE (jm_sloupce, …) FOREIGN KEY (jm_sloupce, …) REFERENCES tabulka [(jm_sloupce, …)] [událost ref_akce] CHECK (podmíněný_výraz) Počítačová cvičení z předmětu Datové sklady pro FP
Datové typy Typy dat řetězcové: CHARACTER(n), CHARACTER VARYING(n), BIT(n), BIT VARYING(n) numerické přesné - NUMERIC(p, q), DECIMAL(p, q), přibližné - INTEGER, SMALLINT, FLOAT(p), REAL, DOUBLE PRECISION datum a čas: DATE, TIME, TIMESTAMP intervalové: INTERVAL SQL/99 zavádí další předdefinované datové typy, např.: NATIONAL CHARACTER(n), NATIONAL CHARACTER VARYING(n), CHARACTER LARGE OBJECT, BINARY LARGE OBJECT booleovský: BOOLEAN Počítačová cvičení z předmětu Datové sklady pro FP
příkazy: SELECT, UPDATE, DELETE, INSERT SQL: Manipulace s daty příkazy: SELECT, UPDATE, DELETE, INSERT - operandem jsou bázové tabulky nebo pohledy, výsledkem tabulka Příkaz SELECT SELECT [ALL|DISTINCT] položka [[AS] alias_sl], … FROM tabulkový_výraz [[AS] [alias_tab]], … [WHERE podmínka] [GROUP BY jm_sloupce_z_FROM|číslo, …] [HAVING podmínka] [ORDER BY jm_sloupce_z_SELECT|číslo [ASC|DESC]], … Počítačová cvičení z předmětu Datové sklady pro FP
SQL: vkládání dat Příkaz INSERT Zdroje pro vkládání: INSERT INTO jm_tabulky [(jm_sloupce, …)] zdroj → Vloží jeden nebo více řádků tabulky Zdroje pro vkládání: Řádek implicitních hodnot (z příkazu CREATE TABLE) Řádek zadaných hodnot VALUES(skalární_výraz|NULL|DEFAULT, …) INSERT INTO Klient VALUES('440726/0672','Jan Novák','Cejl 8','Brno') Výsledek poddotazu tabulkový_výraz „Vlož do tabulky ZJ informace o klientech s účtem na Jánské.“ INSERT INTO ZJ SELECT DISTINCT K.* FROM Klient K, Ucet U WHERE K.r_cislo=U.r_cislo AND U.pobocka='Jánská' Počítačová cvičení z předmětu Datové sklady pro FP
SQL:manipulace s daty Příkaz DELETE (prohledávací) DELETE FROM jm_tabulky [WHERE podmínka] → zruší jeden nebo několik řádků tabulky splňující podmínku „Zruš informace o klientech bez účtu." DELETE FROM Klient WHERE r_cislo NOT IN (SELECT r_cislo FROM Ucet) • Příkaz UPDATE (prohledávací) UPDATE jm_tabulky SET jm_sloupce = výraz|NULL|DEFAULT, … [WHERE podmínka] → změní hodnoty specifikovaných sloupců v řádcích splňujících podmínku „Poznač vklad 1000 Kč na účet číslo 100.“ UPDATE Ucet SET stav=stav+1000 WHERE c_uctu=100 Počítačová cvičení z předmětu Datové sklady pro FP
MS SQL Server 2005 – práce s databází Spusťte si Microsoft SQL Server Management studio Programy -> Microsoft SQL Server 2005 -> Microsoft SQL Server Management studio Přihlašte se loginem a heslem pro SQL Server (u1-u20) Použijte databázi – dle vašeho loginu (u1 – db1,.., u20 – db20) Pomocí připravených skriptů vytvořte tabulky Samostatný úkol: vytvořte tabulku Transakce a vložte jeden řádek Počítačová cvičení z předmětu Datové sklady pro FP
MS SQL Server 2005 - Přihlašování do systému Programy -> Microsoft SQL Server 2005 -> Microsoft SQL Server Management studio Adresa serveru je winsql, resp. winsql.fit.vutbr.cz Počítačová cvičení z předmětu Datové sklady pro FP
MS SQL Server 2005 – použití databáze Každý účet má přiřazenu vlastní databázi: U1 = db1,…, u20 = db20 Počítačová cvičení z předmětu Datové sklady pro FP
MS SQL Server 2005 – spouštění SQL dotazů Pro spouštění SQL skriptů je potřeba se přepnout do dotazovacího okna Počítačová cvičení z předmětu Datové sklady pro FP
MS SQL Server 2005 – spouštění skriptů Nový skript se spouští přes kontextové menu – „Execute“ Počítačová cvičení z předmětu Datové sklady pro FP
MS SQL Server 2005 – refresh seznamu tabulek Aktualizovaný seznam tabulek získáte přes kontextové menu – „Refrresh“ Počítačová cvičení z předmětu Datové sklady pro FP
MS SQL Server 2005 - Vytvoření tabulek Počítačová cvičení z předmětu Datové sklady pro FP
MS SQL Server 2005 - Tabulka klient CREATE TABLE Klient ( r_cislo CHAR(11) NOT NULL, jmeno VARCHAR(20) NOT NULL, ulice VARCHAR(20), mesto VARCHAR(20), PRIMARY KEY (r_cislo) ); CREATE UNIQUE INDEX Iklient ON Klient (r_cislo); INSERT INTO Klient VALUES('440726/0672','Jan Novák','Cejl 8','Brno'); VALUES('530610/4532','Petr Veselý','Podzimní 28','Brno'); VALUES('601001/2218','Ivan Zeman ','Cejl 8','Brno'); Počítačová cvičení z předmětu Datové sklady pro FP
MS SQL Server 2005 - Tabulka pobočka CREATE TABLE Pobocka ( nazev VARCHAR(20) NOT NULL, jmeni INTEGER, PRIMARY KEY (nazev) ); CREATE UNIQUE INDEX Ipobocka ON Pobocka (nazev); INSERT INTO Pobocka VALUES('Jánská',10000000); VALUES('Palackého',5000000); SELECT * FROM Pobocka; Počítačová cvičení z předmětu Datové sklady pro FP
MS SQL Server 2005 - Tabulka účet CREATE TABLE UCET ( c_uctu INTEGER NOT NULL, stav DECIMAL(10,2), r_cislo CHAR(11) NOT NULL, pobocka VARCHAR(20), PRIMARY KEY (c_uctu), FOREIGN KEY (r_cislo) REFERENCES Klient ON DELETE CASCADE, FOREIGN KEY (pobocka) REFERENCES Pobocka ); CREATE UNIQUE INDEX Iucet ON Ucet (c_uctu); INSERT INTO Ucet VALUES(4320286,52000,'440726/0672','Jánská'); VALUES(2348531,10000,'530610/4532','Jánská'); VALUES(1182648,10853,'530610/4532','Palackého'); Počítačová cvičení z předmětu Datové sklady pro FP
MS SQL Server 2005 - Tabulka transakce Úkol: Vytvořte tabulku transakce a vložte do ní řádek s daty Počítačová cvičení z předmětu Datové sklady pro FP
MS SQL Server 2005 – Ukončení práce Drop table transakce; Drop table ucet; Drop table klient; Drop table pobocka; Počítačová cvičení z předmětu Datové sklady pro FP
Toť vše… Počítačová cvičení z předmětu Datové sklady pro FP