sql >> Databáze >  >> RDS >> Sqlserver

Koncepce návrhu databáze s SQL Server Management Studio (SSMS) část 1

Tento článek je primárně napsán pro začátečníky. Přesto pokrývá některé zajímavé a často zapomenuté koncepty návrhu databází, které jsou stejně atraktivní pro odborníky na databáze SQL.

Aktuální část se zaměřuje na koncepty návrhu databází a jejich mapování na tabulky, sloupce a vztahy SQL databáze. Pokud rozumíte pozadí databází a nástrojů, které se chystáme použít, s jistotou navrhnete svou první databázi SQL.

Předpoklady

Než budeme pokračovat, ujistěte se, že máte následující věci:

  1. Na vašem počítači je nainstalován SQL Server 2016/2017/2019 Express/Developer Edition
  2. SSMS (SQL Server Management Studio) je nainstalováno

Také musíte mít základní znalosti databází a výše uvedených nástrojů.

Není problém, pokud nemáte nejnovější verze SQL Serveru a SSMS. Důrazně se však doporučuje mít k dispozici novější verze, ne-li ty nejnovější. Potřebné verze můžete získat z níže uvedených zdrojů:

  • Stáhněte si SQL Server 2017 Developer Edition.
  • Stáhněte si SQL Server 2019 (případně získáte nejnovější verzi SQL Server Express/Developer).
  • Nebo si stáhněte bezplatnou specializovanou edici Developer nebo Express SQL Server.
  • Stáhněte si SSMS (SQL Server Management Studio)

Všimněte si, že všechny tyto odkazy v době psaní tohoto článku fungují dobře. Pokud se je Microsoft rozhodne nahradit, stáhněte si novější verzi, která je v té době dostupná.

O návrhu databáze SQL

Chcete-li začít navrhovat svou databázi SQL pomocí SQL Server Management Studio (SSMS), musíte mít v hlavě nějaký plán návrhu.

Bez znalosti základních konceptů návrhu databází to není snadné. Jakmile však získáte tyto koncepty a jejich implementaci, přirozeně začnete dodržovat principy návrhu. Je to běžné u téměř všech vývojářů databází.

Nejprve si projdeme několik základních konceptů návrhu databáze. Není snadné pokrýt je všechny v jednom článku, ale potřebujeme něco, od čeho začít.

Typickou databázi chápeme z hlediska následujících věcí:

  1. Entity
  2. Atributy
  3. Vztahy

Co je to entita?

Entita je cokoli, co by si firma nebo jednotlivec přál uložit do databáze. Například:

  1. Zákazník.
  2. Objednat.
  3. Produkt.

Můžeme říci, že Zákazník je entita, pokud ji chce podnik uložit do databázové struktury pro transakční, analytické a reportovací účely. Podobně Objednávka vložil Zákazník je také entita, pokud podnik chce tyto informace vidět. Tyto informace proto musí být součástí databáze.

Nicméně Objednávka nedává velký smysl bez produktu . Produkt nabízený zákazníkovi je rovněž subjektem.

Jak je entita mapována do databáze?

Z pohledu databáze lze entitu namapovat na tabulku. Pokud tedy podnik potřebuje entity Zákazník, Objednávka a Produkt, vývojář databáze je může zmapovat jako tři tabulky.

Co je to atribut?

Atribut je popis entity. Například:

  1. Jméno zákazníka
  2. Typ objednávky
  3. Název produktu

Pokud je zákazníkem subjekt, jméno zákazníka (CustomerName ) je atribut. Tento atribut popisuje naši entitu (Zákazník ). Podobně OrderType je atributem Objednávky entity a Název produktu je atributem produktu entity.

Jak je atribut mapován do databáze?

Atribut, jako je CustomerName, popisuje Zákazník tabulky a lze je namapovat na sloupec v této tabulce.

Entita s více atributy

Je v pořádku, když má entita více atributů. Proto můžeme mít v tabulce (entitě) mnoho sloupců (atributů).

Vztahy entit

Entita může být spojena s jinou entitou prostřednictvím vztahů. Tabulka může souviset s jinou tabulkou. Existuje mnoho typů entit nebo tabulkových vztahů:

Vztah zákazník-objednávka (jedna k mnoha)

Zákazník (entita/tabulka) může být spojen s objednávkou (entita/tabulka) z následujících důvodů:

  1. Zákazník může zadat jednu objednávku.
  2. Zákazník může zadat mnoho objednávek.

Opak je také pravdou:

  1. Jeden zákazník může zadat mnoho objednávek.
  2. Jednu objednávku může zadat jeden zákazník.

Toto je příklad vztahu jeden k mnoha :jeden zákazník může zadat mnoho objednávek a mnoho objednávek může zadat jeden zákazník.

Vztah mezi produktem a objednávkou (jedna k mnoha)

Produkt (entita/tabulka) může souviset s objednávkou (entita/tabulka) takto:

  1. Produkt lze přiřadit k jedné objednávce.
  2. Produkt lze přiřadit k mnoha objednávkám.

Podobně:

  1. K produktu lze přiřadit mnoho objednávek.
  2. Jedna objednávka může obsahovat jeden produkt.

Mezi produktem existuje vztah jedna k mnoha a Objednat .

Vztah zákazník-produkt (mnoho k mnoha)

Nyní je vztah mezi zákazníkem a produktem vysvětlen následovně:

  1. Zákazník si může koupit jeden produkt.
  2. Zákazník si může koupit více než jeden produkt.
  3. Produkt si může koupit zákazník.
  4. Produkt může zakoupit více než jeden zákazník.

Mnoho produktů může nakupovat mnoho zákazníků, což znamená, že zákazník a Produkt vztah je mnoho-mnoho .

Podívejte se na níže uvedený obrázek:

Scénář návrhu student-učitel

Podívejme se na jiný scénář návrhu databáze. Implementujete jej pomocí SSMS (SQL Server Management Studio) v druhé části tohoto článku.

Obchodní požadavky

Předpokládejme, že potřebujete navrhnout databázi, která uchovává následující informace:

  1. Student(é).
  2. Instruktoři.
  3. Studenti, kterým byl přidělen instruktor.
  4. Instruktoři, kteří jsou studentům přiděleni.

Předběžná analýza

Při podrobném pozorování zjistíte o výše uvedených požadavcích něco docela zajímavého. „Studenti, kteří mají přiděleného instruktora“ a „Instruktoři, kteří byli studentům přiděleni“ jsou stejný požadavek.

Může se často stát, že dva rozdílně vypadající požadavky se v kontextu návrhu databáze ukáží jako stejné.

Identifikujte entity

Z požadavků lze rovnou vyjmout následující entity:

  1. Student
  2. Instruktor

Ještě jedna entita nám však slouží k poskytování informací o instruktorech přidělených studentům.

Připomeňme si první příklad, kdy jsme použili tabulku objednávek – mnoho zákazníků si může koupit mnoho objednávek ve vztahu zákazník–objednávka. Je to podobné jako u našeho studenta-instruktora tabulkový vztah – mnoho instruktorů může být přiděleno mnoha studentům.

Identifikujte atributy

Můžeme vybrat užitečné atributy pro identifikované entity podle scénáře zákaznické objednávky:

  1. Student:ID studenta, jméno.
  2. Instruktor:ID instruktora, jméno.
  3. Student-Instructor:ID studenta-instruktora, ID studenta, ID instruktora.

Vztahy s identitou:

Identifikujte vztahy entit:

  1. Student -> Student-Instruktor (jeden k mnoha).
  2. Instruktor-> Student-Instruktor (jeden k mnoha).
  3. Student -> Instruktor (many-to-many).

Pamatujte, že k vyřešení vztahu mnoho k mnoha vždy používáme střední tabulku. Proto jsme do plánu začlenili entitu Student-Instructor.

Mapování entit a atributů do tabulek a sloupců

Nyní můžeme namapovat entity do tabulek. Vytvoříme tedy následující tři tabulky:

  1. Student.
  2. Instruktor.
  3. Student-Instruktor.

Podobně budou atributy těchto entit při mapování na sloupce následující:

  1. Student:StudentId, Name.
  2. Instruktor:InstructorId, Name.
  3. Student-Instructor:StudentInstructorId, StudentId, InstructorId.

Všimněte si následujícího obrázku:

Gratulujeme! Úspěšně jste se naučili koncepty návrhu databáze. Jsme obeznámeni s entitami, atributy a vztahy a s kroky, jak je namapovat na tabulky a sloupce v databázi.

Následující články vás provedou kroky návrhu databáze pomocí SSMS (SQL Server Management Studio).

Co dělat

Nyní, když rozumíte základům návrhu databáze, vyzkoušejte následující věci, abyste své dovednosti dále zlepšili:

  1. Zkuste přidat další subjekt s názvem Dodavatel s atributy SupplierId a SupplierName. Zkontrolujte, zda dokážete správně identifikovat následující vztahy:
    1. Objednávka dodavatele;
    2. Dodavatel-zákazník;
    3. Dodavatel-produkt.
  2. Navrhněte databázi spolu s identifikací entit, atributů a vztahů pro knihovnu. Tip:Knihy jsou vydávány členům a členové si půjčují knihy z knihovny. Člen, kniha, vydáno mohou být entity.
  3. Určete typ následujících tabulkových vztahů pro entity, jak je uvedeno výše:
    1. Vydáno členem;
    2. Vydaná kniha;
    3. Členská kniha;
    4. Člen knihy.

Přečtěte si také

Naučte se návrh databáze pomocí SQL Server Management Studio (SSMS) – část 2


  1. Rozdělení nových ovladačů ODBC a OLEDB pro Microsoft SQL Server

  2. Flask by example – Nastavení Postgres, SQLAlchemy a Alembic

  3. listview zobrazí data z databáze v Androidu

  4. mysql vyberte z n posledních řádků