Ing. Bc. Robert Haken [MVP ASP.NET/IIS, MCT] software architect, HAVIT, Návrh schématu DB

Podobné dokumenty
Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Úvod do databázových systémů

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Primární klíč (Primary Key - PK) Je právě jedna množina atributů patřící jednomu z kandidátů primárního klíče.

Databázové systémy Cvičení 5.2

Databáze I. 4. přednáška. Helena Palovská

Databáze I. Přednáška 4

Relace x vztah (relationship)

A5M33IZS Informační a znalostní systémy. Relační databázová technologie

Obsah přednášky. Databázové systémy. Normalizace relací. Normalizace relací. Normalizace relací. Normalizace relací

Robert Haken. HAVIT, s.r.o. knowledge-base.havit.cz

Konceptuální modelování a SQL

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

Úvod do databázových systémů

5. POČÍTAČOVÉ CVIČENÍ

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

RELAČNÍ DATABÁZOVÉ SYSTÉMY

DUM 12 téma: Příkazy pro tvorbu databáze

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

Databázové systémy trocha teorie

Diagnostika webových aplikací v Azure

Code Contracts. Robert Haken [MVP ASP.NET, MCT] Software architect, Owner at HAVIT, s.r.o. knowledge-base.havit.cz

Relační databázová technologie

DATABÁZOVÉ SYSTÉMY. Metodický list č. 1

Relační databázový model. Vladimíra Zádová, KIN, EF, TUL- DBS

Programování v jazyku C# II. 5.kapitola

DJ2 rekurze v SQL. slajdy k přednášce NDBI001. Jaroslav Pokorný

Tvorba informačních systémů

Cvičení z programování v C++ ZS 2016/2017 Přemysl Čech

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Konceptuální modelování. Pavel Tyl

Relační databázová technologie

Design databáze. RNDr. Ondřej Zýka

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

4IT218 Databáze. 4IT218 Databáze

Informační systémy ve zdravotnictví. 6. cvičení

Použití databází na Webu

Databázové systémy a SQL

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Databázové patterny. RNDr. Ondřej Zýka

Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hoksza, Ph.D.

Design databáze. RNDr. Ondřej Zýka

Zabezpečení proti SQL injection

Databázové systémy. Cvičení 6: SQL

MBI - technologická realizace modelu

12. blok Pokročilé konstrukce SQL dotazů - část II

Tvorba informačních systémů

Jalapeño: pekelně ostrá Java persistence v Caché. Daniel Kutáč Senior Sales Engineer

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

Robert Haken [MVP ASP.NET/IIS, MCT] software architect, HAVIT, Optimalizace výkonu webových aplikací

Semestrální práce z DAS2 a WWW

Obsah přednášky. Databázové systémy RDBMS. Fáze návrhu RDBMS. Coddových 12 pravidel. Coddových 12 pravidel

Databázové systémy. Dátové modelovanie - relačný model

Základy databází. O autorech 17 PRVNÍ ČÁST. KAPITOLA 1 Začínáme 19

KMA/PDB. Karel Janečka. Tvorba materiálů byla podpořena z prostředků projektu FRVŠ č. F0584/2011/F1d

IDS optimalizátor. Ing. Jan Musil, IBM ČR Community of Practice for

Rezervační systém Tvorba WWW stránek

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

Jazyk PL/SQL Úvod, blok

Fyzické uložení dat a indexy

Oracle XML DB. Tomáš Nykodým

Konceptuální datové modely používané při analýze

Databázové systémy úvod

Analýza a modelování dat 3. přednáška. Helena Palovská

8.2 Používání a tvorba databází

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Databázové systémy I

Zabezpečení proti SQL injection

OBJECT DEFINITION LANGUAGE. Jonáš Klimeš NDBI001 Dotazovací Jazyky I 2013

Inovace tohoto kurzu byla spolufinancována z Evropského sociálního fondu a státního rozpočtu České republiky.

B Organizace databáze na fyzické úrovni u serveru Oracle

Access Tabulka letní semestr 2013

Kapitola 7: Návrh relačních databází. Nástrahy relačního návrhu. Příklad. Rozklad (dekompozice)

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

4. Základy relačních databází, logická úroveň návrhu

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

Úvod do principů objektově orientovaného programování

Úvod do databázových systémů

37. Indexování a optimalizace dotazů v relačních databázích, datové struktury, jejich výhody a nevýhody

Nasazení Object Relation Mapping nástrojů nad legacy datovým modelem

Hierarchický databázový model

Třída. Atributy. Operace

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

KOMPONENTY APLIKACE TreeINFO. Petr Štos ECM Business Consultant

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů.

Úvod do programovacích jazyků (Java)

Měřící systém se vzdáleným přístupem. Databáze

Archivace relačních databází

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

11 Diagram tříd, asociace, dědičnost, abstraktní třídy

Databáze. Logický model DB. David Hoksza

Datové modelování II

Co bude výsledkem mého SELECTu? RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

DPKOM_06 Dědičnost entit a zpětná volání posluchači

Transkript:

Ing. Bc. Robert Haken [MVP ASP.NET/IIS, MCT] software architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Návrh schématu DB

Proč je schéma DB důležité? klíčový prvek designu aplikace zásadní vliv na výkon rychlost objem dat konzistence dat Server Tuning Indexy, Locking Query Optimization DB Schema Design Aplikace

Ukázka cílové podoby DB schématu DEMO

Hlavní zásady tvorby schématu Konvence a standardy Přirozená míra normalizace Respektujte scénáře použití Standardní návrhové vzory Vlastní návrhové vzory Maximálně self-documented + přehlednost

Konvence Naming Conventions název tabulky jednotným číslem výstižná podstatná a přídavná jména PascalCase bez národních znaků, speciálních znaků, mezer, atp. nepřekrývat s keywords(order, Text, Group,...) zkratky lowercase(např. SazbaDph, HtmlText) jednotná terminologie

Naming conventions II. suffixid pro všechny PK i FK sloupce (ZakaznikID) PK vždy v podobě NazevTabulkyID FK kopírujeme PK, pokud není potřeba rozlišit InvoiceItem.InvoiceID Invoice.DeliveryAddressID, Employee.BossID Varianta konvencí trigram prefixy tabulka Invoice, sloupce invid, invnumber,...

Naming Conventions, Trigramy DEMO

Standardy Výchozí schéma, PK každá tabulka jednoduchý umělý PK typu int s výjimkou čistě vazebních tabulek M:N (PK = 2xFK) PK primární klíč umělý jednoduchý typu int, clustered auto-increment(pokud není tabulka read-only) výhody umělý = nemění se velmi rychlé SQL operace (JOIN atp.) monotónní růst = vhodný pro clusteredindex zajišťuje unikátnost klíčů pro nové záznamy nevýhoda - nejednoznačný v distribuovaných systémech => GUID

Přirozená míra normalizace přiměřená atomicitaatributů Employee.Name Employee.FirstName, Employee.Surname vždy záleží na nejzazším dohledném scénáři (pesimistická varianta) NE vícehodnotové sloupce (...nebo někdy ano?) PracovnikID Jmeno TelefonniCisla 156 Josef Novák 608 123 456, 602 123 456 157 Marta Nová 601 123 456

Přirozená míra normalizace II. NIKDY vícenásobné sloupce PracovnikID Jmeno Telefon1 Telefon2 156 Josef Novák 608 123 456 602 123 456 157 Marta Nová 601 123 456 NULL správná závislost na klíči (PK) je rozhodující PracovnikID Jmeno Oddeleni ManagerOddeleniID 156 Josef Novák IT 158 (Karel Malý) 157 Marta Nová IT 158 (Karel Malý) 180 Helena Malá HR 180 (Jan Bílý) směřujte pozornost na sebemenší redundance každá duplicita dat je velmi podezřelá!!!

Denormalizace denormalizacepouze, pokud požadovaného výkonu v klíčových scénářích nejsme schopni dosáhnout normalizovaným schématem!!! vždy něco ztrácíme, abychom jinde získali obtížnější údržba (nejlépe automatizace) potenciální nekonzistence

Standardy -další doporučení procenta ukládat jako koeficient 100% => 1.00 stabilizace významu a používání pojmů např. marže / přirážka / rabat / sleva / koeficient /... User / Login/ LoginAccount/ Uzivatel/... používejte Database Diagrams Komentujte/Dokumentujte! xpattributems_description např. DB>doc generátor do HTML/XML/WikiPlex

Standardní schéma, Dokumentace, Denormalizace DEMO

Schema Killers hodnoty v názvech sloupců PracovnikID Jmeno Prodej2010 Prodej2011 156 Josef Novák 123 456,38 348 260,30 157 Marta Nová 2 650 456,42 123 128,40 chybné datové typy int EmployeeID varchar(20) DatumNastupu bigint BossID 156 20.3.2011 157 A 157 17.6.1989 NULL N char(1) Aktivni

Schema Killers II. nedefinovaný PK tabulky chybějící reference mezi tabulkami (FK) vazba na jiný sloupec, než PK DirectoryEntryID EntryCode ParentEntryCode 123 {123-XYZ-...-ABC-123} {124-XYZ-...-ABC-124} 234 {124-XYZ-...-ABC-124} NULL

Bad Practices magicnumbers = chybějící enum-tabulky PROTI: chybí validace hodnot, konzistence podřizování schématu lidské čitelnosti dat přirozené PK/FK (Username, číslo faktury,...) PROTI: nejsou stabilní PROTI: nejsou výkonné pro typické operace (JOIN atp.) PROTI: nejsou obv. monotónně rostoucí (CLUSTERED) chybějící číselníky, hodnoty přímo místo FK

BadPracticesII. hromadné číselníky (popř. složený PK) CiselnikItemID CiselnikID Value 1 1 aktivní 2 1 neaktivní 3 2 hnědá 4 2 červená 5 2 modrá PROTI: obtížná rozšiřitelnost o další vlastnosti PROTI: komplikované FK odkazy, validace konzistence komplikovanější indexování (složené/filtrované) PRO: unifikované použití/editace z aplikace

Schema Killers, Bad Practices DEMO

Patterns Dynamické datové schéma Atributová databáze uložení všech objektů v cca 5 tabulkách PRO: snadná dynamická změna schématu za provozu PRO: relativně slušný výkon PRO: snadná implementace dědičnosti / interface PROTI: komplikované validace FK PROTI: komplikovanější dotazování, výkonové ztráty => atributová rozšíření statického schématu

Patterns Dědičnost objektů Fowler: Patterns of EAA Class Table Inheritance tabulka pro každou třídu i abstraktní předky pouze atributy definované třídou (nutný JOIN) Single Table Inheritance jedna tabulka pro všechny možné potomky Concrete Table Inheritance tabulka pro každou neabstraktní třídu sloupce všech předků + třídy

Design Patterns DEMO

HAVIT hledá ASP.NET vývojáře! http://knowledge-base.havit.cz/oznameni/hledame-noveho-kolegu-na-pozici-asp- NET-Developer-CSharp-2011-05.aspx Otázky?!