Това е втората част от поредицата, фокусирана върху използването на SQL Server Management Studio. Ще научите основните концепции и проблеми при проектирането на база данни и ще получите инструкции за проектиране на проста SQL база данни със SSMS (SQL Server Management Studio).
Предварителни условия
- Изданието SQL Server 2016/2017/2019 Express/Developer е инсталирано.
- Последната версия на SSMS (SQL Server Management Studio) е инсталирана.
- Читателите имат основни познания за SQL бази данни и горните инструменти.
- Основните концепции за проектиране на база данни са ясни.
- Читателите са запознати със сценария на проектиране студент-инструктор, обсъден в част 1.
Моля, вижте Научете дизайн на база данни със SQL Server Management Studio SSMS, част 1 за повече информация относно горните изисквания.
Проектиране на база данни студент-инструктор с SSMS
Започваме да създаваме нашата проста SQL база данни с помощта на SSMS. Въпреки това е по-добре да имаме обобщение на планираната база данни, преди да започнем да я проектираме.
Резюме на базата данни студент-инструктор
Говорихме за проста база данни, състояща се от следните три таблици:
- Студент . Тази таблица съдържа записи, принадлежащи на ученици.
- Инструктор . Тази таблица съхранява информация за всички инструктори.
- Студент-инструктор . Това ни казва кой инструктор е назначен на кой ученик.
Важно: повече от един ученик може да бъде назначен за инструктор и повече от един инструктор може да бъде назначен на ученик (за различни предмети).
С други думи, много студенти могат да имат много инструктори.
Замяна на таблицата студент-инструктор с таблицата на курса
Нека леко прецизираме базата данни студент-инструктор – преименуваме таблицата студент-инструктор с таблица за курсове.
По този начин е по-лесно да се разбере, че всеки курс може да има няколко студенти и всеки инструктор може да има няколко студенти за един и същи курс.
Планираме следните колони за тези таблици:
- Студент:StudentId, Name.
- Инструктор:InstructorId, Name.
- Курс:CouseId, Name, StudentId, InstructorId.

Стартирайте SSMS (SQL Server Management Studio)
Въведете SSMS в полето за търсене на Windows и щракнете върху него в списъка с резултати, за да стартирате софтуера:

Имайте предвид, че ще видите версията, която сте инсталирали. В нашия случай това е SSMS (SQL Server Management Studio) версия 18.0.
Свържете се с SQL Server Database Engine
В Object Explorer прозорец, щракнете върху Свързване , след което изберете Database Engine :

Изберете името на сървъра (името на SQL сървъра, който сте инсталирали на вашето устройство). Свържете се с Database Engine въз основа на вашите настройки по подразбиране. В нашия случай използваме режима за удостоверяване на Windows:

Създайте нова SQL база данни StudentInstructor
След като се свържете, щракнете с десния бутон върху Бази данни възел в Object Explorer и щракнете върху Нова база данни... както е показано по-долу:

Въведете името на базата данни StudentInstructor . Кликнете върху OK, оставяйки настройките по подразбиране, освен ако не трябва да ги промените:

Базата данни трябва да бъде създадена сега.
Разгънете същите Бази данни възел, за да го намерите:

Създайте студентска маса
Сега трябва да създадем таблиците в базата данни StudentInstructor.
Разгънете StudentInstructor възел на базата данни:щракнете върху него и след това щракнете с десния бутон върху Таблици.
Отидете на Ново -> Таблица… както следва:

Ще добавим колони към таблицата една по една. Започваме с StudentId .
Въведете StudentId име на колона и изберете int Тип данни, тъй като ще бъде числов (само с числа):

Задаване на първичен ключ
StudentId колоната също ще бъде първичен ключ на таблицата. Това ще ни помогне да идентифицираме ученик (ред/запис) уникално.
Щракнете с десния бутон върху стрелката, сочеща StudentId колона и кликнете върху Задаване на първичен ключ :

Добавяне на самоличност към първичния ключ (StudentId)
Идентичността, зададена на колона, автоматично увеличава стойността си, когато се вмъкнат нови записи. Това е като сериен номер, който се увеличава с всеки нов запис.
Ако не настроим колоната с първичен ключ като колона за идентичност, ръчно добавяме идентификатора за всеки нов запис. Това е добра идея да го настроите.
Например първият запис, вмъкнат в таблицата на Student, ще има автоматичен идентификатор 1, а следващият ще бъде StudentId 2 и т.н. Това е, ако настроим самоличността.
Превъртете надолу Свойства на колона прозорец веднъж StudentId колоната с първичен ключ се избира, докато не намерите Спецификация на самоличността собственост.
Задайте спецификацията на самоличността, както следва (започвайки с е Идентичност) :
Спецификация на самоличността :Да
(е Идентичност) :Да
Увеличение на самоличността :1
Семена за самоличност :1

Добавете колона Име към таблицата на учениците
След това добавете друга колона – Име до масата. Използвайте varchar(45) Тип данни и махнете отметката от Разрешаване на нули както следва:

Не забравяйте, че VARCHAR(45) представлява символните данни (тип) до 45 знака, които да се съхраняват в колоната (Име). Когато премахнем отметката от Разрешаване на нула , трябва да предоставим тази стойност на колоната, за да запазим Студент запис.
Запазете таблицата (ученик)
Най-важната стъпка е да запазите промените си. В нашия случай ние запазваме новосъздадената таблица, като просто щракнем върху Запазване икона на диск в лентата с инструменти или чрез клавишната комбинация CTRL+S .
Въведете името на таблицата – Студент – когато го записвате:

Преглед на таблицата на учениците (Object Explorer)
След като таблицата бъде запазена успешно, разгънете Таблиците възел на StudentInstructor база данни, за да намерите новосъздадената таблица:

Създайте таблица на инструктори с InstrutorId и колони с имена
По същия начин щракнете с десния бутон върху Таблици възел отново. Този път създайте нова таблица, наречена Инструктор .
След това добавете нова колона, наречена InstructorId навх тип данни и го задайте като първичен ключ, както е показано по-долу:

Следващата стъпка е добавянето на Идентичност към колоната InstructorId :

След това добавете Име колона от VARCHAR(45) тип данни на Инструктор Таблица и не позволявайте нулеви стойности за тази колона, точно както за Име колона на Студент таблица:

Запазване и преглед на таблица с инструктори (Object Explorer)
Запазете таблицата, като натиснете CTRL+S пряк път или щракване върху иконата Запиши. Наименувайте таблицата като Инструктор .
Щракнете с десния бутон върху Таблици възел под StudentInstructor база данни и щракнете върху Опресняване за да видите и двете таблици сега:

Създайте таблицата на курса с CourseId първичен ключ колона с идентичност
Трябва да добавим още една таблица към базата данни – Курсът таблица, която ще съдържа идентификатори от двете таблици за студенти и инструктори. Ще има връзка много към много (много студенти могат да бъдат разпределени към много инструктори, според нашите изисквания).
Създайте нова таблица Курс с CourseId първичен ключ:

Добавете самоличност към колоната по същия начин, по който направихме за StudentId и InstructorId колони.
Добавяне на колони Име, StudentId и CourseId
След това добавете Име колона от тип VARCHAR(45) към Курса таблица, последвана от добавяне на StudentId и CourseId колони от int тип данни:

Не забравяйте да премахнете отметката от Разрешаване на нули за да се гарантира, че запис няма да бъде запазен без въвеждане на тези стойности на колоните.
По този начин гарантираме, че a Курс трябва да има ученик и инструктор преди да може да бъде запазен в базата данни. На всичкото отгоре Студентът и Инструктор трябва да съществува в оригиналните им таблици.
Запазване и бърза проверка
Запазете таблицата и името е като Курс:

И накрая, Опреснете всички таблици и прегледайте новосъздадената таблица заедно с други в Object Explorer :

Добавете всички таблици към диаграмата на базата данни
Сега трябва да създадем връзка между таблиците, така че и двете Студентски и Инструктор таблиците са свързани към Курса таблица чрез техните първични ключове.
Например StudentId вСтудента таблицата е свързана сStudentId в Курса маса. По същия начин, InstructorId в Инструктор таблицата е свързана с InstructorId в Курса таблица.
Можем да го постигнем с диаграмата на базата данни.
Отидете на StudentInstructor база данни в Object Explorer и щракнете с десния бутон върху Диаграми на базата данни -> Нова диаграма на базата данни :

Кликнете върху Да :

Използвайте CTRL ключ, за да изберете всички съществуващи таблици и да ги добавите към диаграмата на базата данни :

Вижте диаграмата на базата данни и пренаредете таблиците (щракнете върху таблицата и я преместете), за да направите Курс стойка за маса в средата, между устудента и Инструктор таблици:

Свържете студентската маса с таблицата на курса
Трябва да създадем връзка между Студент и Курс като свържете StudentId в Студентски таблица с StudentId колона в Курс таблица.
Плъзнете ключа StudentId и го пуснете в колоната StudentId в Таблицата на курсовете . Щракнете върху OK :

Това ще създаде отношение с външен ключ между таблиците за курсове и студенти – гарантира, че само онези студенти, записани в таблицата на студентите, ще бъдат запазени в таблицата на курса:

Свържете таблицата с инструктори с таблицата на курса
По същия начин трябва да свържете Инструктора таблица сКурса таблица, така че InstructorId колона първичен ключ на Инструктор таблицата ще бъде предадена на InstructorId в Курса таблица.
По този начин гарантираме, че InstructorId първичният ключ съществува като външен ключ в Курса маса. Това означава, че можем да съхраняваме всеки инструктор ред от Курса таблица само ако този инструктор съществува в оригиналния Инструктор маса. По този начин поддържаме последователността и целостта на базата данни съгласно стандартната практика.

Запазете диаграмата на базата данни
Накрая запазете диаграмата на базата данни, като щракнете върху Запазване икона в лентата с инструменти:

Добавяне на данни към студентската таблица
Време е да добавите някои данни към създадените таблици, започвайки от таблицата Student. Ще добавим три записа на ученици към таблицата.
Щракнете с десния бутон върху Студент таблица и кликнете върху Редактиране на най-добрите 200 реда (не се притеснявайте, няма да редактирате 200 реда):

Въведете следните имена и щракнете върху Enter за да запазите тези записи:

След това затворете прозореца – щракнете върху кръста горе вдясно или натиснете CTRL+F4.
Моля, имайте предвид, че StudentIds 1,2 и 3 се разпределят автоматично към записите. Ще ги използваме по-късно в курса таблица.
Добавяне на данни към таблицата с инструктори
Сега трябва да добавим двама инструктори на име Мартин и Асад . По този начин добавете следните данни към Инструктор таблица:

По същия начин, имайте предвид тези идентификатори 1 и 2. Засега можете да затворите този прозорец.
Добавяне на данни към таблицата на курса
Имаме студенти от едната страна и инструктори от другата страна. Но можем да добавим само онези студенти, които вече са на масата за студенти, и същото важи и за инструкторите.
Нека запишем и тримата студенти в Бази данни курс и назначете инструктор за този Курс също така:

Преглед на съдържанието на курса
За да видите данните, щракнете с десния бутон върху Курс таблица-> Изберете най-добрите 1000 реда:


Честито! Успешно се научихте да проектирате проста база данни със SSMS (SQL Server Management Studio). Наред с това се обучаваме да вмъкваме нови записи и да преглеждаме вмъкнатите данни.
Неща за правене
Сега, когато можете да проектирате база данни със SSMS, опитайте следните неща, за да подобрите допълнително уменията си:
- Опитайте да прегледате съдържанието на таблиците за ученици и инструктори.
- Опитайте да добавите друг курс, наречен Бизнес разузнаване и запишете всичките трима студенти в този курс, заедно с назначаването на инструктора Асад (InstructorId:2)
- Не забравяйте, че можете да подобрите действителния дизайн на базата данни от статията чрез следните неща:
- Преименуване на Курса таблица като Класа маса;
- Премахване на Име колона от Клас маса;
- Замяна на CourseId с ClassId колона;
- Създаване на отделен Курс таблица с колоните CourseId и Name, точно както за таблиците Student и Instructor;
- Добавяне на нов CourseId колона към таблицата на класовете и свързване CourseId на курса Таблица с CourseId колона в Клас таблица, точно като студент и инструктор.