Dit artikel is in de eerste plaats geschreven voor beginners. Toch behandelt het enkele interessante en vaak vergeten database-ontwerpconcepten die even aantrekkelijk zijn voor SQL-databaseprofessionals.
Het huidige deel richt zich op de database-ontwerpconcepten en hun toewijzing aan SQL Database-tabellen, -kolommen en -relaties. Als u de achtergronden begrijpt van databases en tools die we gaan gebruiken, kunt u vol vertrouwen uw eerste SQL-database ontwerpen.
Vereisten
Voordat we verder gaan, moet u ervoor zorgen dat u de volgende zaken heeft:
- SQL Server 2016/2017/2019 Express/Developer-editie is op uw computer geïnstalleerd
- SSMS (SQL Server Management Studio) is geïnstalleerd
Je moet ook een basiskennis hebben van databases en de bovenstaande tools.
Het is geen probleem als je niet over de laatste versie van SQL Server en SSMS beschikt. Het wordt echter ten zeerste aanbevolen om de nieuwere versies te hebben, zo niet de meest recente. U kunt de benodigde versies verkrijgen via de onderstaande bronnen:
- Download SQL Server 2017 Developer-editie.
- Download SQL Server 2019 (of download de nieuwste versie van SQL Server Express/Developer).
- Of download een gratis gespecialiseerde editie van Developer of Express SQL Server.
- SSMS (SQL Server Management Studio) downloaden
Merk op dat deze links allemaal goed werken op het moment van schrijven van dit artikel. Als Microsoft besluit ze te vervangen, download dan de nieuwere versie die dan beschikbaar is.
Over SQL Database Design
Om te beginnen met het ontwerpen van uw SQL-database met SQL Server Management Studio (SSMS), moet u een ontwerpplan in uw hoofd hebben.
Het is niet eenvoudig zonder de kernconcepten van het ontwerpen van databases te kennen. Zodra u deze concepten en hun implementatie echter onder de knie hebt, begint u natuurlijk de ontwerpprincipes te volgen. Het is gebruikelijk bij bijna alle databaseontwikkelaars.
Laten we eerst enkele kernconcepten voor databaseontwerp doornemen. Het is niet gemakkelijk om ze allemaal in één artikel te behandelen, maar we hebben iets nodig om mee te beginnen.
We begrijpen een typische database in termen van de volgende dingen:
- Entiteiten
- Kenmerken
- Relaties
Wat is een entiteit?
Een entiteit is alles wat het bedrijf of een persoon in een database wil opslaan. Bijvoorbeeld:
- Klant.
- Bestellen.
- Product.
We kunnen zeggen dat een Klant is een entiteit als het bedrijf het wil opslaan in een databasestructuur voor transactie-, analyse- en rapportagedoeleinden. Evenzo kan een Bestelling geplaatst door de Klant is ook een entiteit als het bedrijf die informatie wil zien. Daarom moet deze informatie deel uitmaken van de database.
Echter, een Bestelling heeft niet veel zin zonder een Product . Een aan de Klant aangeboden Product is ook een entiteit.
Hoe wordt de entiteit toegewezen aan de database?
Vanuit het databaseperspectief kan een entiteit worden toegewezen aan een tabel. Dus als een bedrijf de entiteiten Klant, Bestelling en Product nodig heeft, kan de databaseontwikkelaar deze als drie tabellen toewijzen.
Wat is een kenmerk?
Een attribuut is een beschrijving van een entiteit. Bijvoorbeeld:
- Klantnaam
- Ordertype
- Productnaam
Als de klant een entiteit is, de naam van de klant (Klantnaam ) is een attribuut. Dit kenmerk beschrijft onze entiteit (Klant ). Evenzo, OrderType is een attribuut voor de Order entiteit, en ProductName is een kenmerk van het Product entiteit.
Hoe wordt het kenmerk toegewezen aan de database?
Een kenmerk, zoals Klantnaam, beschrijft de Klant tabel en kan worden toegewezen aan een kolom in die tabel.
Een entiteit met meerdere attributen
Het is prima voor een entiteit om meerdere attributen te hebben. Daarom kunnen we veel kolommen (attributen) in een tabel (entiteit) hebben.
Entiteitsrelaties
Een entiteit kan via relaties aan een andere entiteit worden gerelateerd. Een tabel kan gerelateerd zijn aan een andere tabel. Er zijn veel soorten entiteiten of tabellarische relaties:
Klant-bestelrelatie (één-op-veel)
Een Klant (entiteit/tabel) kan om de volgende redenen aan een Order (entiteit/tabel) worden gerelateerd:
- Een klant kan één bestelling plaatsen.
- Een klant kan veel bestellingen plaatsen.
Het tegenovergestelde is ook waar:
- Veel bestellingen kunnen door één klant worden geplaatst.
- Eén bestelling kan door één klant worden geplaatst.
Dit is een voorbeeld van een een-op-veel-relatie :één klant kan veel bestellingen plaatsen, en veel bestellingen kunnen door één klant worden geplaatst.
Product-orderrelatie (één-op-veel)
Een Product (entiteit/tabel) kan worden gerelateerd aan een Order (entiteit/tabel) in het volgende zegt:
- Een product kan aan één bestelling worden toegewezen.
- Een product kan aan veel bestellingen worden toegewezen.
Op dezelfde manier:
- Veel bestellingen kunnen aan een product worden toegewezen.
- Eén bestelling kan één product bevatten.
Er is een een-op-veel-relatie tussen Product en Bestel .
Klant-productrelatie (veel-op-veel)
Nu wordt de relatie tussen klant en product als volgt uitgelegd:
- Een klant kan één product kopen.
- Een klant kan meer dan één product kopen.
- Een product kan door een klant worden gekocht.
- Een product kan door meer dan één klant worden gekocht.
Veel producten kunnen door veel klanten worden gekocht, wat betekent dat de Klant en Product relatie is veel-op-veel .
Bekijk de afbeelding hieronder:
Student-instructeur ontwerpscenario
Laten we een ander databaseontwerpscenario bekijken. Je implementeert het met SSMS (SQL Server Management Studio) in het andere deel van dit artikel.
Zakelijke vereisten
Stel dat u een database moet ontwerpen waarin de volgende informatie is opgeslagen:
- Leerling(en).
- Instructeur(en).
- Leerlingen aan wie een instructeur is toegewezen.
- Docenten die aan de studenten zijn toegewezen.
Voorlopige analyse
Als je goed kijkt, zul je iets heel interessants ontdekken over de bovenstaande vereisten. "De studenten die een instructeur hebben toegewezen" en "De instructeurs die aan de studenten zijn toegewezen" zijn dezelfde vereiste.
Het kan vaak voorkomen dat twee verschillend ogende vereisten hetzelfde blijken te zijn in de context van databaseontwerp.
Entiteiten identificeren
De volgende entiteiten kunnen direct uit de eisen worden gehaald:
- Leerling
- Instructeur
Er is echter nog een entiteit die ons informatie verschaft over de instructeurs die aan de studenten zijn toegewezen.
Laten we ons het eerste voorbeeld herinneren waarin we een besteltabel gebruikten - veel klanten kunnen veel bestellingen kopen in de klant-bestelrelatie. Het is vergelijkbaar met onze student-instructeur relatie in tabelvorm – veel instructeurs kunnen aan veel studenten worden toegewezen.
Kenmerken identificeren
We kunnen nuttige attributen kiezen voor de geïdentificeerde entiteiten, volgens dat klantorderscenario:
- Leerling:student-ID, naam.
- Instructeur:Instructeur-ID, naam.
- Student-instructeur:student-instructeur-ID, student-ID, instructeur-ID.
Identiteitsrelaties:
Identificeer de entiteitsrelaties:
- Student -> Student-instructeur (één-op-veel).
- Instructeur-> Student-instructeur (één-op-veel).
- Leerling -> Instructeur (veel-op-veel).
Onthoud dat we altijd een middentafel gebruiken om de veel-op-veel-relatie op te lossen. Daarom hebben we de entiteit Student-Instructeur in het plan opgenomen.
Entiteiten en attributen toewijzen aan tabellen en kolommen
Nu kunnen we de entiteiten toewijzen aan tabellen. We gaan dus de volgende drie tabellen maken:
- Leerling.
- Instructeur.
- Student-instructeur.
Evenzo zullen de attributen van die entiteiten, wanneer ze worden toegewezen aan de kolommen, als volgt zijn:
- Leerling:Student-ID, naam.
- Instructeur:Instructeur-ID, naam.
- Student-instructeur:StudentInstructorId, StudentId, InstructorId.
Let op de onderstaande afbeelding:
Gefeliciteerd! Je hebt met succes de concepten voor databaseontwerp geleerd. We zijn bekend met entiteiten, attributen en relaties en de stappen om deze toe te wijzen aan tabellen en kolommen in de database.
De volgende artikelen leiden u door de stappen voor het ontwerpen van databases met SSMS (SQL Server Management Studio).
Dingen om te doen
Nu u de basisprincipes van het ontwerpen van databases begrijpt, kunt u de volgende dingen proberen om uw vaardigheden verder te verbeteren:
- Probeer een andere entiteit toe te voegen met de naam Leverancier met de attributen SupplierId en SupplierName. Controleer of u de volgende relaties correct kunt identificeren:
- Leverancier-Order;
- Leverancier-klant;
- Leverancier-product.
- Ontwerp een database en identificeer entiteiten, attributen en relaties voor een bibliotheek. Hint:Boeken worden uitgegeven aan de leden en leden lenen boeken uit de bibliotheek. Lid, Boek, Uitgegeven kunnen entiteiten zijn.
- Identificeer het type van de volgende tabellarische relaties voor de entiteiten zoals hierboven vermeld:
- Uitgegeven door lid;
- Boek uitgegeven;
- Ledenboek;
- Boek-lid.
Lees ook
Leer databaseontwerp met SQL Server Management Studio (SSMS) – deel 2