9. diel - Vytvorenie databázy v MS-SQL Management Studio
V predchádzajúcom cvičení, Riešené úlohy k 7.-8. lekcii Databáza v C# - ADO.NET, sme si precvičili získané skúsenosti z predchádzajúcich lekcií.
Dnes si v lekcii C# .NET vytvoríme databázu, s ktorou budeme v ďalších častiach kurzu komunikovať.
Vytvorenie databázy
Spôsobov, ako vytvoriť databázu, je mnoho. 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 vo Visual Studiu 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á takto:

Vidíme tu bežiace služby, mali by ste vidieť váš SQL Server, ktorý sme
nainštalovali (a aj pri inštalácii pomenovali). Môj má názov
MSSQLSERVER2008. Ak má stav Stopped, zapnite ho. Teraz
sme sa teda presvedčili, že je server na danom stroji prítomný a že
beží.
Teraz spustíme SQL Server Management Studio.
SQL Server Management Studio
Aplikácia je administračným nástrojom, v ktorom 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 (localdb)\MENO_VASHO_SERVERA, u
mňa teda (localdb)\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 servera. 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ša testovacia aplikácia pre prácu s databázou bude jednoduchý
slovníček, databázu pomenujeme DictionaryDB:

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čné databázy sa používajú takmer všade,
nerelačné sú výnimkou). Budeme chcieť ukladať slovíčka do našej
databázy k 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 načrtnuté, každá položka v databáze (teda riadok v
tabuľke) by mala mať unikátny identifikátor (stĺpec, v ktorom je pre
každý riadok hodnota jedinečná). Na tento účel 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 počiatočným písmenom.
Ďalej pridáme ďalšie 2 stĺpce: Slovak a
English. Ide o znenie slovíčka v angličtine a v slovenčine.
Stĺpce budú typu nvarchar(50). Ide o reťazec znakov, kde je 50
maximálny počet znakov. Nepliesť s typom nchar, kde nejde 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, English (anglické znenie) a Slovak
(slovenské znenie). Takto budeme vo výsledku s databázou aj pracovať, ale
nepredbiehajme. Vráťme sa ešte k stĺpcu 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, druhé 2 atď.,
databáza priradí automaticky každému novo vloženému slovíčku o 1
vyššie Id, o unikátnosť sa nám teda stará sama.
Id rastú stále, aj keď nejaké slovíčko vymažeme 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étny záznam a niektoré technológie (napr. LINQ to SQL) by s tabuľkou ani nevedeli pracovať.
Nakoniec zatvoríme kartu s editorom tabuľky a vyberieme, č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ázu máme týmto vytvorenú. Vytvorme si ešte nejaké testovacie dáta, aby neboli prázdne. 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ť anglický a slovenský 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
dopyty cez viacero tabuliek. Ak chcete začať radšej jednoducho, môžete
tento krok preskočiť rovnako ako pár ďalej ukázaných dopytov.
Pridajte si rovnakým spôsobom tabuľku Category, ktorá bude
reprezentovať kategóriu 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. "Computers", "Animals" alebo
"Other"). Tabuľku uložíme ako Category:

Opäť vytvoríme testovacie dáta:

Teraz pridáme slovíčku väzbu na kategóriu, ktorej sa niekedy hovorí
cudzí kľúč alebo relácia. 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ň 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 tromi 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áza vie, že ak je napr. pri slovíčku 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óriu:

Číslo je samozrejme primárny kľúč do tabuľky Category,
1 teda zodpovedá záznamu "Computers", 2
"Animals" a 3 "Other".
V nasledujúcom kvíze, Kvíz - Odpojená aplikácia, Management Studio v C# - ADO.NET , si vyskúšame nadobudnuté skúsenosti z predchádzajúcich lekcií.

David sa informačné technológie naučil na