porozumění databázových stavebních bloků v SQL Serveru
každý dům má kuchyň, alespoň jednu koupelnu a ložnici, přední dveře, vodovodní systém a další věci. Tyto věci mohou být uspořádány různými způsoby a v různých číslech k výrobě různých domů. Takže je to s databázemi. Existují určité věci, které mají všechny databáze společné. V tomto příspěvku představím stavební bloky, které tvoří všechny databáze, a ukážu, jak jsou sestaveny. Budu také diskutovat o třech pravidlech, která je třeba dodržovat při používání stavebních bloků.
materiál uvedený v tomto příspěvku by měl mít hodnotu pro každého, kdo má jakoukoli interakci s databázemi, ale je na velmi elementární úrovni. Pro komplexnější diskusi o návrhu databáze, viz můj článek, intuitivní přístup k návrhu databáze.
Mini-Světy.
než se dostaneme ke stavebním kamenům, věnujme se chvíli pochopení pojmu mini-svět, protože nám pomůže porozumět stavebním kamenům.
databáze je model mini-světa. Mini-svět může být lékařská kancelář, maloobchod, knihovna nebo mnoho dalších věcí. Když chceme informace o mini-světě, obracíme se na databázi, která jej modeluje.
řekněme, že jdete k lékaři na schůzku. Když řeknete recepční, že máte schůzku, recepční se pokusí najít vaši schůzku v modelu (databáze). Pokud byl model udržován v aktuálním stavu se svým mini-světem, měl by být schopen potvrdit, že máte schůzku. Podobně, pokud chce podnik vědět, který z jejich velkoobjemových zákazníků za posledních 6 měsíců neobjednal objednávky, může se obrátit na model svého mini-světa, pokud byl s tímto mini-světem udržován aktuální.
mini-svět může být celý podnik, nebo může být součástí podnikání, jako je pobočka banky nebo obchodní oddělení.
první věc, kterou návrhář databáze dělá, je pochopit mini-svět, protože úkolem designéra je navrhnout model tohoto mini-světa. A pochopit mini-svět, návrhář začíná tím, že identifikuje stavební bloky, které půjdou do sestavení databáze.
Stavební Bloky
1. Entity
entita je něco, co existuje v mini-světě a má vlastnosti, které nás zajímají. Například v mini-světě pro zápis do školy existují studentské entity, entity kurzu, entity instruktorů a další. Studenti mají jména, adresy, GPA a další charakteristiky, které nás zajímají. Kurzy mají tituly, kredity, poplatky, a další. A instruktoři mají jména, adresy, kvalifikace a další. Entity jsou jedinečné. Každý student je jedinečná entita; je tu John a Mary a tak dále. Každý kurz je jedinečnou entitou a každý instruktor je jedinečnou entitou.
entity nemusí být fyzické věci. I když se nemůžete dotknout, vidět, nebo cítit zápis, přesto existuje v mini-světě zápisu do školy a má vlastnosti, které nás zajímají, jako je datum zápisu, student, který se zapsal, kurz, do kterého se student zapsal, a výsledná známka. Prodeje jsou další příklady subjektů, které nemají fyzickou složku, ale které mají vlastnosti, které nás zajímají (datum prodeje ,zákazník,prodejce, celková objednávka, způsob odeslání, platební podmínky atd.).
2. Typy entit
entity stejného typu patří k jednomu typu entity. Typ entity je soubor entit tohoto typu. Typ studentského subjektu je soubor všech studentů. Entita typu kurzu je sada všech kurzů a entita typu instruktora je sada všech instruktorů.
typy entit jsou nejdůležitějším pojmem v tomto příspěvku. Stávají se tabulkami v databázi.
3. Atributy
atributy entity jsou vlastnosti této entity, které nás zajímají. Jak již bylo zmíněno, atributy studentů zahrnují jméno, adresu, GPA a další. Kurzy mají jména, kredity, oddělení, do kterých patří, a další. A tak dále s jinými typy entit.
sestavení stavebních bloků
jak jsou tyto stavební bloky zastoupeny v databázi? Každý typ entity je reprezentován tabulkou v databázi. V této tabulce jsou jednotlivé řádky jedinečné entity a sloupce jsou atributy. Zde je příklad tabulky, která představuje typ entity kreditní karty:
pravidla stavebních bloků
při práci se stavebními bloky je důležité dodržovat určitá pravidla, která nejen usnadňují práci s databázovými objekty, ale také zabraňují datovým anomáliím (datové anomálie jsou nad rámec tohoto příspěvku, ale jsou podrobně popsány v mém článku, intuitivní přístup k návrhu databáze).
Pravidlo 1: každá tabulka by měla představovat jeden a pouze jeden typ entity.
databáze mini-světa zápisu do školy, výše, potřebuje následující tabulky: Student, kurz, instruktor, zápis a další, jeden pro každý typ entity identifikovaný v tomto mini-světě. Databáze lékařské ordinace mini-world potřebuje lékařský stůl, pacientský stůl, jmenovací stůl, tabulku léků a další. Jedna tabulka pro každou entitu typu.
existuje výjimka z tohoto pravidla. Připravte se, přichází mozek twister: Pokud dva typy entit sdílejí stejné atributy a entita v jednom z typů entit je také entitou v druhém typu entity (jedna entita je členem obou typů entit), pak mohou být tyto dva typy entit reprezentovány v jedné tabulce. Zde je to opět: entita typu profesora a entita typu poradce mohou být zastoupeny v jedné tabulce, protože poradci jsou také profesoři a mají stejné atributy (jméno profesora/poradce, kvalifikace profesora/poradce a další). A znovu: Typ entity složky a typ entity podsložky mohou být reprezentovány v jedné tabulce, protože všechny entity podsložky jsou také entity složky a sdílejí stejné atributy (název složky, velikost složky,počet položek ve složce, Nadřazená složka a další). Ještě jeden: typy entit zaměstnanců a manažerů mohou být zastoupeny ve stejné tabulce, protože zaměstnanci a manažerské entity mají stejné atributy a manažerské entity jsou také zaměstnanecké entity. Tato výjimka z pravidla je podrobněji zkoumána v jiném blogu: SQL Server-dotaz Self Join.
mimochodem, všimněte si, že toto pravidlo je důvodem, proč je správný způsob pojmenování tabulky v jednotném čísle. Tabulky představují jeden typ entity.
Pravidlo 2: všechny sloupce musí být atomové.
Přemýšleli jste někdy, proč databázové tabulky mohou mít sloupce pro město a stát, ale pouze jeden sloupec pro adresu? Možná jste se divili, proč není sloupec pro číslo adresy, další pro typ adresy ulice (Blvd., Avenue, atd.), další pro číslo bytu, a tak dále. Proč jsou tyto sloupce obvykle seskupeny do jednoho sloupce adresy? Odpověď na všechny tyto otázky spočívá v pochopení atomicity.
když říkáme, že sloupec je atomový, máme na mysli, že jej nelze dále rozdělit a stále si zachovat význam. Vytvoříme sloupec a nazveme jej Megaadresa, která obsahuje adresu ulice spolu s městem a státem.
ale protože děláme vyhledávání, třídění a další operace na částech tohoto sloupce (vyhledávání podle města, Třídit podle státu, vytisknout jen část adresy ulice, a tak dále), můžeme říci, že členění tohoto sloupce mají svůj vlastní význam (StreetAddress, město a stát). Takže MegaAddress není atomová. Lepší tabulka by byla:
a co sloupec StreetAddress? Měli bychom to dále rozdělit na StreetNumber, StreetName a StreetType? Dokud neuděláme nic významného s jeho členěním—pokud nebudeme Třídit podle čísel ulic, hledat všechny silnice nebo cesty atd. – pak je sloupec atomový tak, jak je. Ale pokud uděláme tyto věci, pak sloupec není atomový a pak, ano, měli bychom jej rozdělit tak, jak je popsáno.
Pravidlo 3: sloupce nelze vícehodnotit.
některé typy entit obsahují vícehodnotové atributy nebo atribut, který může mít více než jednu hodnotu. V tabulce kurzů může být atribut nazvaný předpoklady. Protože entita kurzu může mít více než jeden předpoklad, atribut předpokladů je vícehodnotový atribut. Když vytvoříme tabulku pro typ předmětu, nebudeme schopni reprezentovat atribut předpokladů jako sloupec v tabulce. Abychom správně reprezentovali vícehodnotový atribut, musíme pro něj vytvořit další tabulku a propojit ji s původní tabulkou pomocí vztahu one-to-many (vztahy jsou podrobně diskutovány v kurzech, které vyučuji na Interface Tachnical Training SQL100: Úvod do Transact-SQL a SQL250: Transact-SQL pro vývojáře a v mém článku intuitivní přístup k návrhu databáze). Mezi další příklady vícehodnotových atributů patří závislé osoby zaměstnance, kvalifikace lékaře atd.
Pravidlo 3 říká, že pro danou entitu (řádek v tabulce) může být v každém sloupci pouze jedna hodnota.
shrnutí
tento příspěvek představil koncept mini-světa jako aspekty obchodního nebo jiného prostředí, které databáze modeluje. Příspěvek také popsal databázovou tabulku jako reprezentující jeden typ entity, ve kterém řádky obsahují jednotlivé entity stejného typu a sloupce představují atributy těchto entit. Byla zavedena tři pravidla týkající se tabulek. Pravidlo 1 uvádí, že tabulka by měla představovat jeden typ entity. Výjimkou z pravidla je, když dva typy entit sdílejí stejné atributy a entity v jednom typu entity jsou členy druhého typu entity. V takovém případě mohou být oba typy entit reprezentovány ve stejné tabulce. Pravidlo 2 uvádí, že všechny sloupce tabulky musí být atomové, což znamená, že sloupec nelze rozdělit a stále si zachovat význam v mini-světě. Konečně Pravidlo 3 uvádí, že sloupce v tabulce nelze vícehodnotit, což znamená, že pro danou entitu (řádek v tabulce) může být na sloupec pouze jedna hodnota.
užijte si to!
Peter Avila
SQL Server Instructor-Interface Technical Training
Phoenix, AZ
atributy, databáze, typy entit, mini-svět, podsložka, hodnoty
Leave a Reply