Lekce 3 - Vytvoření tabulky v databázi ve Visual Studio ve VB.NET
V minulé lekci, Vytvoření lokální databáze ve Visual Studio ve VB.NET, jsme si připravili databázi.
V dnešním Databáze - ADO.NET tutoriálu, v jazyce VB.NET, se naučíme tvořit tabulky v lokální databázi Visual Studia.
Budeme pokračovat v projektu z lekce Vytvoření lokální databáze ve Visual Studio ve VB.NET
Vytvoření tabulky Word
Stromovou strukturu lokálního serveru, na kterém je databáze, si můžeme
zobrazit buďto přes okno Server Explorer, anebo přes okno SQL
Server Object Explorer. My si otevřeme SQL Server Object
Explorer, jelikož je přímo určený pro práci s SQL databází.
Rozbalíme položku SQL Server -> (localdb)\MSSQLLocalDB
-> Databases. V této složce vidíme naši databázi
SlovnicekDB
. Rozbalíme ji a stejně tak její položku
Tables, kde máme zatím jen systémové tabulky.
Víme, že data se v relačních databázích ukládají do tabulek. Do naší databáze budeme chtít ukládat slovíčka. Nejprve musíme vytvořit novou tabulku, kde definujeme sloupce, tedy vlastnosti, jaké slovíčko má. Na položku Tables klikneme pravým tlačítkem a zvolíme možnost Add New Table:
Visual Studio otevře designer tabulky. Tento designer má okno rozdělené na dvě části. V horní polovině máme sloupce naší tabulky s jejich datovými typy a dalšími důležitými vlastnostmi. Dole je výsledný T-SQL kód, který se spustí a databázi založí, až to budeme chtít.
Primární klíč
Jak již bylo nastíněno, každá položka v databázi (tedy řádek v
tabulce) by měla mít unikátní identifikátor (sloupec, ve
kterém je pro každý řádek hodnota jedinečná). K tomuto
účelu slouží tzv. primární klíč. Je to obyčejný
sloupec, který se nejčastěji pojmenuje jednoduše Id
a bude typu
int
. Názvy sloupců budeme psát s velkým počátečním
písmenem. Vidíme, že primární klíč s názvem Id
se
nám do tabulky již přidal na místo prvního sloupce.
Ačkoli doteď jsme se snažili psát ukázkové aplikace v češtině, databázi si navrhneme v angličtině. To proto, že ke konci kurzu budeme používat technologie, které skloňují názvy tabulek a umí samozřejmě jen anglicky.
Vložení dalších sloupců
Pod sloupec primárního klíče Id
si přídáme další dva
sloupce. Do Name
druhého sloupce vložíme Czech
a
pod ním, jako třetí sloupec, English
. Jedná se o znění
slovíčka v češtině a v angličtině. Do Data Type
obou
sloupců vložíme typ nvarchar(50)
. Jedná se o řetězec znaků,
kde 50
je maximální počet znaků.
Nepleťme si nvarchar
s
typem nchar
. U nchar
se nejedná o maximální
velikost, ale text je vždy dlouhý 50 znaků. Ještě existují typy
char
a varchar
(bez n
), ty
nepodporují kódování Unicode, a proto je nebudeme
používat. Pro krátký text budeme tedy vždy používat typ
nvarchar
.
Nakonec přidáme poslední sloupec s názvem Difficulty
,
značící obtížnost slovíčka. Bude typu int
.
Definice tabulky je téměř totožná s definicí třídy. Jednoduše
navolíme atributy, co 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, ale
nepředbíhejme
Unikátnost primárního klíče
Id
Vraťme se ještě ke sloupci Id
. Klikneme na něj pravým
tlačítkem a vyberme Properties. V okně Properties nastavme
možnost Is Identity
na True
(je třeba rozbalit
Identity Specification):
Tím jsme určili, že sloupec Id
je vždy
unikátní. Visual 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 a uvolněné Id
již nebude použito.
Je to z toho důvodu, že recyklace starých Id
může způsobit
problémy.
Jestliže sloupec Id
ještě nemáme nastavený jako
primární klíč pro naši novou tabulku, tak klikneme pravým
tlačítkem na název sloupce a zvolíme možnost Set
Primary Key:
Každá tabulka by měla mít primární klíč, jinak nebudeme schopni jednoznačně určit konkrétní záznam a některé technologie (např. Entity Framework) by s tabulkou mohly mít problém pracovat.
Přejmenování tabulky
Nakonec si tabulku přejmenujeme na Word
(jako slovíčko). Toho
docílíme tak, že v T-SQL kódu přepíšeme na konci
prvního řádku aktuální název Table
v hranatých závorkách
na Word
:
Tabulky pojmenováváme opět velkým písmenem a v jednotném čísle, jako by to byla třída.
Po přejmenování klikneme na tlačítko Update. V okně, které se nám otevře, klikneme na Update Database pro uložení změn.
Testovací data
Tabulku Word
máme tímto založenou. Vytvořme si ještě
nějaká testovací data, aby nebyla prázdná. Na tabulku klikneme pravým
tlačítkem a zvolíme View Data:
Nyní jen vložíme několik slovíček. Id
se vyplňuje samo,
stačí tedy zadat českou a anglickou variantu a obtížnost. Já jsem si jich
přidal jen několik, vy si jich klidně naklikejte více s různými
obtížnostmi, ať máte co nejvíce dat na zkoušení:
Vytvoření tabulky
Category
Přidejme si ještě druhou tabulku. Díky tomu si budeme moci dále ukázat i pokročilejší dotazy přes více tabulek.
Tabulku pojmenujme Category
, protože tabulka bude reprezentovat
kategorii slovíček. Opět jí dáme sloupec Id
,
kterému nastavíme Identity na True
a poté 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 jako
Category
:
Testovací data
Opět si vložíme testovací data:
Cizí klíč
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 Properties mu
nastavíme Default Value or Binding na 1. To je výchozí hodnota.
Dále v pravém sloupci designeru klikneme pravým tlačítkem na položku
Foreign Keys, zvolíme Add New Foreign Key a pojmenujme ho
třeba FK_Word_Category:
Tento cizí klíč (vazba) se nám vygeneroval i v T-SQL kódu:
V T-SQL kódu nastavíme, že se tabulka Word
pomocí sloupce
CategoryId
připojí na primární klíč tabulky
Category
, kterým je Id
:
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 tlačítkem Update. 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
,
1
tedy odpovídá záznamu Počítače
, 2
Zvířata
a 3
Ostatní
.
V příští lekci, Přístupy pro práci s relačními databázemi ve VB.NET, si uvedeme přístupy pro práci s relační
databází, zejména DataSet
a technologii LINQ to SQL.
Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.
Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkami
Staženo 4x (539.04 kB)
Aplikace je včetně zdrojových kódů v jazyce VB.NET