2. diel - Vytvorenie databázy v MS SQL Management Studio
V minulej lekcii, Úvod do databáz v C # , sme si urobili úvod do relačných databáz a nainštalovali si Microsoft SQL Server. Dnes si v C# .NET tutoriálu vytvoríme databázu, s ktorou budeme po zvyšok kurzu komunikovať.
Vytvorenie databázy
Spôsobov, ako databázu vytvoriť, je veľa. Ako nástroj môžeme používať buď SQL Server Management Studio alebo priamo Visual Studio. Ako jednoduchší spôsob sa mi zdá vytvoriť databázu priamo v Management Studiu, pretože u Visual Studia je viac postupov a ešte sa líši podľa verzií. Vytvoríme si databázu na serveri, ktorý máme nainštalovaný na našom počítači. Po nainštalovaní SQL Servera spustíme nástroj SQL Server Configuration Manager.
SQL Server Configuration Manager
Aplikácia slúži na zistenie a konfigurovanie bežiacich služieb. Okno aplikácie vyzerá nasledovne:
Vidíme tu bežiace služby, mali by ste vidieť váš SQL Server, ktorý sme
nainštalovali (a tiež pri inštalácii pomenovali). Môj má názov
MSSQLSERVER2008
. Pokiaľ má stav "Stopped", zapnite ho. Teraz sme
sa teda presvedčili, že je server na danom stroji prítomný a že je
beží.
Teraz spustíme SQL Server Management Studio.
SQL Server Management Studio
Aplikácia je administračným nástrojom, v ktorej budeme navrhovať štruktúru databázy a tiež pracovať s jej obsahom (teda s uloženými dátami).
Ako prvý nás Management Studio vyzve na zadanie údajov pre pripojenie k
databáze. Ako meno servera zadáme localhost\JMENO_VASEHO_SERVERU
,
u mňa teda localhost\MSSQLSERVER2008
. Po kliknutí na Connect sa k
serveru pripojíme.
V ľavej časti aplikácie vidíme Object Explorer, kde sa zobrazila stromová štruktúra nášho serveru. Rozbalíme položku Databases, vy tu pravdepodobne budete mať iba zložku so systémovými databázami, ja tu mám už niekoľko databáz z rôznych projektov. Na položku Databases klikneme pravým tlačidlom a zvolíme New database.
Keďže naše testovacie aplikácie pre prácu s databázou bude jednoduchý
slovníček, databázu pomenujeme SlovnicekDB
.
Databáza sa objaví v Object Exploreri, rozbalíme ju a rovnako tak jej položku Tables, kde máme opäť len systémové tabuľky.
O tabuľkách už bola reč minule, vieme, že takto sa dáta do relačnej databázy ukladajú (relačnej databázy sa používajú takmer všade, nerelačných sú výnimkou). Budeme chcieť ukladať slovíčka do našej databázy ku slovníčku. Najprv musíme vytvoriť novú tabuľku, kde definujeme stĺpce, teda vlastnosti, aké slovíčko má. Na položku Tables klikneme pravým tlačidlom a zvolíme možnosť New Table.
Ako už bolo naznačené, každá položka v databáze (teda riadok v
tabuľke) by mala mať unikátnu identifikátor (stĺpec, v ktorom je pre
každý riadok hodnota jedinečná). K tomuto účelu slúži tzv.
Primárny kľúč. Je to obyčajný stĺpec, ktorý sa
najčastejšie pomenuje jednoducho Id
a bude typu int
.
Názvy stĺpcov budeme písať s veľkým začiatočným písmenom.
Hoci doteraz som sa snažil písať ukážkové aplikácie v slovenčine, databáze si navrhneme v angličtine. To preto, že ku koncu kurzu budeme používať technológie, ktoré skloňujú názvy tabuliek a vie samozrejme len po anglicky.
Ďalej pridáme ďalšie 2 stĺpce: Czech
a
English
. Jedná sa o znení slovíčka v slovenčine a v
angličtine. Stĺpce budú typu nvarchar(50)
. Jedná sa o reťazec
znakov kde 50 je maximálny počet znakov. Nepliesť s typom nchar
,
kde sa nejedná o maximálnu veľkosť, ale text je vždy dlhý 50 znakov. Ešte
existujú typy char
a varchar
(bez n
),
tie nepodporujú kódovanie Unicode. Pre krátky text budeme teda vždy
používať typ nvarchar
. Nakoniec pridáme posledný stĺpec
Difficulty
, značiaci obtiažnosť slovíčka. Bude typu
int
.
Ak vás napadla podobnosť databázovej tabuľky a triedy v jazyku C #, tak
máte pravdu. Definícia tabuľky je takmer totožná s definíciou triedy,
jednoducho navolíme atribúty čo daná entita má. Riadky zapísané v
tabuľke potom môžeme chápať ako jednotlivé inštancie triedy. Tvoríme
teda akoby triedu Word
(slovíčko), ktorá má vlastnosti
Id
, Czech
(slovenské znenie) a English
(anglické znenie). Takto budeme vo výsledku s databázou aj pracovať, ale
nepredbiehajme. Vráťme sa ešte ku stĺpci Id
, ten označme a
vyberme dole v Column properties možnosť Is Identity (treba rozbaliť Identity
Specification), ktorú nastavíme na Yes.
Tým sme určili, že stĺpec Id
je vždy unikátny. Management
Studio nám samo nastavilo aj hodnoty Identity Increment a Identity Seed na
1
. To znamená, že prvé slovíčko v tabuľke bude mať hodnotu
Id
1
, druhej 2
atď., Databázy priradí
automaticky každému novo vloženému slovíčku o 1 vyššia Id
,
o unikátnosť sa nám teda stará sama. Id
rastú stále, aj keď
nejaké slovíčko vymastíme a Id
sa teda uvoľní, už nebude
použité. Je to z toho dôvodu, že recyklácia starých Id
môže
spôsobiť problémy. Takto nastavený stĺpec môžeme nastaviť ako
primárny kľúč pre našu novú tabuľku. Urobíme to
jednoducho pravým kliknutím na názov stĺpca a zvolením možnosti Set
primary key.
Každá tabuľka by mala mať primárny kľúč, inak nebudeme schopní jednoznačne určiť konkrétne záznam a niektoré technológie (napr. LINQ to SQL) by s tabuľkou ani nevedeli pracovať.
Nakoniec zavrieme kartu s editorom tabuľky a budeme vyzvaní, či ju chceme
uložiť. To samozrejme potvrdíme a tabuľku pomenujeme Word
(ako
slovíčko). Tabuľky pomenovávame opäť veľkým písmenom a v jednotnom
čísle, ako by to bola trieda.
Databáze máme týmto založenú. Vytvorme si ešte nejaká testovacie dáta, aby nebola prázdna. Na tabuľku klikneme pravým tlačidlom a zvolíme Edit top 200 rows (je možné, že sa popis tejto voľby líši podľa verzie Management Studia).
Teraz len vložíme niekoľko slovíčok, Id
sa vypĺňa samo,
stačí teda zadať českú a anglickú variant a obtiažnosť. Ja som si ich
pridal len niekoľko, vy si ich pokojne naklikajte viac s rôznymi
obtiažnosťami, nech máte čo najviac dát na skúšanie.
Rozšírenie
Ak vás tvorba databázy príliš neodrovnala (čo by nemala ), Môžete si do nej pridať ešte druhú tabuľku. Vďaka tomu si budeme môcť ďalej ukázať aj pokročilejšie otázky cez viac tabuliek. Ak chcete začať radšej jednoducho, môžete tento krok preskočiť rovnako ako pár ďalej ukázaných otázok.
Pridajte si rovnakým spôsobom tabuľku Category
, ktorá bude
reprezentovať kategórii slovíčok. Opäť jej dáme stĺpec Id
,
ktorému nastavíme Identity na Yes a potom ho urobíme primárnym kľúčom.
Čo sa týka ďalších stĺpcov, bude tu iba jeden opäť typu
nvarchar(50)
s názvom Title
. To bude titulok
kategórie (napr. "Počítače"
, "Zvířata"
alebo
"Ostatní"
). Tabuľku uložíme ako Category
.
Opäť vytvoríme testovacie dáta:
Teraz pridáme slovíčku väzbu na kategóriu, ktoré sa niekedy hovorí
cudzí kľúč alebo relácie. Vráťme sa k našej tabuľke Word
a
pridajme ju ešte jeden stĺpec s názvom CategoryId
. Bude typu
int
. V Column Properties mu nastavíme Default Value or Bind na
1
. To je predvolená hodnota. Klikneme na neho pravým tlačidlom a
z menu zvolíme Relationships ...
V novo otvorenom okne pomocou tlačidla Add pridáme nový vzťah (reláciu).
V položke Tables And Columns Specification klikneme na tlačidlo s troma
bodkami. Tu nastavíme, že sa tabuľka Word
pomocou stĺpca
CategoryId
pripojí na primárny kľúč tabuľky
Category
, ktorým je Id
. Potvrdíme.
Teraz databázy vie, že ak je napr. U slovíčka v stĺpci
CategoryId
hodnota 1
, viaže sa k prvej kategórii.
Všetko uložíme (pravým na záložku a Save). Znovu editujte záznamy v
tabuľke Word a slovíčkam nastavte kategórii:
Číslo je samozrejme primárny kľúč do tabuľky Category
,
1
teda zodpovedá záznamu "Počítače"
,
2
"Zvířata"
a 3
"Ostatní"
.
V budúcej lekcii, Prístupy pre prácu s relačnými databázami v .NET , si predstavíme prístupy, pomocou ktorých s databázou môžeme z C# .NET komunikovať.