Главная страница

кпарвп. Лабораторная работа 1. Создание базы данных в sql server 2022 Основные объекты структуры базы данных sql сервера


Скачать 0.97 Mb.
НазваниеСоздание базы данных в sql server 2022 Основные объекты структуры базы данных sql сервера
Анкоркпарвп
Дата13.02.2023
Размер0.97 Mb.
Формат файлаpdf
Имя файлаЛабораторная работа 1.pdf
ТипДокументы
#934087

РАЗДЕЛ 1. СОЗДАНИЕ БАЗЫ ДАННЫХ В SQL SERVER 2022
1.1. Основные объекты структуры базы данных SQL - сервера
Основные объекты базы данных SQL Server представлены в таблице 1:
Таблица 1. Объекты базы данных SQL Server
Tables
Таблицы базы данных, в которых хранятся собственно данные
Views
Просмотры (виртуальные таблицы) для отображения данных из таблиц
Stored
Procedures
Хранимые процедуры
Triggers
Триггеры – специальные хранимые процедуры, вызываемые при изменении данных в таблице
User Defined
function
Создаваемые пользователем функции
Indexes
Индексы – дополнительные структуры, призванные повысить производительность работы с данными
User Defined
Data Types
Определяемые пользователем типы данных
Keys
Ключи – один из видов ограничений целостности данных
Constraints
Ограничение целостности – объекты для обеспечения логической целостности данных
Users
Пользователи, обладающие доступом к базе данных
Roles
Роли, позволяющие объединять пользователей в группы
Rules
Правила базы данных, позволяющие контролировать логическую целостность данных
Defaults
Умолчания или стандартные установки базы данных
Таблицы
Все данные содержатся в объектах, называемых таблицами. Таблицы представляют собой совокупность каких-либо сведений об объектах, явлениях, процессах реального мира. Никакие другие объекты не хранят данные, но они могут обращаться к данным в таблице. Таблицы в SQL имеют такую же структуру, что и таблицы всех других реляционных СУБД и содержат:
cтроки; каждая строка (или запись) представляет собой совокупность атрибутов (свойств) конкретного экземпляра объекта;
cтолбцы; каждый столбец (поле) представляет собой атрибут или совокупность атрибутов. Поле строки является минимальным элементом таблицы. Каждый столбец в таблице имеет определенное имя, тип данных и размер.
Представлениями (просмотрами) называют виртуальные таблицы, содержимое которых определяется запросом. Подобно реальным таблицам, представления содержат именованные столбцы и строки с данными. Для конечных пользователей представление выглядит как таблица, но в действительности оно не содержит данных, а лишь представляет данные, расположенные в одной или нескольких таблицах. Информация, которую видит пользователь через представление, не сохраняется в базе данных как самостоятельный объект.

Хранимые процедуры представляют собой группу команд SQL, объединенных в один модуль. Такая группа команд компилируется и выполняется как единое целое.
Триггерами называется специальный класс хранимых процедур, автоматически запускаемых при добавлении, изменении или удалении данных из таблицы.
Функции в языках программирования – это конструкции, содержащие часто исполняемый код. Функция выполняет какие-либо действия над данными и возвращает некоторое значение.
Индекс – структура, связанная с таблицей или представлением и предназначенная для ускорения поиска информации в них. Индекс определяется для одного или нескольких столбцов, называемых индексированными столбцами. Он содержит отсортированные значения индексированного столбца или столбцов со ссылками на соответствующую строку исходной таблицы или представления. Повышение производительности достигается за счет сортировки данных.
Использование индексов может существенно повысить производительность поиска, однако для хранения индексов необходимо дополнительное пространство в базе данных.
Пользовательские типы данных – это типы данных, которые создает пользователь на основе системных типов данных, когда в нескольких таблицах необходимо хранить однотипные значения; причем нужно гарантировать, что столбцы в таблице будут иметь одинаковый размер, тип данных и чувствительность к значениям NULL.
Ограничения целостности – механизм, обеспечивающий автоматический контроль соответствия данных установленным условиям (или ограничениям).
Ограничения целостности имеют приоритет над триггерами, правилами и значениями по умолчанию. К ограничениям целостности относятся: ограничение на значение NULL, проверочные ограничения, ограничение уникальности
(уникальный ключ), ограничение первичного ключа и ограничение внешнего ключа. Последние три ограничения тесно связаны с понятием ключей.
Правила используются для ограничения значений, хранимых в столбце таблицы или в пользовательском типе данных. Они существуют как самостоятельные объекты базы данных, которые связываются со столбцами таблиц и пользовательскими типами данных. Контроль значений данных может быть реализован и с помощью ограничений целостности.
Умолчания – самостоятельный объект базы данных, представляющий значение, которое будет присвоено элементу таблицы при вставке строки, если в команде вставки явно не указано значение для этого столбца.
1.2. Создание базы данных. Создание и заполнение таблиц
Создание БД Успеваемость
Создание самой базы данных и таблиц осуществляется с помощью программы SQL Server 2022, которая запускается командой: Пуск-Microsoft

SQL Server Management Studio
. После установки соединения (рис 1) с текущим сервером на экране появится окно программы, показанное на рис. 2.
Рис.1 Подключение к серверу
Рис.2. Окно Обозревателя объектов программы Microsoft SQL Server Management Studio
В левой части в окне Обозревателя объектов можно увидеть содержимое текущего сервера, а именно базы данных и другие объекты. На одном компьютере-сервере можно расположить несколько баз данных. Весь список БД
доступных на сервере можно просмотреть, открыв папку Базы данных (см. рис.3).
Рис.3. Содержимое папки Базы данных
Процесс создания базы данных в системе SQL-сервера состоит из двух этапов: сначала организуется сама база данных, а затем принадлежащий ей журнал транзакций. Информация размещается в соответствующих файлах, имеющих расширения *.mdf (для базы данных) и *.ldf. (для журнала транзакций).
В файле базы данных записываются сведения об основных объектах (таблицах, индексах, просмотрах и т.д.), а в файле журнала транзакций – о процессе работы с транзакциями (контроль целостности данных, состояния базы данных до и после выполнения транзакций).
Итак, для создания новой базы данных необходимо щелкнуть правой кнопкой мыши по значку папки Базы данных и выбрать команду контекстного меню Создать базу данных (см. рис.4). После чего на экране появится диалоговое окно Создание базы данных, в котором необходимо указать в поле
Имя базы данных имя создаваемой БД. Имя базы данных должно быть уникальным в пределах сервера и не может превышать 128 символов. Например, укажем название - Успеваемость (см. рис.5).
В разделе Файлы базы данных можно указать дополнительную информацию о файлах базы данных. Здесь можно изменить Путь, Начальный
размер файла в мегабайтах, Авторасширение (см. рис.6).

Рис.4. Команда создания новой БД.
Рис.5. Создание БД Успеваемость.
Имя файла для данных генерируется на основе имени базы данных, в нашем случае Успеваемость, тип файла Rows data (Данные). В поле Путь можно поменять расположение файла данных. По умолчанию указывается
C
:\
Program
Files\Microsoft
SQL
Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\. В поле Начальный размер
можно определить первоначальный размер файла, по умолчанию принимается 8
Мб.
В поле Авторасширение нажав соответствующую кнопку можно в дополнительном окне изменить параметры авторасширения для создаваемой базы данных (см. рис.6), а именно, разрешить или запретить автоматический рост его размера Разрешить авторасширение и указать следующие параметры: 1)
Увеличение размера файлов - приращение с помощью абсолютной величины
в мегабайтах или в процентном соотношении В процентах; 2) Максимальный
размер файла. При выборе параметра Неограниченный рост размера файлов
- максимальный размер базы данных ограничивается только свободным местом
на диске, при выборе Ограничение размера файла нужно указать максимальный размер файла в Мб.
Рис.6. Создание БД Успеваемость. Изменение параметра Авторасширение
Такие же параметры можно настроить у файла журнала транзакций. Имя файла для журнала транзакций генерируется на основе имени базы данных, и в конце к нему добавляются символы _log. Файл журнала транзакций должен находиться в одной папке с файлом базы данных.
После настройки всех параметров можно нажать кнопку ОК, в результате чего будет создан файл базы данных с выбранными параметрами (рис.7)
Рис.7. База данных Успеваемость
Создание таблиц. Типы данных. Нулевой статус.
После того как создана база данных можно приступить к созданию таблиц, необходимых для учета успеваемости студентов. Для создания таблицы необходимо открыть БД Успеваемость и перейти к объекту Tables. Здесьможно
увидеть стандартный набор системных таблиц. Таблицы, создаваемые пользователем для хранения информации, являются пользовательскими.
Таблица создается с помощью команды контекстного меню Создать таблицу
(рис.8). Сначала нужно описать структуру таблицы, т.е. указать имена полей, типы данных, нулевой статус, ключевые поля и другие свойства (рис.9).
Рис.8. Создание новой таблицы
Рис.9. Окно создания новой таблицы
Названия полей должны быть четко продуманными и должны соответствовать данным, которые будут вводиться в это поле. Имена полей не должны содержать пробелов и буквы русского алфавита.
Один из основных моментов процесса создания таблицы – определение типов данных для ее полей. Тип данных поля таблицы определяет тип информации, которая будет размещаться в этом поле. SQL-сервер поддерживает большое число различных типов данных. Полный перечень представлен в таблице 2.
Таблица 2. Список типов данных
Для хранения символьной информации:
char (длина)
текстовые значения имеют фиксированную длину от 1 до 8000 символов. Если во вводимом в поле текстовом значении
фактическое число символов меньше числа, определенного параметром длина, то значение поля автоматически дополняется справа пробелами до заданного числа символов.
varchar (длина)
Текстовые значения имеют переменную длину от 1 до 8000 символов. В отличие от char при вводе строки, фактическая длина которой меньше заданной, не производится ее дополнение пробелами до заданного максимального значения. По сравнению с char тип данных varchar позволяет более экономно использовать память, выделяемую для хранения текстовых значений, и оказывается более удобным при сравнении текстовых констант.
nchar (длина)
для хранения до 4000 символов Unicode.
nvarchar (длина)
text
для хранения символьных данных большого объема (до 2 Гб)
ntext
К целочисленным типам данных относятся:
int
4 байта (диапазон хранимых данных от -2 31
(-2 147 483 648) до
2 31
-1 (2 147 483 647))
smallint
2 байта (диапазон от -2 15
(-32 768)до 2 15
-1 (32767))
tinyint
1 байт (диапазон от 0 до 255)
bigint
8 байт (диапазон от -2 63
(-9223372036854775808) до 2 63
-1
(9223372036854775807))
Числа, в составе которых есть десятичная точка, называются нецелочисленными.
Нецелочисленные данные разделяются на два типа – десятичные и приблизительные.
Десятичные:
decimal
[(точность[,масштаб])]
Позволяют самостоятельно определить формат точности числа с плавающей запятой. Параметр точность указывает максимальное количество цифр вводимых данных этого типа (до и после десятичной точки в сумме), а параметр масштаб – максимальное количество цифр, расположенных после десятичной точки. В обычном режиме сервер позволяет вводить не более 28 цифр, используемых в типах DECIMAL и NUMERIC (от 2 до 17 байт).
numeric
[(точность[,масштаб])]
Приблизительные:
float
FLOAT (точность до 15 цифр, 8 байт) и REAL (точность до 7 цифр,
4 байта). Эти типы представляют данные в формате с плавающей запятой, т.е. для представления чисел используется мантисса и порядок, что обеспечивает одинаковую точность вычислений независимо от того, насколько мало или велико значение.
real
Для хранения информации о дате и времени предназначены такие типы данных, как:
smalldatetime
4 байт для хранения дат в пределах от 1 января 1900 до 6 июня 2079
datetime
8 байт с 1 января 1753 до 31 December 9999
Для хранения информации денежного типа
money
обеспечивают точность значений до 4 знаков после запятой и используют 8 и 4 байта соответственно.
smallmoney
Логический тип данных
bit
Для хранения значений 0 или 1
Другие типы данных
timestamp
применяется в качестве индикатора изменения версии строки в пределах базы данных

uniqueidentifier
используется для хранения глобальных уникальных идентификационных номеров
sysname
предназначен для идентификаторов объектов
sql_variant
позволяет хранить значения любого из поддерживаемых SQL
Server типов данных за исключением TEXT, NTEXT, IMAGE и
TIMESTAMP
image
Variable-length binary data with a maximum length of 2^31 - 1
(2,147,483,647) bytes.
Дополнительные свойства полей:
Размер поля (Длина). После выбора типа данных можно указать дополнительные свойства полей в нижней части окна Свойства столбцов.
Значение длина – размер поля можно редактировать только у полей имеющих символьный тип данных: char (длина), varchar (длина), nchar (длина),
nvarchar (длина).
Нулевой статус (Разрешить значения Null). Для обозначения отсутствующих, пропущенных или неизвестных значений поля в SQL используется ключевое слово NULL. NULL не является значением 0 в обычном понимании, а используется для обозначения того факта, что действительное значение поля на самом деле пропущено или неизвестно. При описании полей таблицы проектировщик в столбце Разрешить значения Null разрешает ( ) или запрещает ввод значений NULL в то или иное поле. В ключевые поля автоматически запрещается ввод неизвестных значений. Например, при описании поля Фамилия_студента проектировщик запретил ввод значений
NULL в это поле. Следовательно, при заполнении таблицы реальными данными нельзя будет оставить поле Фамилия_студента незаполненным, т.е. если пользователь не будет знать фамилию или ошибочно пропустит это поле, то при переходе к следующей строке SQL Server выдаст предупреждение о том, что поле Фамилия_студента является обязательным для заполнения.
Задание 1. Рассмотрим процесс создания таблицы на примере таблицы
STUDENT. Изучите и выполните все действия, описанные ниже.
Таблица Студент предназначена для хранения сведений о студентах личного характера, т.е. персональный код, имя и фамилию, дату рождения, город проживания, курс, стипендию и код университета в котором учится студент. Т.е. структура полей таблицы будет иметь следующий вид:
Свойство Название
поля
Назначение
PK
(Primary key, ключевое поле)
Student_id
Числовой код, однозначно идентифицирующий студента см. описание типов полей ниже
Surname
Фамилия студента
Name
Имя студента
Stipend
Стипендия, которую получает студент

Kurs
Курс, на котором учится студент
City
Город, в котором живет студент
Birthday
Дата рождения студента
Univ_id
Числовой код, идентифицирующий университет, в котором учится студент
Создадим таблицу Student, определив тип данных и нулевой статус столбцов.
− Поле Student_id предназначено для хранения идентификационных номеров студентов. Каждый студент будет иметь свой персональный неповторяющийся числовой код. Предполагаем, что количество студентов, а, следовательно, количество разных идентификационных номеров, будет больше
255, но не больше 32767, в связи с этим целесообразнее выбрать тип данных –
smallint,чем tinyint (значения см. в таб.2). Если число студентов будет больше чем 32767, то нужно выбрать тип данных – int.
− Из таких же рассуждений дляполя Univ_id выбран тип данных smallint.
− Поля Surname, Name, City с целью экономии памяти определяем как текстовые поля переменной длины – varchar. Предполагаем, что фамилия и город будет не больше 20 символов, поэтому длину полей Surname и City установим равными 20 символам, а Name - 15 символов (см. рис.11).
− Поле Stipend будет содержать нецелочисленные значения стипендий, поэтому выбираем тип данных – real.
− Поле Kurs будет содержать значения от 1 до 5, поэтому целесообразнее выбрать самый малый целочисленный тип данных – tinyint.
− Поле Birthday предназначено для хранения дат рождения, поэтому выбираем тип данных smalldatetime (описание типа данных см. в таб.2)
Нулевой статус полей. Прежде чем определять нулевой статус полей, проектировщик должен разделить все поля таблицы на 2 категории: главные и второстепенные. Главные (или основные) поля таблицы содержат основную информацию, они зачастую предназначены для персонификации или идентификации субъекта/объекта, поэтому не должны содержать пустые значения - Null значения. Второстепенные поля содержат дополнительные характеристики субъекта/объекта. Право отнесения поля к той или иной категории принадлежит проектировщику исходя из постановки задачи.
− Итак, ввод значений Null запретим в поля Student_id, Surname и Name.
Почему именно эти поля не могут быть пропущены при заполнении строки? Это объясняется тем, что код студента является главным полем данной таблицы, кроме того, оно является ключевым полем, поэтому в него автоматически запрещается вводить значения Null. А поскольку код обозначает определенного студента, то мы должны ввести его фамилию и имя, чтобы точно знать, кому принадлежит введенный код. Иначе, если мы сделаем эти 2 поля необязательными для заполнения, то возникает вопрос: «Кого (что) мы идентифицируем (однозначно обозначаем) с помощью поля КодСтудента»? В остальные поля (стипендия, город проживания и.т.д.) можно разрешить ввод значений Null. Т.е. в момент заполнения сведений о текущем студенте, если не
будут известны его дата рождения или город проживания, соответствующее поле можно будет пропустить и вернуться к его заполнению позже, когда информация станет известной. В нашем примере в поля Stipend, Kurs, City, Birthday, Univ_id разрешается ввод неизвестных значений.
− Главным полем таблицы, первичным ключом (Primary Key) является
Student_id. Значения этого поля будут однозначно обозначать каждую строку таблицы, а именно студента. Если даже в таблицу нужно будет ввести сведения о двух студентах, имеющих совпадающие фамилии и имена, то это можно будет сделать без особой путаницы, поскольку номера этим студентам будут присвоены разные, что позволит распознавать их как двух разных людей. Чтобы сделать поле ключевым необходимо перейти к нему и выбрать в контекстном меню пункт Set primary key (Рис. 10)
Рис.10 Назначение поля ключевым
Рис. 11. Структура таблицы Student
После описания структуры полей создаваемой таблицы нужно закрыть окно новой таблицы, сохранить, указав название таблицы Student. Далее для заполнения таблицы реальными данными нужно в контекстном меню таблицы выбрать команду Edit Top 200 Rows (рис.12). Чтобы вернуться к макету таблицы с целью изменения описания полей, нужно в контекстном меню таблицы выбрать команду Проект/Design (рис.13).

Рис.12. Открытие таблицы в режиме таблицы для заполнения данными
Рис.13. Открытие таблицы в режиме конструктора.
Откройте созданную таблицу Student в режиме таблицы и заполните ее следующими данными:
Student (Студент)
Student_id Surname Name
Stipend Kurs City
Birthday
Univ_id
1
Иванов
Иван
150 1
Орел
03.12.1982 11 3
Петров
Петр
200 1
Курск
01.12.1980 11 6
Сидоров Вадим
150 4
Москва
07.06.1979 22 10
Кузнецов Борис null
2
Брянск
08.12.1981 10 12
Зайцева
Ольга
250 2
Липецк
01.05.1981 10 32
Котов
Павел
150 5
Белгород null
14 55
Белкин
Вадим
250 5
Воронеж 07.01.1980 10 265
Павлов
Андрей null
3
Самара
05.11.1979 10

276
Петров
Антон
200 4 null
05.08.1981 22 654
Лукин
Артем
200 3
Воронеж 01.12.1981 37
Практическая работа №1. Создание БД Успеваемость
Аналогичным образом создайте следующие таблицы БД Успеваемость:
Lecturer (Преподаватель)
Lecturer_id Surname
Name
City
Univ_id
24
Колесников Борис
Воронеж 11 46
Никонов
Иван
Воронеж 10 74
Лагутин
Павел
Москва
22 108
Строков
Николай
Воронеж 22 276
Николаев
Виктор
Орел
14 328
Сорокин
Андрей
Москва
10 455
Леонтьев
Мирослав Томск
15
Lecturer_id-числовой код, идентифицирующий преподавателя;
Surname-фамилия преподавателя; Name-имя преподавателя
City-город, в котором живет преподаватель;
Univ_id-идентификатор университета, в котором работает преподаватель;
Subject (Предмет)
Subj_id
Subj_name
Hour
Semester
10
Информатика
56 1
11
Информатика
72 2
22
Физика
34 1
43
Математика
56 2
56
История
34 4
73
Физкультура
34 5
94
Английский
56 3
Subj_id- идентификатор предмета обучения
Subj_name-наименование предмета обучения
Hour-количество часов, отводимых на изучение предмета
Semester-семестр, в котором изучается данный предмет
University (Университеты)
Univ_id
Univ_name
Rating
City
10
НГУ
303
Новосибирск
11
ВГУ
296
Воронеж
14
БГУ
326
Белгород
15
ТГУ
368
Томск
18
ВГМА
327
Воронеж
22
МГУ
606
Москва
32
РГУ
416
Ростов
37
СГТУ null
Белгород
Univ_id- идентификатор университета; Univ_name-название университета
Rating-рейтинг университета; City-город, в котором расположен университет

Exam_marks (Экзаменационные оценки)
Exam_id Student_id Subj_id Mark Exam_date
34 6
10 3
23.01.2000 34 32 10 4
23.01.2000 145 12 10 3
12.01.2000 238 41 10 5
22.01.1999 238 12 10 5
22.01.1999 43 6
22 4
18.01.2000 639 12 22 4
22.06.1999 639 32 22 2
22.06.1999 639 55 22 null
22.06.1999 75 6
43 5
05.01.2000 75 55 43 5
05.01.2000 101 265 11 3
12.06.2001 101 276 11 4
12.06.2001 101 654 11 3
12.06.2001 122 265 94 5
15.01.2002 122 654 94 4
15.01.2002
Exam_id – идентификатор экзамена
Student_id-идентификатор студента
Subj_id- идентификатор предмета обучения
Mark-экзаменационная оценка
Exam_date-дата экзамена
Subj_lect (Учебные дисциплины преподавателей)
Lecturer_id Subj_id
24 10 24 11 46 11 46 22 46 43 74 43 108 22 108 56 276 94 328 10 328 22 455 73
Lecturer_id- идентификатор преподавателя
Subj_id- идентификатор предмета обучения
Контрольные вопросы:
1. Перечислите основные объекты SQL Server?
2. Из каких двух файлов состоит база данных SQL Server и какое расширение они имеют?
3. Что необходимо указать при создании базы данных SQL Server?
4. Что означает атрибут Авторасширение?
5. Как изменить путь к базе данных?

6. Для чего нужен файл журнала транзакций и какое у него расширение?
7. Перечислите типы таблиц SQL Server?
8. Как создать новую таблицу?
9. Что необходимо указать при создании таблицы?
10. Что такое Null значения?
11. Что такое ключевое поле и как сделать поле ключевым?
12. Какие типы данных Вы знаете и как определить какой тип нужно выбрать для создаваемого поля?
13. Как открыть созданную таблицу в режиме таблицы и посмотреть ее содержимое?
14. Как открыть созданную таблицу в режиме конструктора чтобы изменить ее макет?


написать администратору сайта