NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.

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)\MSSQLLo­calDB -> 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:

Databáze ve VB.NET - ADO.NET

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.

Databáze ve VB.NET - ADO.NET

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):

Databáze ve VB.NET - ADO.NET

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:

Databáze ve VB.NET - ADO.NET

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:

Databáze ve VB.NET - ADO.NET

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:

Databáze ve VB.NET - ADO.NET

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í:

Databáze ve VB.NET - ADO.NET

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:

Databáze ve VB.NET - ADO.NET

Testovací data

Opět si vložíme testovací data:

Databáze ve VB.NET - ADO.NET

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:

Databáze ve VB.NET - ADO.NET

Tento cizí klíč (vazba) se nám vygeneroval i v T-SQL kódu:

Databáze ve VB.NET - ADO.NET

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:

Databáze ve VB.NET - ADO.NET

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:

Databáze ve VB.NET - ADO.NET

Čí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

 

Předchozí článek
Vytvoření lokální databáze ve Visual Studio ve VB.NET
Všechny články v sekci
Databáze ve VB.NET - ADO.NET
Přeskočit článek
(nedoporučujeme)
Přístupy pro práci s relačními databázemi ve VB.NET
Článek pro vás napsal Stanislav Zita
Avatar
Uživatelské hodnocení:
3 hlasů
Aktivity