Lekce 11 - Vytvoření databáze v MS SQL Management Studio
V předešlém cvičení, Řešené úlohy k 8.-10. lekci Databáze ve VB.NET - ADO.NET, jsme si procvičili nabyté zkušenosti z předchozích lekcí.
V dnešním Databáze - ADO.NET tutoriálu založíme databázi v nástroji SQL Server Management Studio. Vytvoříme si dvě tabulky, na kterých si ukážeme dotazy přes více tabulek.
SQL Server
Způsobů, jak databázi vytvořit, je mnoho. Jako nástroj můžeme použít
buď SQL
Server Management Studio nebo přímo Visual
Studio. My si zkusíme vytvořit databázi v nástroji Management
Studio. Vytvoříme si databázi na serveru, který máme
nainstalovaný na našem počítači nebo SQL
Server si nyní nainstalujeme a pojmenujeme ho SQLEXPRESS
.
Poté spustíme nástroj SQL Server Configuration Manager.
SQL Server Configuration Manager
Aplikace SQL Server Configuration Manager slouží ke zjištění a konfigurování běžících služeb. Okno aplikace vypadá následovně:
Vidíme zde běžící služby, včetně našeho SQL
Serveru, který jsme nainstalovali a pojmenovali jako
SQLEXPRESS
. Pokud má náš SQL Server stav Stopped,
zapneme jej. Nyní jsme se tedy přesvědčili, že je server na daném stroji
přítomen a že již běží. Nyní spustíme SQL Server Management
Studio.
SQL Server Management Studio
Aplikace SQL Server Management Studio je administračním nástrojem, ve kterém budeme navrhovat strukturu databáze a také pracovat s uloženými daty.
Připojení k serveru
Jako první nás Management Studio vyzve k zadání údajů pro připojení k serveru, kde v políčku:
- Server type vybereme
Database Engine
, - Server name zadáme
Název_zařízení\JMENO_VASEHO_SERVERU
, například:DESKTOP-MN76PU6\SQLEXPRESS
, - Authentication vybereme
Windows Authentication
.
Po kliknutí na tlačítko Connect se k serveru připojíme:
Založení Databáze
V levé části aplikace vidíme okno Object Explorer, ve kterém
vidíme stromovou strukturu našeho serveru. Rozbalíme
položku DESKTOP-MN76PU6\SQLEXPRESS
-> Databases
.
Na položku Databases klikneme pravým tlačítkem a zvolíme New
database:
Jelikož naše testovací aplikace pro práci s databází bude jednoduchý
slovníček, databázi pojmenujeme SlovnicekDB
:
Databáze se objeví v okně Object Explorer. Rozbalíme ji a stejně tak její položku Tables, kde zatím máme jen systémové tabulky.
V relačních databázích se data ukládají do tabulek.
Založení tabulky
Do databáze budeme chtít ukládat slovíčka našeho slovníčku. Nejprve musíme vytvořit novou tabulku. Na položku Tables klikneme pravým tlačítkem a zvolíme možnost New -> Table...:
Vložení sloupce pro primární klíč
Nyní si do tabulky vložíme primární klíč.
Každá položka v databázi, tedy řádek v tabulce, by měla mít unikátní identifikátor. To je sloupec, ve kterém je pro každý řádek hodnota jedinečná. Právě k tomuto účelu slouží primární klíč.
My si teď takový primární klíč do tabulky vložíme jako první sloupec. Do políčka:
- Column Name napíšeme název sloupce
Id
, - Data Type vložíme datový typ
int
, - Allow Null necháme nezaškrtnuté.
Vložení dalších sloupců
Do tabulky si dále přidáme další tři sloupce s názvy:
Czech
, typunvarchar(50)
pro české znění slovíčka,English
, typunvarchar(50)
, pro anglické znění slovíčka,Difficulty
, typuint
pro obtížnost slovíčka.
Po zápisu sloupců vypadá tabulka takto:
Typ nvarchar(50)
označuje řetězec znaků, kde
50
je maximální počet znaků. Nepleťme si typ
nvarchar
s typem nchar
. U typu nchar
se
nejedná o maximální velikost, ale text by byl vždy dlouhý 50
znaků. Ještě existují typy char
a varchar
(bez n
), které nepodporují kódování Unicode,
a proto je nebudeme používat. Pro krátký text budeme tedy vždy používat
typ nvarchar
.
Definice tabulky je téměř totožná s definicí třídy, jednoduše
navolíme atributy, které daná entita má. Řádky zapsané v tabulce poté
můžeme chápat jako jednotlivé instance třídy. Tvoříme
tedy jakoby třídu Word
(slovíčko), která má vlastnosti
Id
, Czech
(české znění) a English
(anglické znění). Takto budeme ve výsledku s databází i pracovat.
Unikátnost primárního klíče
Id
Vraťme se ještě ke sloupci Id
. Označme ho a vyberme dole v
okně Column properties, v rozbalovacím seznamu Identity
Specification, možnost Is Identity
, kterou nastavíme na
Yes
:
Tím jsme určili, že sloupec Id
je vždy
unikátní. Management Studio nám samo nastavilo i
hodnoty Identity Increment
a Identity Seed
na
1
. To znamená, že první slovíčko v tabulce bude mít hodnotu
Id
1
, druhé 2
atd... . Databáze
přiřadí automaticky každému nově vloženému slovíčku o
1 vyšší Id
, o unikátnost se nám tedy stará sama.
Id
rostou stále, i když nějaké slovíčko
vymažeme, uvolněné Id
již nebude použito.
Je to z toho důvodu, že recyklace starých Id
může způsobit
problémy.
Nastavení primárního klíče
Sloupec Id
nyní nastavíme jako primární
klíč pro naši novou tabulku. Uděláme to jednoduše pravým
kliknutím na název sloupce a zvolením možnosti Set
primary key:
Každá tabulka by měla mít primární klíč, abychom byli schopni jednoznačně určit konkrétní záznam. Některé technologie (např. Entity Framework) primární klíč vyžadují.
Pojmenování tabulky
Nakonec zavřeme kartu s editorem tabulky a budeme dotázáni, zda ji chceme
uložit. To samozřejmě potvrdíme a tabulku pojmenujeme
Word
:
Tabulky pojmenováváme velkým písmenem a v jednotném čísle, jako by to byla třída.
Testovací data tabulky
Word
Tabulku máme tímto založenou. Potřebujeme ještě nějaká testovací
data. Na tabulku Word
klikneme pravým tlačítkem a zvolíme
Edit top 200 rows:
Nyní jen vložíme několik slovíček. Id
se vyplňuje samo,
stačí tedy zadat českou, anglickou variantu
a obtížnost:
Založení tabulky
Category
Přidejme si ještě druhou tabulku, díky které si budeme moci ukázat i pokročilejší dotazy přes více tabulek.
Vložení sloupců
Do druhé tabulky opět vložíme sloupec Id
, kterému
nastavíme Identity na True
, a také ho učiníme
primárním klíčem. Co se týče dalších sloupců, bude zde
pouze jeden, opět typu nvarchar(50)
a s názvem
Title
. To bude titulek kategorie (např.
Počítače
, Zvířata
nebo
Ostatní
):
Tabulku uložíme a pojmenujeme Category
.
Testovací data tabulky
Category
Do tabulky Category
vložíme testovací data:
Tabulka Word
Nyní přidáme slovíčku vazbu na kategorii, které se
někdy říká cizí klíč nebo relace.
Vraťme se k naší tabulce Word
a přidejme ji ještě jeden
sloupec s názvem CategoryId
. Bude typu int
. V okně
Column Properties, v políčku Default Value or Bind, mu
nastavíme hodnotu 1
:
Nyní klikneme pravým tlačítkem na sloupec CategoryId
a z
menu zvolíme Relationships...:
V nově otevřeném okně pomocí tlačítka Add přidáme nový vztah (relaci). V položce Tables And Columns Specification klikneme na tlačítko ...:
Zde nastavíme, že se tabulka Word
pomocí sloupce
CategoryId
připojí na primární klíč tabulky
Category
, kterým je Id
a potvrdíme:
Nyní databáze ví, že pokud je např. u slovíčka ve sloupci
CategoryId
hodnota 1
, váže se k první
kategorii. Vše uložíme kliknutím pravým tlačítkem na záložku a
pak na tlačítko Save. Znovu editujme záznamy v tabulce
Word
a slovíčkům nastavme kategorii:
Číslo ve sloupci CategoryId
je samozřejmě
primární klíč do tabulky
Category
. Hodnota 1
tedy odpovídá záznamu
Počítače
, 2
Zvířata
a 3
Ostatní
.
V následujícím kvízu, Kvíz - SqlDataReader, DataSet, SqlDataAdapter ve VB-ADO.NET, si vyzkoušíme nabyté zkušenosti z předchozích lekcí.