Bc. David Gešvindr MCT | MSP | MCTS | MCITP | MCPD 1. Návrh databáze 2. Tvorba databázových tabulek Návrh databáze se provádí převážně 2 způsoby, které lze výhodně kombinovat: Datový model, ER diagram Normalizace PROJEKTY Uvažujte, že máte zakázku na vytvoření databázové aplikace (příp.modulu většího systému), která bude spravovat informace o projektech, řešených u zadavatele. Dosud zadavatel vedl příslušnou agendu v papírové podobě na třech typech formulářů, které vám dal k dispozici pro datovou analýzu. Všechny tři formuláře mají stejnou hlavičku, která obsahuje tyto údaje: číslo projektu, název projektu, jméno, osobní číslo a název oddělení zodpovědného řešitele. Zodpovědný řešitel je jeden z řešitelů, jeden řešitel může řešit i zodpovídat za více projektů. Každý formulář obsahuje kromě hlavičky tabulku, která má tvar: Formulář „Základní údaje o projektu“- udává zdroje financování projektu. Ve sloupci 'Finanční zdroj', je udedena jednoznačná zkratka zdroje, např.MŠMT (musí existovat číselník možných zdrojů). Poslední řádek udává celkovou částku, která představuje množství peněz, které má projekt k dispozici (tj. rozpočet). Formulář „Řešitelé projektu“ představuje seznam řešitelů. 'Doba řešení' udává dobu, kterou odpracoval daný řešitel na daném projektu a 'Mzdové náklady' mzdu, kterou za práci na projektu dostal. Formulář „Investice projektu“ Investicí se rozumí nakoupený produkt, jehož cena přesahuje určitou výši. Ve sloupci převzal je podpis některého z řešitelů. Poznámka: Zápis „.............“ v řádku tabulek značí, že v tabulce může být několik takových řádků. Nakreslete ER diagram, který bude reprezentovat výše uvedené požadavky. Poř.číslo Finanční zdroj Částka ........... .......... ............ Rozpočet součet ve sloupci Poř.číslo Os.číslo Jméno Oddělení Doba řešení Mzdové náklady ........... .......... ............ ............ ............ ............ Poř.číslo Faktura č. Datum Částka Převzal ........... .......... ............ ............ ............ Uvažujte, že máte zakázku na vytvoření databázové aplikace, která bude spravovat informace o projektech, řešených u zadavatele. Dosud zadavatel vedl příslušnou agendu v papírové podobě na třech typech formulářů. Všechny formuláře mají stejnou hlavičku, která obsahuje tyto údaje: číslo projektu, název projektu, jméno, osobní číslo a název oddělení zodpovědného řešitele. Zodpovědný řešitel je jeden z řešitelů, jeden řešitel může řešit i zodpovídat za více projektů. Udává zdroje financování projektu Ve sloupci 'Finanční zdroj' je jednoznačná zkratka zdroje (musí existovat číselník možných zdrojů) Poslední řádek udává celkovou částku, kterou má projekt k dispozici (tj. rozpočet) Poř. číslo Finanční zdroj Částka ........... .......... ............ Rozpočet Součet ve sloupci Představuje seznam řešitelů 'Doba řešení' udává dobu, kterou odpracoval daný řešitel na daném projektu 'Mzdové náklady' udávají mzdu, kterou řešitel za práci na projektu dostal Poř. číslo Os. číslo Jméno Oddělení Doba řešení Mzdové náklady ........... .......... ............ ............ ............ ............ Investicí se rozumí nakoupený produkt, jehož cena přesahuje určitou výši Ve sloupci „Převzal“ je podpis některého z řešitelů Poř. číslo Faktura č. Datum Částka Převzal ........... .......... ............ ............ ............ Projekt Vychází z hlavičky formulářů Finanční zdroj Dle prvního formuláře „ Musí existovat číselník možných zdrojů“ Řešitel Je zařazen do oddělení Vztah Řešitele k projektu Vztah Investice k projektu a řešiteli, který ji schválil Celočíselné datové typy: Bigint – signed 64 bit number Int – signed 32 bit number Smallint – singed 16 bit number Tinyint – unsigned 8 bit number Bit – 0/1 Desetinná čísla Float, Real – aproximovaná desetinná čísla Numeric – přesnost dána počtem cifer celkem a za desetinnou čárkou, totožný s decimal Money - uložení včetně měny Datum a čas Date DateTime DateTimeOffset Time Textové řetězce Char, Varchar respektují nastavení znakové sady Nchar, Nvarchar unicode řetězce Varchar(MAX), Nvarchar(MAX) délka 2^31-1 bajtů (2GB) Large-Value Data Types Ostatní Xml Geography Geometry Uniqueidentifier Timestamp Sql_Variant Binary Varbinary Computed Column Hodnota je spočítána na základě výrazu Hodnota jiného sloupce Konstanta Funkce PERSISTED Spočítané hodnoty jsou fyzicky uloženy Tabulka může mít max. 1 primární klíč Může být složený S primárním klíčem se vytvoří automaticky i clustered index Jde změnit na non-clustered index Omezení jedinečných hodnot v dalších sloupcích pomocí UNIQUE constraint Lze nastavit na víc sloupců současně Výraz, kterým se vypočte výchozí hodnota sloupce pro nově vkládaný řádek Možnost použít funkce GETDATE() NEWID() NEWSEQUENTIALID() http://msdn.microsoft.com/en- us/library/ms189909.aspx Generování rostoucí číselné řady pro PK Vlastnost sloupce IS IDENTITY Povolena nad 1 sloupcem v tabulce Od verze 2012 podpora SEQUENCE Vytvořit novou SEQUENCE Jako výchozí hodnotu sloupce zadat: NEXT VALUE FOR {jméno SEQUENCE} Omezující výrazy, které musí být splněny Jsou v rozsahu jednoho řádku dané bulky Nesplnění zabrání vložení nebo aktualizaci dat Náhrada povolených hodnot ve sloupci „Vytvoření vazby mezi tabulkami“ Kontroluje, že vložená hodnota do sloupce existuje v jiné tabulce Sloupec, na který se odkazujeme musí být PK nebo UQ Možno definovat chování při změně záznamu v tabulce, na kterou se odkazujeme