Popis definiční části jazyka SQL,specifikace deklarace primárních a cizích klíčů a příklady na modelu knihovny: Porovnání verzí

Řádek 42: Řádek 42:
 
'''Vztah'''(angl. relationship) je vazba mezi dvěma (nebo více) entitami. Např. entita "student Novák Josef, r.č. 470822172" může být ve vztahu "má zapsán" k entitě "učební předmět Konstrukce databázových systémů".
 
'''Vztah'''(angl. relationship) je vazba mezi dvěma (nebo více) entitami. Např. entita "student Novák Josef, r.č. 470822172" může být ve vztahu "má zapsán" k entitě "učební předmět Konstrukce databázových systémů".
 
<br/>
 
<br/>
'''Hodnota piposného typu'''(angl. value) - kde popisným typem budeme rozumět jednoduchý datový typ, tedy dvojici {množina hodnot, množina operací}. Hodnotami jsou například celé číslo 123, datum 31.2.1994 apod.
+
'''Hodnota popisného typu'''(angl. value) - kde popisným typem budeme rozumět jednoduchý datový typ, tedy dvojici {množina hodnot, množina operací}. Hodnotami jsou například celé číslo 123, datum 31.2.1994 apod.
 
<br/>
 
<br/>
 
'''Atributem'''(angl. attribute) budeme rozumět funkci přiřazující entitám či vztahům hodnotu (zde popisného typu), určující některou podstatnou ''vlastnost'' entity nebo vztahu. Např. DATUM výpůjčky dané knihy daným abonentem, RODNÉ_ČÍSLO danho zaměstnance, apod.  
 
'''Atributem'''(angl. attribute) budeme rozumět funkci přiřazující entitám či vztahům hodnotu (zde popisného typu), určující některou podstatnou ''vlastnost'' entity nebo vztahu. Např. DATUM výpůjčky dané knihy daným abonentem, RODNÉ_ČÍSLO danho zaměstnance, apod.  
Řádek 62: Řádek 62:
 
PK (primary key) = primární klíč<br/>
 
PK (primary key) = primární klíč<br/>
 
CHAR(20) = text délky maximálně 20 znaků<br/>
 
CHAR(20) = text délky maximálně 20 znaků<br/>
DECIMAL(10,0) = číslo s jedním desetinným místem<br/>
+
DECIMAL(10,0) = první číslo označuje celkový počet míst v číslici, druhé počet míst za desetinní čárkou. V tomto případu se jedná o 10 místní číslo s 0 desetinnými místami. (Např. Decimal(4,3) jsou čísla od -9,999 do 9,999.)<br/>
  
 
===Data definition language===
 
===Data definition language===
  
 
<br/>
 
<br/>
'''Vytvor tabulku dílo:'''<br/>
+
'''Vytvoř tabulku dílo:'''<br/>
 
CREATE TABLE Dilo<br/>
 
CREATE TABLE Dilo<br/>
 
(id_dilo PK INT,<br/>
 
(id_dilo PK INT,<br/>
Řádek 73: Řádek 73:
 
popis CHAR(200));<br/>
 
popis CHAR(200));<br/>
 
<br/>
 
<br/>
''Vysvětlení interpunkce: středník odděluje jednotlivé SQL dotazy, čárka odděluje vstupné parametre.''<br/>
+
''Vysvětlení interpunkce: středník odděluje jednotlivé SQL dotazy, čárka odděluje vstupní parametry.''<br/>
 
<br/>
 
<br/>
'''Vytvor tabulku vydání:'''<br/>
+
'''Vytvoř tabulku vydání:'''<br/>
 
CREATE TABLE vydani<br/>
 
CREATE TABLE vydani<br/>
 
(id_vyd PK INT,<br/>
 
(id_vyd PK INT,<br/>
Řádek 84: Řádek 84:
 
''Vysvětlení references: references píšeme, protože používáme cizí klíč - musíme zadefinovat, kam cizí klíč odkazuje.''<br/>
 
''Vysvětlení references: references píšeme, protože používáme cizí klíč - musíme zadefinovat, kam cizí klíč odkazuje.''<br/>
 
<br/>
 
<br/>
'''Vytvor tabulku autorství:'''<br/>
+
'''Vytvoř tabulku autorství:'''<br/>
 
CREATE TABLE Autorstvi<br/>
 
CREATE TABLE Autorstvi<br/>
 
(id_autorstvi PK INT,<br/>
 
(id_autorstvi PK INT,<br/>
Řádek 123: Řádek 123:
 
VALUES(1, 1, 1);<br/>
 
VALUES(1, 1, 1);<br/>
 
<br/>
 
<br/>
''Vysvětlení IDs: Dílo má id "1", protože je to první záznam, který do tabulky dílo vkládám (může mít i jiné id, např. 203, já jsem si zvolila 1). Autoro má id "1", protože je to pvní záznam, který do tabulky autor vkládám (může mít i jiné id, já jsem si zvolila číslo 1). Každý záznam musí mít v rámci své tabulky unikátní id, protože id je v tomto případu primárním klíčem. Id (primárni klíč) není unikátní vrámci celé databáze, ale vrámci dané tabulky.''<br/>
+
''Vysvětlení IDs: Dílo má id "1", protože je to první záznam, který do tabulky dílo vkládám (může mít i jiné id, např. 203, já jsem si zvolila 1). Autoro má id "1", protože je to pvní záznam, který do tabulky autor vkládám (může mít i jiné id, já jsem si zvolila číslo 1). Každý záznam musí mít v rámci své tabulky unikátní id, protože id je v tomto případu primárním klíčem. Id (primárni klíč) není unikátní vrámci celé databáze, pouze vrámci dané tabulky.''<br/>
 
<br/>
 
<br/>
 
'''Vymaž pokuty, ktoré vznikli na Vánoce'''<br/>
 
'''Vymaž pokuty, ktoré vznikli na Vánoce'''<br/>

Verze z 2. 1. 2017, 21:47

Stránka ve výstavbě
Inkwell icon - Noun Project 2512.svg Na této stránce se právě pracuje. Prosím needitujte tuto stránku, dokud na ní zůstává tato šablona. Předejdete tak editačnímu konfliktu. Jestliže uběhla od poslední editace doba alespoň dvou dnů, neváhejte tuto šablonu odstranit. Inkwell icon - Noun Project 2512.svg

rezervace Miriam Tančiboková

Základy SQL se zabývají jazykem SQL. Jazyk SQL (Structured Query Language - strukturovaný dotazovací jazyk) je v případě SQL data bázových serverů rozhraním, které slouží ke zpřístupnění dat. Jazyk SQL byl vyvinut firmou IBM na počátku 70. Let jako dotazovací jazyk pro práci s velkými databázemi na počítačích střediskového typu. Cílem tvůrců SQL bylo vyvinout takový nástroj pro koncové uživatele, který by jim umožnil vybírat data z databáze přesně podle jejich individuálních požadavků a byl přitom co nejjednodušší. [1]

E-R konceptuální model

Alternativní konvence pro psaní diagramů
Dvě vztažené entity za použití notace Crow's Foot

Entity-relationship model (ERM), entitně vztahový model se v softwarovém inženýrství používá pro abstraktní a konceptuální znázornění dat. Entity-relationship modelování je metoda datového modelování, která vytváří jeden z typů konceptuálních schémat či sémantických datových modelů systému (obvykle relační databáze) a požadavků na něj stylem shora dolů. [2]

Alternativní konvence pro psaní diagramů

Chenova notace entity-relationship modelování používá obdélníky pro znázornění entit a kosočtverce pro znázornění vztahů. Tato notace je odpovídající, protože Chenovy vztahy jsou původně objekty - mohou samy obsahovat atributy i další vztahy.[2]

Alternativní konvence, částečně z historického hlediska:

  • IDEF1X[4]
  • Bachmanova notace
  • Martinova notace
  • (min, max)-notace Jean-Raymonda Abriala z roku 1974
  • Standard UML
  • EXPRESS[2]

Crow's foot

Jedna z alternativních notacích známá jako "crow's foot" byla vytvořena nezávisle, v těchto diagramech jsou entity znázorněny v boxech a vztahy oblouky s popisem. Notace "Crow's Foot" znázorňuje vztahy propojováním entit čarami, přičemž symboly na obou koncích čáry symbolizují kardinalitu vztahu. Notace Crow's Foot se používá v Barkerově notaci a v metodologiích jako je SSADM (Structured Systems Analysis and Design Method) nebo informační inženýrství.[2]

Notace Crow's foot má následující výhody:

  • Srozumitelnost definování kardinality a dědičnosti ze strany vztahu
  • Stručně řešená notace povinného vztahu použitím svislé čáry a volitelného vztahu prázdnou kružnicí
  • Zobrazuje stručně a jasně notaci, která identifikuje všechny třídy[2]


Popis jazyka SQL

Definice pojmů


Entita(angl. entity) je objekt reálného světa, který je schopen nezávyslé existence a je jednoznačně odlišitelný od odstatních objektů. Entitou je např. "student Novák Josef, r.č.470822172".
Vztah(angl. relationship) je vazba mezi dvěma (nebo více) entitami. Např. entita "student Novák Josef, r.č. 470822172" může být ve vztahu "má zapsán" k entitě "učební předmět Konstrukce databázových systémů".
Hodnota popisného typu(angl. value) - kde popisným typem budeme rozumět jednoduchý datový typ, tedy dvojici {množina hodnot, množina operací}. Hodnotami jsou například celé číslo 123, datum 31.2.1994 apod.
Atributem(angl. attribute) budeme rozumět funkci přiřazující entitám či vztahům hodnotu (zde popisného typu), určující některou podstatnou vlastnost entity nebo vztahu. Např. DATUM výpůjčky dané knihy daným abonentem, RODNÉ_ČÍSLO danho zaměstnance, apod. [3]

Příkazy


SQL příkazy se dělí na čtyři základní skupiny:

  • 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) [4]

Konceptuální schéma knihovny

Konceptuální schéma knihovny pomocí notace Crow's Foot
File:SQL_knihovna.png

FK (foreign key) = cizí klíč
PK (primary key) = primární klíč
CHAR(20) = text délky maximálně 20 znaků
DECIMAL(10,0) = první číslo označuje celkový počet míst v číslici, druhé počet míst za desetinní čárkou. V tomto případu se jedná o 10 místní číslo s 0 desetinnými místami. (Např. Decimal(4,3) jsou čísla od -9,999 do 9,999.)

Data definition language


Vytvoř tabulku dílo:
CREATE TABLE Dilo
(id_dilo PK INT,
nazev CHAR(200),
popis CHAR(200));

Vysvětlení interpunkce: středník odděluje jednotlivé SQL dotazy, čárka odděluje vstupní parametry.

Vytvoř tabulku vydání:
CREATE TABLE vydani
(id_vyd PK INT,
id_dilo FK INT REFERENCES Dilo(id_dilo),
cid_vyd CHAR(20),
rok_vyd CHAR(20));

Vysvětlení references: references píšeme, protože používáme cizí klíč - musíme zadefinovat, kam cizí klíč odkazuje.

Vytvoř tabulku autorství:
CREATE TABLE Autorstvi
(id_autorstvi PK INT,
id_dilo FK INT REFERENCES Dilo(id_dilo),
id_aut FK INT REFERENCES Autor(id_aut));

Vymaž tabulku Druh sekundárního autorství:
DROP TABLE Drusekaut;

Vymaž databázi Knihovna:
DROP DATABASE Knihovna;

Uprav tabulku dílo: přidej řádek evidenční číslo
ALTER TABLE dilo
ADD ev_cis CHAR(200);

Uprav tabulku pokuta: odtraň datum pokuty
ALTER TABLE pokuta
DROP dat_pok;

Vysvětlení: datový typ, napr. "CHAR(200)" nebo "INT" píšeme jenom tehdy, když něco vytváříme. Když mažeme, nemusíme datový typ psát/definovat.

[5][3]

Data manipulation language


Vlož dílo "Pán prstenů - dvě veže"
INSERT INTO Dilo(id_dilo, nazev, popis)
VALUES(1, "Pán prstenů - dvě věže", "druhý díl trilogie");

Vlož autor "J.R.R. Tolkien"
INSERT INTO Autor(id_aut, jme_aut,pri_aut)
VALUES(1,"J.R.R.","Tolkien");

Přepoj "Pán prstenů - dve veže" a "J.R.R. Tolkien" v tabulce autorství
INSERT INTO Autorstvi(id_autorstvi, id_dilo, id_aut)
VALUES(1, 1, 1);

Vysvětlení IDs: Dílo má id "1", protože je to první záznam, který do tabulky dílo vkládám (může mít i jiné id, např. 203, já jsem si zvolila 1). Autoro má id "1", protože je to pvní záznam, který do tabulky autor vkládám (může mít i jiné id, já jsem si zvolila číslo 1). Každý záznam musí mít v rámci své tabulky unikátní id, protože id je v tomto případu primárním klíčem. Id (primárni klíč) není unikátní vrámci celé databáze, pouze vrámci dané tabulky.

Vymaž pokuty, ktoré vznikli na Vánoce
DELETE FROM Pokuta
WHERE dat_pok = "24122016";

Vymaž všechny pokuty:
DELETE FROM Pokuta;

Vymaž všetny autory
DELETE FROM Autor;

Vysvetleni: bez definice WHERE mažu všechno.

Zmaž všechny výpujčky od Vánoc do Silvestra:
DELETE FROM Vypujcka
WHERE dat_od = "24122016"
AND dat_do = "31122016";

Vysvětlení formy data: v konceptuálním schématu knihovny máme definovanou délku data na 8 znaků. Můžeme tedy datum napsat ve formě 24122016 nebo 24.12.16 - podstatné je dodržet délku pole, co je 8 znaků.

Zmaž autora J.R.R. Tolkien:
DELETE FROM Autor
WHERE jme_aut = "J.R.R"
AND pri_aut = "Tolkien";

Zmeň cenu stokorunových výtisků na 120 kč.
UPDATE Vytisk
SET cen = 120
WHERE cen = 100;

Změň křestní jméno Petra Nováka na Josef
UPDATE ctenar
SET jme_cte = „Josef“
WHERE jme_cte = „Petr“
AND pri_cte = „Novák“;

priklady so select

[5][3]

Odkazy

Reference

  1. Programování v SQL. In: Ucimedatabaze.cz: Podpora výuky databázových systémů na SOŠ, založené na technologiích společnosti ORACLE [online]. 2011, s. 55 [cit. 2016-12-16]. Dostupné z: http://ucimedatabaze.cz/wp-content/uploads/2012/02/CZ_programovani_SQL.pdf
  2. 2,0 2,1 2,2 2,3 2,4 Entity-relationship model. In: Wikipedie: Otevřená encyklopedie [online]. [cit. 2016-12-16]. Dostupné z: https://cs.wikipedia.org/wiki/Entity-relationship_model
  3. 3,0 3,1 3,2 POKORNÝ, Jaroslav a Ivan HALAŠKA. Databázové systémy: vybrané kapitoly a cvičení. 2. přepr. vyd. Praha: Karolinum, 1998. ISBN 8071846872.
  4. SQL. In: Wikipedie: Otevřená encyklopedie [online]. [cit. 2016-12-17]. Dostupné z: https://cs.wikipedia.org/wiki/SQL
  5. 5,0 5,1 Basic SQL statements: DDL and DML. In: Database design with UML and SQL, 3rd edition [online]. [cit. 2016-12-24]. Dostupné z: http://www.tomjewett.com/dbdesign/dbdesign.php?page=ddldml.php

Použitá literatura

Externí odkazy

Související články

Informační systém, Databáze

Klíčová slova

Databázové systémy, Jazyk SQL, E-R konceptuální model, Informační systém, Informace, Data