reklama

Začínáme s ASP.NET 2.0 – 5. díl: základy databáze SQL Express

V dnešním pátém díle změníme téma – přejdeme od vývoje webových aplikací k práci s databází, neboť většina webů s daty v nějaké formě pracuje. V příštím díle se k ASP.NET opět vrátíme – v kapitole o práci s daty v ASP.NET skloubíme znalosti webového vývoje s databázovými znalostmi.

Budeme používat databází SQL Server Express 2005 (verzi Beta 2, budeme používat zkrácený název SQL Express). Nejprve si povíme něco o dostupných nástrojích pro vývoj a správu databáze a poté se naučíme základním úkonům.

Dostupné nástroje

K SQL Serveru existuje celá řada nástrojů a je vhodné vybrat si ten správný. Můžeme je rozdělit na nástroje s grafickým rozhraním a nástroje příkazové řádky.

Grafické nástroje

Prvním nástrojem, s kterým se seznámíme je SQL Configuration Manager. Jedná se o nástroj k základní správě a konfiguraci (viz obrázek). Najdete ho ve Start menu pod Microsoft SQL Server 2005/Configuration Tools. Pomocí tohoto nástroje lze zastavovat a spouštět jednotlivé nainstalované instance SQL Serveru a měnit účet, pod kterým služba běží. V nástroji lze rovněž určovat používané síťové protokoly a jejich nastavení. Můžete si sami ověřit, že žádný z protokolů není z důvodu bezpečnosti po instalaci povolen. K SQL Serveru se tak můžeme připojit pouze lokálně – ze stejného počítače, kde běží. Pro zastavování/spouštění služby a změnu jejího účtu můžeme rovněž použít standardní nástroj Windows jménem Services/Služby v nabídce Administrative Tools/Nástroje pro správu.

Klepněte pro větší obrázek

K vyšším edicím SQL Serveru 2005 (Workgroup, Standard, Enterprise) je dodáván nástroj SQL Server Management Studio. Tento nástroj je vůbec nejlepším nástrojem pro správu SQL Serveru – můžeme s ním administrovat a měnit všechny jeho aspekty a nastavení, generovat skripty, plánovat provádění úloh a další (viz obrázek). Pokud vlastníte licenci k vyšší verzi SQL Serveru anebo třeba máte nainstalovanou zkušební verzi tohoto produktu, můžete tento nástroj používat i pro správu Express verze (pozor, pokud chcete SQL Express spravovat vzdáleně, musíte na něm nejprve povolit nějaký síťový protokol).

Klepněte pro větší obrázek

K předběžným Beta verzím SQL Express se dal stáhnout přímo z webu Microsoftu nástroj SQL Express Manager, který umožňoval pokládat dotazy do databáze a několik dalších věcí. Podle nedávno zveřejněných informací byl vývoj tohoto nástroje zcela zastaven. Místo něj by se měla na jaře 2006 objevit druhá edice SQL Express obsahující nový nástroj pro správu, který bude odlehčenou edicí nástroje SQL Server Management Studio z komerčních verzí.

Pro většinu základních vývojářských úkonů nad databází vystačíme s prostředím, které nám nabízí Visual Web Developer (VWD), kde je k dispozici okno Database Explorer, které lze vyvolat z nabídky View. V něm je možné vytvářet tabulky, pohledy, uložené procedury a funkce. Nejzajímavější funkcí je možnost editace databáze prostřednictvím databázového diagramu. Vzhledem k tomu, že se práci s databází ve VWD budeme věnovat celý zbytek dnešního dílu, pokročíme nyní dále.

Existují též nástroje pro dálkovou administraci SQL serveru pomocí webového rozhraní. Tyto nástroje se liší schopnostmi i cenou (mnohé jsou zcela zdarma), v našem seriálu se jim nebudeme věnovat. Namátkou lze uvést:

Nástroje příkazové řádky

Pro pokročilejší uživatele jsou k dispozici nástroje příkazové řádky. Nejčastěji používaným nástrojem je sqlcmd.exe, který najdete ve složce C:\Program Files\Microsoft SQL Server\MSSQL.?\MSSQL\Binn Pomocí tohoto nástroje můžete vykonávat libovolné příkazy ve skriptovacím jazyce T-SQL (viz obrázek s výpisem databází). Dokumentaci k jazyku T-SQL můžete stáhnout z webu Microsoftu pod jménem SQL Server 2005 Books Online.

Klepněte pro větší obrázek

Základní úkony

Nyní si projdeme nejzákladnější úlohy, které budeme pro práci s databázemi potřebovat.

Založení databáze a diagramu

Databázi lze založit dvojím způsobem. V prvním případě vytváříme pojmenovanou databázi, která je trvale připojena k serveru a může být sdílena více aplikacemi. Tento způsob se používá u komerčních verzí databází (kde ani jiný způsob není). Sdílenou pojmenovanou databázi vytvoříme ve VWD v okně Data Explorer zobrazením kontextové nabídky na složce Data Connection a volbou Create New SQL Server Database...

Pro nás ale bude daleko zajímavější druhý způsob – vytváření databáze pro jednu aplikaci, přičemž tato databáze nemá sdílené jméno – je to zkrátka soubor uložený v adresáři aplikace. Pojďme na to - ve VWD v okně Solution Explorer zobrazíme kontextovou nabídku na složce s webovým projektem, zvolíme Add New Item..., vybereme typ SQL Database, jako jméno zadáme KatalogZbozi.mdf a potvrdíme, stejně jako odsouhlasíme upozornění, že databáze bude raději umístěna ve speciální složce App_Data.

Po malé chvilce uvidíte nově vytvořenou databázi v okně Solution Explorer, pod ní můžete vidět soubor KatalogZbozi_log.ldf, což je tzv. transakční log pro zajištění neporušenosti dat v případě havárie (viz obrázek). Pokud se vám samo neotevřelo okno Database Explorer, můžete ho zobrazit dvojím kliknutím na databázi (mdf souboru, viz obrázek).

Klepněte pro větší obrázek Klepněte pro větší obrázek

Nejčastější úlohy lze s výhodou provádět v zobrazení databázového diagramu, který ukazuje strukturu tabulek a jejich vzájemné vazby. Vytvoříme si proto nový databázový diagram pro provádění dalších prací. Zobrazíme si kontextovou nabídku na uzlu Database Diagrams a zobrazíme si nabídku Add New Diagram. Pokud jsme dotázáni na vytvoření databázových objektů, můžeme bez obav potvrdit jejich vytvoření. Dialog Add Table zavřeme pomocí Close, čímž máme k dispozici panenský databázový diagram.

Založení tabulky

Do diagramu můžeme přidat novou tabulku. Budeme vytvářet fiktivní katalog zboží, který bude obsahovat dvě tabulky – tabulku kategorií zboží a tabulku produktů, přičemž každý produkt bude zařazen právě v jedné kategorii. Začneme tabulkou kategorií, která bude obsahovat:

  • Číslo kategorie – jednoznačný identifikátor (ID), který se nemění
  • Jméno kategorie (např. nápoje)
  • Sazbu DPH pro danou kategorii
  • E-mail na kontaktní osobu pro danou kategorii

Tabulku vytvoříme zobrazením nabídky kdekoliv na prázdné ploše diagramu a volbou New Table... Jako název tabulky zvolíme Kategorie. Zobrazí se nám obdélník symbolizující danou tabulku, ale zatím bez řádků zastupujících jednotlivá datová pole. Jednotlivé řádky vyplníme podle následujícího obrázku:

Klepněte pro větší obrázek

V prvním sloupci jsou uvedena jména datových polí (raději se vyvarujeme diakritiky). V druhém sloupci je uveden typ. Nejčastěji budeme používat následující typy:

  • řetězec – typ nvarchar, kde v závorce je uveden maximální počet znaků. Nepoužívejte typ varchar, má sice menší nároky na uložení dat, ale mívá potíže s diakritikou.
  • celé číslo – typ int
  • číslo s pevnou desetinou tečkou – numeric, v závorce je celkový počet číslic a počet desetinných míst; vhodné pro uložení finančních a jiných přesných čísel
  • číslo s plovoucí desetinnou tečkou – float, vhodné pro inženýrské a vědecké výpočty
  • pravda/nepravda – typ bit, jež může nabývat hodnoty 1 nebo 0
  • datum a čas – typ datetime

Úplný výčet možných typů polí a jejich přesnější popis najdete v SQL Server 2005 Books Online. Třetí sloupeček pak vyjadřuje, zda musí být datové pole vyplněno (Allow Nulls není zaškrtnuté) anebo zda může být prázdné.

Pro většinu tabulek je doporučené a vhodné, aby měl každý řádek zvolený jednoznačný identifikátor nebo identifikátory, takzvaný primární klíč. V našem případě zvolíme primární klíč snadno. Zobrazíme si kontextovou nabídku na definici pole IDKategorie a z nabídky vybereme Set Primary Key. Změna se projeví symbolem klíče na příslušném řádku jak je to vidět na předchozím obrázku.

Nyní můžeme změny navržené v diagramu uložit, tedy promítnout do databáze. K tomu slouží možnost Save. Po jeho stisknutí budeme dotázáni na název diagramu, kam můžeme zadat celkem libovolný text, např. Diagram Katalogu.

Založení druhé tabulky a vytvoření relace

Velmi podobným způsobem vytvoříme i druhou tabulku pro jednotlivé produkty. Zobrazte si nabídku kdekoliv na prázdné ploše diagramu a zvolte New Table... jako název tabulky zvolíme Produkty. V tabulce založte celkem 7 datových polí různých typů podle následujícího obrázku:

Klepněte pro větší obrázek

Jako primární klíč zvolte sloupec IDProdukt – stejným způsobem jako při vytváření klíče v první tabulce. Nyní si ukážeme ještě několik pokročilejších věcí. Pokud vybereme některé datové pole, v okně Properties se nám zobrazí řada dalších vlastností, které můžeme nastavit. Pokud se vám okno nezobrazuje, zvolte z nabídky View/Properties. Například můžeme nastavit automatické přiřazování nového čísla výrobku – u sloupečku IDProduct nastavíme vlastnost Identity/(Is Identity) na Yes (proveďte). Rovněž můžeme nastavit výchozí hodnotu některého pole, která se použije, není-li pole vyplněno a řadu dalších věcí.

Nyní vytvoříme vztah či relaci mezi tabulkami. Tato relace nám zaručuje, že v tabulce Produkty bude ve sloupečku IDKategorie vždy správná hodnota – tj. číslo existující kategorie v tabulce Kategorie. Jakékoliv změny dat, které by vedly k narušení tohoto stavu nebudou připuštěny – tato vlastnost se odborně nazývá referenční integrita. Chytneme myší šedý obdélníček před sloupcem IDKategorie v tabulce Produkty a přetáhneme jej na sloupeček IDKategorie v tabulce Kategorie. Po dvojím stisknutí OK bychom měli vidět vztah vidět vyznačený obdobně jako na předchozím obrázku.

Nyní změny uložíme pomocí Save a potvrzením Yes, čímž se nová tabulka i vztah mezi tabulkami vytvoří v databázi.

Indexovaní

Pokud budeme v tabulce ukládat větší množství dat, je vhodné si vytvořit takzvané indexy, které urychlují vyhledávání nebo třídění dat. Indexy fungují podobně jako papírové kartotéky u lékaře. Pokud přijdete a řeknete své příjmení, vaše lékařská dokumentace je snadno nalezena v setříděné řadě – takto funguje index. Pokud byste svoje příjmení neznali, ale znali rodné číslo, musela by sestra procházet postupně všechny lékařské karty a hledat shodu, což by bylo mnohem pomalejší – takto funguje hledání bez indexu. Na rozdíl od lékařské dokumentace ale v tabulce můžete mít i více než jeden index.

Spíše z cvičných důvodů vytvoříme index nad tabulkou Produkty, který bude setříděn podle názvu produktu (sloupec Nazev). V diagramu klikneme kdekoliv na tabulce Produkty pravým tlačítkem myši a zvolíme Indexes/Keys..., kde již uvidíme index PK_Produkty, což je index založený automaticky při vytvoření primárního klíče. Stiskneme Add pro nový index, jako sloupce (Columns) vybereme sloupec Nazev a jako jméno zadáme například IX_Produkty_Nazev podle následujícího obrázku:

Klepněte pro větší obrázek

Zavřeme pomocí Close, změny promítneme do databáze volbou Save a potvrdíme změny v tabulkách (Yes). Je ovšem nutné říci, že vytvořit indexy optimálně vyžaduje určitou praxi, náš případ je příliš zjednodušený. Příliš málo indexů může znamenat pomalé vykonávání dotazů, příliš mnoho indexů naopak zdržuje při vkládání nebo úpravě dat. Pro větší databázi si na vytváření indexů raději přizveme odborníka.

Vkládání a úpravy dat

Vkládání a úpravy dat v tabulkách jsou poměrně jednoduché. V okně Database Explorer klikneme pravým tlačítkem myši na vybranou tabulku a vybereme možnost Show Table Data. Zřejmým způsobem zadáme tři kategorie zboží podle následujícího obrázku:

Klepněte pro větší obrázek

Můžeme si vyzkoušet, že databáze nám nepovolí neplatné údaje – pokud některý z údajů vynecháme anebo třeba do sloupce SazbaDPH vepíšeme údaj, který není číslem, řádek se nám nepodaří do databáze uložit. Tabulku nyní zavřeme a stejným způsobem vepíšeme několik údajů do tabulky Produkty. Doplníme několik produktů do každé kategorie označené 1 až 3 podle vlastní fantazie, podobně jako na následujícím obrázku:

Klepněte pro větší obrázek

Všimněme si, že do sloupečku IDProdukt nemusíme zadávat žádnou hodnotu, neboť tato se doplňuje automaticky. Podobně do sloupečku Baleni není nutné zadávat hodnotu, neboť při vytváření tabulky bylo pro tento sloupeček povoleno Allows Nulls. A naopak, pokud ve sloupečku IDKategorie zadáme hodnotu např. 8, nepodaří se řádek uložit, neboť kategorie s tímto číslem neexistuje.

Vykonání dotazu

Pokud máme v tabulkách vložená data, můžeme ve VWD pokládat též dotazy do dat, abychom zjistili aktuální stav databáze anebo pak dotazy použili v našich aplikacích. Zobrazíme-li si kontextovou nabídku prakticky kdekoliv v okně Database Explorer je jednou z možností New Query – nový dotaz do databáze. V nabídce tabulek vybereme dvojklikem myši obě vytvořené tabulky (Kategorie a Produkty).

Zatržením políček před názvem sloupce se sloupec objeví ve druhé sekci, kde můžeme měnit jeho pojmenování, nastavovat třídění, podmínky pro filtrování výběru apod. Ve třetí sekci se objevuje výběrový dotaz v jazyce T-SQL (pouze pro pokročilejší) a ve čtvrté sekci si můžeme nechat zobrazit výsledky dotazu volbou Execute SQL (tlačítko s červeným vykřičníkem).

Klepněte pro větší obrázek

Na předchozím obrázku jsou například zobrazeny produkty s cenou vyšší než 20 setříděné podle názvu produktu a s doplněným jménem kategorie přejmenované na Jmeno kategorie. Pokročilejší uživatelé mohou vytvářet dotazy se seskupováním a agregací dat, dotazy na mazání, aktualizaci či vkládání dat apod.

Zálohovaní

Posledním úkonem, o kterém se zmíníme, je zálohování dat. Zálohování pojmenovaných databází se provádí bez jakéhokoliv přerušení jejich provozu T-SQL příkazem BACKUP DATABASE, například z nástroje sqlcmd.exe anebo nepřímo prostřednictvím nástroje SQL Management Studio. My ale používáme nepojmenovanou databázi, která je pouhým souborem (přesněji dvěma soubory) v adresáři aplikace App_Data – v našem případě se jedná o soubory KatalogZbozi.mdf a KatalogZbozi_log.ldf. Zálohování tedy provedeme prostým zkopírováním těchto souborů na bezpečné místo.

Jediným úskalím je možnost, že některá aplikace databázi používá a má tudíž otevřené její soubory – za této situace není možné soubory kopírovat. Chceme-li databázi kopírovat, musíme uzavřít všechny aplikace, které databázi používají, případně je donutit, aby přestali databázi používat. V praxi to může znamenat:

  • máme-li databázi otevřenou ve VWD v okně Database Explorer, použít příkaz Detach Database, případně zavřít všechna okna s databází pracující, případně ukončit práci s VWD
  • dočasně zastavit webový server – ASP.NET Development Server anebo příslušný web IIS
  • dočasně zastavit službu SQL Server Express – např. použitím standardního nástroje Windows jménem Services/Služby v nabídce Administrative Tools/Nástroje pro správu – toto je nejradikálnější a zcela spolehlivý krok.

Závěrem

Dnes jsme se naučili základům práce s databází SQL Express. Odbočka od webového vývoje nebyla samoúčelná. Vytvořenou databázi KatalogZbozi budeme používat v příštích dvou dílech, zabývajících se prací s daty na ASP.NET stránkách. Komu dnešní text nestačil a chtěl by se dozvědět něco více, může se podívat na článek SQL Server 2005 Express Edition Overview.

Opakování je matka moudrosti – pokud něco nebude fungovat jak by mělo, zkuste využít možnosti podpory zmíněné ve druhé části, zejména diskusní skupinu microsoft.public.cs.developer.

Připraveno ve spolupráci s firmou Microsoft

Témata článku: Software, Programování, Express, Index, Save, Tools, Books

11 komentářů

Nejnovější komentáře

  • Rudidlo 8. 1. 2008 13:44:39
    Zkuste stisknout klávesu F1
  • OGGY 30. 1. 2006 15:45:54
    Když se ve VisualStudiu pokusím soubor s databází otevřít, neotevře se...
  • Rudidlo, Rudidlo 1. 11. 2005 9:43:52
    Po malé chvilce uvidíte nově vytvořenou databázi v okně Solution...
reklama
Určitě si přečtěte

UPC překopli páteřní kabel. V Brně i druhý den nejede internet ani kabelovka

UPC překopli páteřní kabel. V Brně i druhý den nejede internet ani kabelovka

** V Brně byl velký výpadek služeb UPC ** Důvodem je překopnutý páteřní kabel ** V některých lokalitách služby stále nefungují

5.  12.  2016 | Jakub Čížek | 102

17 expertek Microsoftu předpovědělo rok 2027. Splní se alespoň něco?

17 expertek Microsoftu předpovědělo rok 2027. Splní se alespoň něco?

** Zmizí klasické vyhledávače ** Budeme programovat buňky ** Kvantové počítače překonají šifry

6.  12.  2016 | Jakub Čížek | 36

11 tipů na dobrý stolní počítač: od základu po herní mašiny

11 tipů na dobrý stolní počítač: od základu po herní mašiny

** Postavte si stolní počítač! Máme pro vás 11 vzorových sestav s rozpisem komponent ** Většina tipů cílí na hráče, věnujeme se ale i základnímu PC a počítačům na střih videa ** Nadělte si nový počítač třeba pod stromeček

5.  12.  2016 | Adam Kahánek | 74

Nejlepší notebooky nad 20 tisíc: poradíme, které teď chcete

Nejlepší notebooky nad 20 tisíc: poradíme, které teď chcete

** V notebooku s cenou nad 20 tisíc nesmí chybět kvalitní displej a rychlé úložiště ** Za dalších deset tisíc můžete dostat navíc styl nebo výkonnější komponenty ** Vybírat můžete z různých velikostí i konstrukcí

8.  12.  2016 | Stanislav Janů | 82


reklama