DBS Flashcards
Databaze, Databazovy spravovaci system DBMS, Databazovy system
Databaze - logicky usporadana kolekce dat
Spravovaci system DBMS - software poksytujici pristiup k databazi
Databazovy system - informacni ystem ve kterem je vsechno - db, lidi, software, procesy…
Druhy databaz
- Sitove a hierarchicke
- Relacni
- Objektove
- XML
- NoSQL - klic-hodnota, dokumenty, grafy…
Hodne druhu podle potreby, podle zpusobu ulozeni a pristupu, podle dat uchovanych - objekty, vztahy, grafy, soubory
Konceptualni model
ER nebo UML
- abstrakce realneho sveta
- rozpoznani entit a vzajemnych vztahu
- pouze navrh nezavisly na architekture
Koncpecni modelovani
- proces vytvareni koncepcniho modelu z probelmu
Logicky model
Specifikuje jak koncetualni komponenty jsou reprezentovany v databazi a strukturach
- relacni model, objektovy model, grafy..
- tedy ke koncpecnimu modelu pridavat konkretnejsi reprezetnaci
Fyzicky model
Specifikuje jak logicka databaze je implmenetovana v prostredi
- pomoci data files, tabulek, b-stromy…
Model vs Schema vs Diagarm
Model
- neco jako jazyk, syntaxe
- mnozina konstrukci jak neco vyjadrit
- treba UML model = popis pomoci class, atribute, asociace…
- relacni model - poopis pomoci relacniho schematu, atributu…
- je to tedy popisovaci nastroj
Schema
- instance konkretniho modelu
- treba kdyz popisu osobu pomoci ER modelu - Person(name, email)…
Diagram
- vizualizace graficka schematu
Nejzakladnejsi prehled tvordy koncepcniho modelu
- Analyza
- rozpoznani entita
- rozpoznani vztahu
- rozpoznani artibutu - Model
- zvoleni jazyka pro popis
- vytvoreni schematu
- vytvoreni diagramu - Iteruj znovu pro vylepseni
ER a UML
Dva modelovaci nastroje
UML - tandardizovany, vice pouzivanej, spise pro navrh kodovacho designu
- rodina modelu jako class diagrams, use case, state diagrams…
- treba Enterprise Architect
- Unified Modeling Language
Class ma name a atributy
ER
- nestandardizovany
- mene pozuivanej
- spise se zameruje na data design - tedy vztahy a charakteristicky
- entity-relationship model
- ISA hierarchy
Entity type ma name
Isa hierarchie
Dedicny/generalization vztah entit, tedy proste pdiam sipku beze jmena a akridnalit, pouze to ukazuje, ze entita dedi vsechno od predkla
ISA Omezeni:
1. Pokryvajici podminka
- kazda entita ma MINIMALNE jeden konkretni typ
- kazda entita musi byt alespon jednoho specifickeho dedicneho typu
- tedy kazda entita Person musi byt alespon Profesor nebo Student, nebo oba
- tedy nemuzu mit v systemu pouze entitu Person bez urceni dalsiho typu
- Vylucovaci dedicnost
- kazda entita ma MAXIMALNE jeden konkretni typ
- tedy nejde mit Studenta ktery je zaroven Profesor
Slozeny atribut v ER
Takovy atribut, ktery muzeme schovat do jednoho vice info
- treba atribut adresa(mesto, zip, street)
Nebo datum narozeni…
Nebo jakykoliv atribut, ktery ma v sobe vice urcujicich polozek.
V UML jako nova classa cela
V ER pouze z jednoho kolecka vede vice urcujicich kolecek
Rekurzivcni typ
Treba Person ma 0..n nadrizenych a zaroven sam muze byt pro 0..n personu nadrizenym. Je to vztah sam se sebou jen se musi pojemnovat z obou stran
N-arni vztah
Takovy, ktery je sdilen mezi vice entitami, treba mezi tremi:
Clovek pracuje na projektu ale pouze jako clen tymu
Takze mam 3 entity - Clovek, Projekt, Tym
Mezi nimi je sdileny vztah “pracovnik” (kosoctverec), ktery je spojeny se vsemi tremi naraz
Identifikator
bud jeden plne kolecko unikatni, nebo preskrtnu carou vsechno co se pouzije jako identifikator (treba rodne cislo jedno, vs (jmeno,prijmeni))
Muzu jako identifikator pouit i hranu vztahu - castecny identifikator
(treba tym je urcen svym nazvem A NAZVEM INSTITUCE, tedy identifikator je vazba “patri do” instituce)
Silne vs slabe entitni typy (classy)
Silny - ma alespon jeden plny identifikator (bud jednotny, nebo vicenasobny)
Slaby - nema svuj vlastni full identifikator, tudiz ma alespon jeden castecne zavisly identifikator
Co pridava logicka vrstva nad konceptualni?
Reprezentacni navrh - tedy jak nas konceptualni model budeme reprezentovat v databazi
- treba tabulky s rows, columns
- objekty
- kolekce
- pointery
- grafy…
- pridava tedy zavislost na platforme a imlmeetnaci
- uz pocita s jazykem ve kterem bude db realizovana
- tedy vezme ER model a prida treba typy, pole, funkce, public/private atributy atd… -> prevede do jazykoveho modelu konkretnejsiho
Logicka vrstva zalozena na tabulkach, vlastnosti
Struktura - tabulky, rows, columns
- operace klasicke select, join, project,…
- vhodne pro relacni modely
- dobre zachycuji vztahy, nasobnosti
- typicky s SQL
Objektovy anrvh-
zalozeno na objektech, ukazatele vzajmen
- hlavne pri OOP
- enkapsulace, inheritance
- predavani zrpav,,,
Grafovy model
- grafova struktura, hrany a uzly, atribytu
- operace - trevaserovani, grafove algoritmy, pattern amtching
- typicky pri sitovani
Stromove modely
- uzly a hrany, atributy
- hierarchicke usporadani-
- kategorizace dat, strukturovana data
- XML dokumenty, JSON dokumenty, b-stromy…
Relacni model
Typ uchovani entit do tabulek, kde kazda entita je jedenr adek a sloupce jsou jeji etributy. Umoznuje zachycovat vztahy mezi entitami
Relacni databaze - zalozena na relacnim modelu, tedy entity maji vzajemne vztahy
popis pomoci Entita(atributy…)
Pozadavky na relacni model
- Atomicita atributu - pouze jednoduche typy
- nebo slozene atributy z jednoduchy typu - Jednoznacnost vztahu (unikatnost jednoho zaznamu)
- v databazi nemuze byt nekolikrat ten samy zaznam identicky - Nespecifikujeme poradi zaznamu
- zaznamy nemaji zadne poradi v jakem se uchovavjai (nezavisle) - Kompletni hodnoty-
- vsechny atributy se msuyi uivest (krome NULL specificky)
Identifikace, superklic, klic
Identifikace pozadavek - kazde zaznam je jednoznacne urcne podle jednoho ci vice atributu
Superklic - mnozina identifiakcnich atributu
- trivialne default: vsechny atributy entity
Klic - nejmensi mnozina identifikatoru
- tedy z klice pokud odeberem alespon jedden atribut, pak uz neni unikatne rozlisitelny
znaci se podtrzenim, treba
Person(id, name, surname)
Superklic - treba (id, name, surname)
Klice - (id) - jednoduchy klic, nebo i (name, surname) - slozny klic
Cizi kliec
Atribut, ktery je klicem jine entity
Treba
Course(code, name), kde code je identifikator
Schedule(course, time…), kde Schedule.course je Course.code, tedy referencuje jinou entity podle jejiccho klice
Prevod ER/UML modelu na relacni model (jak ho reprezentovat v tabulkach)
Jak muj diagram reprezentovat v db?
Class/Entita - samostatna tabulka s atributy
- plus pridam umely id jako nejaky integer, je to novy unikatni identifikator, puvodni identifikatory musim pak deklarovat jako UNIQUE
Vicenasobny atribyt (kardinalitou) - samostatna tabulka
- treba vsechna telefonni cisla, tak por to zalozim novou tabulku
PhoneNumbers(person, phone), kde person je cizi klic na tabulku person…
Slozeny atribut - samostane tabulka
- stejne jako telefoni cisla, tedy treba tabulka slozenych adres bude odkazovat na lidi
1:1 vazby - pomoci tabulky pouze dvou identifikatoru
treba taabulka PhoneOwnership:
person_id ; phone_id, nic jineho
Vetsinou podle typu vazby se muzeme obejit i bez pomocne tabulky vzajemneho vztahu, ale je to jednodussi od pohledu zpusob
- tedy pokud EntitaA je nejak spojena s nezavislou EntitouB, pak jejich vzajmeny vztah reprezentuju pomocnou tabulkou, kde se pouze odkazu na tyto entity_a_id, nentity_b_id…
Podobne ukladam i vztahove entity, treba Person je Member Teamu, tedy mam tabulku person, tabulku team a tabulku member, kde uvedu odkazy na cloveka a tym a treba dalsi atributy jako from, to…
Obecne N-arni vztahy = n tabulek entity, + 1 pomocna, kde jsou odkazy na zucastnene entity
Dedicne entity - tabulka pro nadrizenou entity, tam uvedu jeji ID a zakladni spolecne atribut, pak pridam tabuylky vsech potomku, ktere mi odkazuji na nadrizne ID a pridavaji i unikatni svoje atributy navic
Slaba entita (ma identifiaktor zavislej na vztahu s jinou entitou) - jeji identifikator odkazuje na nadrizenou tridu…
SQL vytvareni dat
Structured Query Language
Standardni jazyk pro manipulaci s relacnim databaezemi
1. Data definition
- create
2. Data manipulation
- query
Syntax - podle railroad diagramu
CREATE TABLE Product (
Id INTEGER,
Name VARCHAR(128),
Price DECIMAL(6,2),
Produced DATE,
Available BOOLEAN DEFAULT TRUE,
Weight FLOAT
);
Podminka sloupce: tedy zavadi podminky pro nabyvane hodnoty sloupce:
- NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY…, CHECK
CREATE TABLE Product (
Id INTEGER CONSTRAINT IC_Product_PK PRIMARY KEY,
Name VARCHAR(128) UNIQUE,
Price DECIMAL(6,2) CONSTRAINT IC_Product_Price NOT NULL,
Produced DATE CHECK (Produced >= ‘2015-01-01’),
Available BOOLEAN DEFAULT TRUE NOT NULL,
Weight FLOAT,
Producer INTEGER REFERENCES Producer (Id)
);
CREATE TABLE Producer (
Name VARCHAR(128),
Country VARCHAR(3),
CONSTRAINT IC_Producer_PK PRIMARY KEY (Name, Country)
);
CREATE TABLE Product (
Id INTEGER PRIMARY KEY,
…
ProducerName VARCHAR(128),
ProducerCountry VARCHAR(3),
CONSTRAINT IC_Product_Producer_FK
FOREIGN KEY (ProducerName, ProducerCountry)
REFERENCES Producer (Name, Country) ON DELETE CASCADE
);
ON UPDATE, ON DELETE - co se ma provest s danou polozkou, pokud puvodni referencovatelna hodnota byla pozmenena - odstranene
- CASCADE - uprav, nebo odstran vsude podle reference
- SET NULL
- SET DEFAULT
- NO ACTION
- RESTRICT
ALETR TABle - modifikace tabulky nebo sloupcu
DROP TABLE - komplentni odstraneni
INSERT INTO table
- vlozeni novych zaznamu
- bud vycttem (sloupce, …, ) (hodnoty,..) nebo pokud naplnuju vsechny sloupce podle chronologie tak je neuvadim
INSERT INTO Product
VALUES (0, ‘Chair1’, 2000, ‘2015-05-06’, TRUE, 3.5, 11);
INSERT INTO Product
(Id, Name, Price, Produced, Weight, Producer)
VALUES (1, ‘Chair2’, 1500, ‘2015-05-06’, 4.5, 11);
UPDATE - uprava takovych zaznamu, ktere splnuji podminku:
UPDATE Product
SET Name = ‘Notebook’
WHERE (Name = ‘Laptop’);
UPDATE Product
SET Price = Price * 0.9
WHERE (Produced < ‘2015-01-01’);
DELETE - podobny princip,,,
Select query
SELECT statements in a nutshell
‒ Consist of 1-5 clauses and optionally also ORDER BY clause
▪ SELECT clause: which columns should be included in the result table
▪ FROM clause: which source tables should provide data we want to query
▪ WHERE clause: condition a row must satisfy to be included in the result
▪ GROUP BY clause: which attributes should be used for the aggregation
▪ HAVING clause: condition an aggregated row must satisfy to be in the result
▪ ORDER BY clause: attributes that are used to sort rows of the final result
‒ … WHERE (Capacity > 200) AND (Aircraft LIKE ‘Airbus%’) …
‒ … WHERE (Company IN (‘KLM’, ‘Emirates’)) …
‒ … WHERE NOT (Passengers BETWEEN 100 AND 200) …
MEMEBRSHIP prediakt - urcuje, zda nejaka hodnota je v mnozine povolenych hodnot
- treba Company IN (“CompanyA”, “CompanyB”…)
ALL vs ANY/SOME - kazdy zaznam musi vyhovovat podmince, nebo alespon jeden
Null, Unknow,s trojita logika, k cemu slouci
NULL - reprezentace chybejicich dat, nebo kontrola, ze data jsou
- IF (neco IS NOT NULL) - takto jde
- IF (neco IS NULL) - takto nejde!
NULL je chybova anvratova hodnota FUNKCI
- 3 + NULL = NULL
ALE 3<NULL = UNKNOWN
- tedy pri rpedikatovych oepracichh se zavede neurcita nova logicka konstanta UNKNOWN
Trojita logcka logika = True, False, Unknown
- logicky tabulky funguji podobne