Det er anden del af serien, der fokuserer på brugen af SQL Server Management Studio. Du vil lære databasedesignets kernekoncepter og problemstillinger og få en gennemgang til at designe en simpel SQL-database med SSMS (SQL Server Management Studio).
Forudsætninger
- SQL Server 2016/2017/2019 Express/Developer edition er installeret.
- Den seneste version af SSMS (SQL Server Management Studio) er installeret.
- Læserne har et grundlæggende kendskab til SQL-databaserne og ovenstående værktøjer.
- De grundlæggende databasedesignkoncepter er klare.
- Læserne er bekendt med elev-instruktør-designscenariet diskuteret i del 1.
Se venligst Lær databasedesign med SQL Server Management Studio SSMS del 1 for mere information om ovenstående krav.
Design af elev-instruktør-database med SSMS
Vi begynder at skabe vores simple SQL-database ved hjælp af SSMS. Det er dog bedre at have en opsummering af den planlagte database, før vi begynder at designe den.
Recap over elev-instruktørdatabase
Vi talte om en simpel database bestående af følgende tre tabeller:
- Elev . Denne tabel indeholder poster, der tilhører elever.
- Instruktør . Denne tabel gemmer oplysninger om alle instruktører.
- Student-instruktør . Denne fortæller os, hvilken instruktør der er tildelt hvilken elev.
Vigtigt: mere end én elev kan tildeles en instruktør, og mere end én instruktør kan tildeles en elev (for forskellige fag).
Med andre ord kan mange elever have mange instruktører.
Udskiftning af elev-instruktør-tabellen med kursustabellen
Lad os forfine elev-instruktør-databasen en smule – vi omdøber elev-instruktør-tabellen med kursustabellen.
På denne måde er det nemmere at forstå, at hvert kursus kan have flere elever, og hver instruktør kan have flere elever til det samme kursus.
Vi planlægger følgende kolonner for disse tabeller:
- Student:StudentId, Name.
- Instruktør:InstructorId, Name.
- Kursus:CouseId, Name, StudentId, InstructorId.
Start SSMS (SQL Server Management Studio)
Indtast SSMS i Windows-søgefeltet og klik på den på listen over resultater for at starte softwaren:
Bemærk, at du vil se den version, du har installeret. I vores tilfælde er det SSMS (SQL Server Management Studio) version 18.0.
Opret forbindelse til SQL Server Database Engine
I Object Explorer vindue, skal du klikke på Forbind , og vælg derefter Databasemotor :
Vælg servernavnet (navnet på den SQL-server, du har installeret på din maskine). Opret forbindelse til databasemotoren baseret på dine standardindstillinger. I vores tilfælde bruger vi Windows-godkendelsestilstanden:
Opret en ny StudentInstructor SQL-database
Når du er tilsluttet, skal du højreklikke på Databaser node i Object Explorer , og klik på Ny database... som vist nedenfor:
Indtast navnet på databasen StudentInstructor . Klik på OK, forlader standardindstillingerne, medmindre du skal ændre dem:
Databasen skulle være oprettet nu.
Udvid de samme databaser node for at finde den:
Opret et elevbord
Nu skal vi lave tabellerne i StudentIstructor-databasen.
Udvid StudentIstructor databasenode:klik på den, og højreklik derefter på Tabeller.
Gå til Ny -> Tabel... som følger:
Vi vil tilføje kolonner til tabellen én efter én. Vi starter med StudentId .
Indtast StudentId kolonnenavn og vælg int Datatype, da den vil være numerisk (kun med tal):
Indstil primær nøgle
StudentId kolonne vil også være den primære nøgle i tabellen. Det vil hjælpe os med at identificere en elev (række/rekord) unikt.
Højreklik på pilen, der peger på StudentId kolonne, og klik på Indstil primær nøgle :
Tilføj identitet til den primære nøgle (StudentId)
En identitet indstillet til en kolonne øger automatisk dens værdi, når nye poster indsættes. Det er ligesom et serienummer, der stiger for hver ny rekord.
Hvis vi ikke opsætter den primære nøglekolonne som en identitetskolonne, tilføjer vi manuelt ID'et for hver ny post. Dette, det er en god idé at sætte det op.
For eksempel vil den første post, der er indsat i Student-tabellen, have et automatisk id 1, og den næste vil være StudentId 2 osv. Det er, hvis vi opsætter identiteten.
Rul ned i Kolonneegenskaber vinduet, når StudentId primær nøglekolonne er valgt, indtil du finderidentitetsspecifikationen ejendom.
Indstil identitetsspecifikationen som følger (startende med er identitet) :
Identitetsspecifikation :Ja
(er Identitet) :Ja
Identitetsstigning :1
Identitetsfrø :1
Tilføj en navnekolonne til elevtabellen
Tilføj derefter endnu en kolonne – Navn til bordet. Brug varchar(45) Datatype, og fjern markeringen i Tillad nul som følger:
Husk at VARCHAR(45) repræsenterer tegndata (type) op til 45 tegn, der skal gemmes i kolonnen (Navn). Når vi fjerner markeringen af Tillad nuller , skal vi angive denne værdi til kolonnen for at gemme en elev optage.
Gem tabellen (elev)
Det vigtigste trin er at gemme dine ændringer. I vores tilfælde gemmer vi den nyoprettede tabel ved blot at klikke på Gem diskikon på værktøjslinjen eller ved tastaturgenvejen CTRL+S .
Indtast tabellens navn – Elev – når du gemmer det:
Se elevtabellen (Object Explorer)
Når tabellen er gemt, skal du udvide tabellerne node for StudentIstructor database for at finde den nyoprettede tabel:
Opret en instruktørtabel med InstrutorId og navnekolonner
På samme måde skal du højreklikke på Tabeller node igen. Denne gang skal du oprette en ny tabel kaldet Instruktør .
Tilføj derefter en ny kolonne kaldet InstructorId af int datatype og indstil den som den primære nøgle som vist nedenfor:
Det næste trin er at tilføje Identitet til kolonnen InstructorId :
Herefter skal du tilføje navnet kolonne i VARCHAR(45) datatype til instruktøren tabel, og tillad ikke nuller for denne kolonne, ligesom for navnet kolonne i Student tabel:
Gem og se en instruktørtabel (Object Explorer)
Gem tabellen ved at trykke på CTRL+S genvej eller klik på ikonet Gem. Navngiv tabellen som instruktør .
Højreklik på Tabeller node under StudentIstructor database og klik på Opdater for at se begge tabeller nu:
Opret kursustabellen med CourseId Primær nøglekolonne med identitet
Vi er nødt til at tilføje endnu en tabel til databasen – Kurset tabel, som vil indeholde id'er fra både elev- og instruktørtabellerne. Der vil være et mange-til-mange forhold (mange studerende kan tildeles mange instruktører, i henhold til vores krav).
Opret en ny tabel Kursus med CourseId primær nøgle:
Tilføj Identity til kolonnen på samme måde, som vi gjorde for StudentId og InstructorId kolonner.
Tilføj kolonnerne Navn, StudentId og CourseId
Tilføj derefter et navn kolonne af typen VARCHAR(45) til Kurset tabel efterfulgt af tilføjelse af StudentId og CourseId kolonner af int datatype:
Glem ikke at fjerne markeringen af Allow Nulls for at sikre, at en post ikke bliver gemt uden at indtaste disse kolonneværdier.
På denne måde sikrer vi, at a Kursus skal have en elev og en instruktør før det kan gemmes i databasen. Oven i det, eleven og instruktør skal eksistere i deres originale tabeller.
Gem og hurtig tjek
Gem tabellen, og navnet er som Kursus:
Til sidst Opdater alle tabellerne, og se den nyoprettede tabel sammen med andre i Object Explorer :
Tilføj alle tabeller til databasediagrammet
Nu skal vi skabe et forhold mellem tabellerne, så både Student og instruktør tabeller blev forbundet til Kurset tabel gennem deres primære nøgler.
For eksempel StudentId i eleven tabel er forbundet med StudentId i Kurset bord. Tilsvarende InstructorId i instruktøren tabellen er forbundet med InstructorId i Kurset tabel.
Vi kan opnå det med databasediagrammet.
Gå til StudentInstruktør database i Object Explorer og højreklik på Databasediagrammer -> Nyt databasediagram :
Klik på Ja :
Brug CTRL for at vælge alle eksisterende tabeller og tilføje dem til databasediagrammet :
Se databasediagrammet og omarranger tabellerne (klik på tabellen og flyt den) for at lave Kurset bordstativ i midten, mellem eleven og instruktør tabeller:
Link elevtabellen med kursustabellen
Vi skal skabe et forhold mellem Student og Kursus ved at forbinde StudentId i Student tabel med StudentId kolonne i Kursus tabel.
Træk StudentId-tasten og slip den i kolonnen StudentId i Kursustabellen . Klik på OK :
Det vil skabe et fremmed nøgleforhold mellem Kursus- og Elev-tabellerne – det sikrer, at kun de elever, der er gemt i Elev-tabellen, bliver gemt i Kursus-tabellen:
Link instruktørtabellen med kursustabellen
På samme måde skal du linke instruktøren tabel med Kurset tabel, så InstructorId primær nøglekolonne i instruktøren tabellen ville blive videregivet til InstructorId i Kurset tabel.
På denne måde sikrer vi, at InstructorId primærnøgle eksisterer som en fremmednøgle i Kurset bord. Det betyder, at vi kan gemme enhver instruktørs række fra Kurset kun tabel, hvis denne instruktør findes i den oprindelige instruktør bord. På denne måde opretholder vi databasens konsistens og integritet i henhold til standardpraksis.
Gem databasediagrammet
Gem til sidst databasediagrammet ved at klikke på Gem ikon på værktøjslinjen:
Tilføj data til elevtabellen
Det er tid til at tilføje nogle data til de oprettede tabeller, startende fra elevtabellen. Vi tilføjer tre elevers optegnelser til tabellen.
Højreklik på Student tabel og klik på Rediger top 200 rækker (bare rolig, du skal ikke redigere 200 rækker):
Indtast følgende navne, og klik på Enter for at gemme disse poster:
Luk derefter vinduet – klik på krydset øverst til højre eller tryk CTRL+F4.
Bemærk venligst, at StudentIds 1,2 og 3 automatisk tildeles posterne. Vi bruger dem senere på Kurset tabel.
Tilføj data til instruktørtabellen
Nu skal vi tilføje to instruktører ved navn Martin og Asad . Føj derfor følgende data til instruktøren tabel:
På samme måde skal du huske på disse id'er 1 og 2. Du kan lukke dette vindue indtil videre.
Tilføj data til kursustabellen
Vi har elever på den ene side og instruktører på den anden side. Men vi kan kun tilføje de elever, der allerede er på Elev-bordet, og det samme gælder for instruktører.
Lad os tilmelde alle tre elever til Databaserne kursus og tildel en instruktør til dette kursus også:
Se kursusoversigtens indhold
For at se dataene skal du højreklikke på Kursus tabel -> Vælg Top 1000 rækker:
Tillykke! Du har med succes lært at designe en simpel database med SSMS (SQL Server Management Studio). Sideløbende har vi trænet i at indsætte nye registreringer og se de indsatte data.
Ting at gøre
Nu hvor du kan designe en database med SSMS, kan du prøve følgende ting for at forbedre dine færdigheder yderligere:
- Prøv at se elev- og undervisertabellernes indhold.
- Prøv at tilføje et andet kursus kaldet Business Intelligence og tilmeld alle de tre elever til det kursus, sammen med tildeling af instruktøren Asad (InstructorId:2)
- Husk, at du kan forbedre selve databasedesignet fra artiklen ved at gøre følgende:
- Omdøbning af Kurset tabel som Klasse tabel;
- Fjernelse af navnet kolonne fra Klasse tabel;
- Erstatning af CourseId med ClassId kolonne;
- Oprettelse af et separat kursus tabel med CourseId og Name kolonnerne, ligesom for Elev- og Instruktørtabellerne;
- Tilføjelse af et nyt CourseId kolonnen til klassetabellen og linker CourseId af Kurset Tabel med CourseId kolonne i Klasse tabel ligesom elev og instruktør.