Гадасин_Д_В_Методические_указания_по_выполнению_практических_занятия
.pdfМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное
учреждение высшего образования «Московский технический университет связи и информатики»
Кафедра Сетевые информационные технологии и сервисы
Утверждено Советом факультета ИТ Протокол № __________
Дата _________________
Подпись ______________
Учебно-методическое пособие для проведения занятий по дисциплине «Принципы построения систем управления базами данных и знаний» для бакалавров заочной формы обучения по направлению подготовки 09.03.02
Гадасин Д.В. Вакурин И.С. Яковенко Н.В.
Москва 2023
МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное
учреждение высшего образования «Московский технический университет связи и информатики»
Кафедра Сетевые информационные технологии и сервисы
Учебно-методическое пособие для проведения занятий по дисциплине «Принципы построения систем управления базами данных и знаний» для бакалавров заочной формы обучения по направлению подготовки 09.03.02
Москва 2023
2
Задание 1
Конструирование записей постоянной длины
Кортежи отношений представляются записями, состоящими из полей различных типов. В простейшем случае, когда все поля обладают постоянной длиной, запись можно получить простым сцеплением полей.
Пусть отношение Работник включает в себя четыре поля:
1.Имя – 30-байтовая строка символов;
2.Адрес – символьная строка типа VARCHAR(255), представляемая массивом из 256 байтов в соответствии с одной из схем.
3.Пол – единственный байт, содержащий код одного из двух допустимых символов – «М» или «Ж»
4.Дата_рождения – величина типа DATE (10-байтовое представление значений
дат SQL)
Таким образом общая длина записи отношения Работник составляет
30+256+1+10=297 байт.
Схематически запись выглядит следующим образом
Рис.1 Кортеж отношений
В нижней части рисунка указаны значения смещения – количество байтов от начала записи – для каждого поля. Так, смещение поля Имя равно 0 (первый байт записи имеет номер 0), начало поля Адрес отстоит от начала записи на 30 байт, пол – на 286 байт, а
Дата_рождения – на 287 байт
Задача к решению 1.1
Для указанных ниже полей произвести конструирование записей постоянной длины.
Запись представить в виде графика, на котором должны быть отображены имена полей,
номера байт, с которых начинаются поля. Определить общую длину записи.
Запись: отношение Работник включает в себя четыре поля:
3
1.Имя – 30-байтовая строка символов;
2.Адрес – символьная строка типа VARCHAR(255), представляемая массивом из 256 байтов в соответствии с одной из схем.
3.Пол – единственный байт, содержащий код одного из двух допустимых символов – «М» или «Ж»
4.Дата_рождения – величина типа DATE (3-байтовое представление значений
дат SQL)
5.Должность - символьная строка типа VARCHAR(100), представляемая массивом из 101 байтов в соответствии с одной из схем.
6.Время и дата трудоустройства - величина типа DATETIME (8-байтовое представление значений дат SQL)
7.Название отдела - символьная строка типа CHAR(150), представляемая массивом из 150 байтов в соответствии с одной из схем.
8.Зарплата - NUMERIC(10,2), тип который будет занимать 12 байт.
Исходные данные для задачи – 25 вариантов
Вариант |
A |
B |
C |
D |
|
|
|
|
|
0 |
1 |
2 |
3 |
4 |
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
|
|
|
|
|
2 |
2 |
3 |
4 |
6 |
|
|
|
|
|
3 |
2 |
3 |
4 |
7 |
|
|
|
|
|
4 |
2 |
3 |
4 |
8 |
|
|
|
|
|
5 |
3 |
4 |
5 |
6 |
|
|
|
|
|
6 |
3 |
4 |
5 |
7 |
|
|
|
|
|
7 |
3 |
4 |
5 |
8 |
|
|
|
|
|
8 |
4 |
5 |
6 |
7 |
|
|
|
|
|
9 |
4 |
5 |
6 |
8 |
|
|
|
|
|
10 |
5 |
6 |
7 |
8 |
|
|
|
|
|
11 |
1 |
3 |
4 |
8 |
|
|
|
|
|
12 |
1 |
2 |
3 |
5 |
|
|
|
|
|
13 |
1 |
2 |
3 |
6 |
|
|
|
|
|
14 |
1 |
2 |
3 |
7 |
|
|
|
|
|
15 |
1 |
2 |
3 |
8 |
|
|
|
|
|
16 |
5 |
6 |
7 |
8 |
|
|
|
|
|
17 |
1 |
3 |
4 |
8 |
|
|
|
|
|
18 |
1 |
4 |
6 |
7 |
|
|
|
|
|
19 |
2 |
3 |
6 |
8 |
|
|
|
|
|
4
20 |
2 |
3 |
7 |
8 |
|
|
|
|
|
21 |
2 |
4 |
5 |
7 |
|
|
|
|
|
22 |
1 |
3 |
5 |
7 |
|
|
|
|
|
23 |
2 |
4 |
6 |
8 |
|
|
|
|
|
24 |
2 |
6 |
7 |
9 |
|
|
|
|
|
25 |
1 |
2 |
4 |
8 |
|
|
|
|
|
Разбор 0 варианта
Кортежи отношений представляются записями, состоящими из полей различных типов. В простейшем случае, когда все поля обладают постоянной длиной, запись можно получить простым сцеплением полей.
Пусть отношение Работник включает в себя четыре поля:
1.Имя – 30-байтовая строка символов;
2.Адрес – символьная строка типа VARCHAR(255), представляемая массивом из 256 байтов в соответствии с одной из схем.
3.Пол – единственный байт, содержащий код одного из двух допустимых символов – «М» или «Ж»
4.Дата_рождения – величина типа DATE (3-байтовое представление значений
дат SQL)
Таким образом общая длина записи отношения Работник составляет 30+256+1+3=290
байт.
Схематически запись выглядит следующим образом
Рис.2 Схематическая запись кортежа
В нижней части рисунка указаны значения смещения – количество байтов от начала записи – для каждого поля. Так, смещение поля Имя равно 0 (первый байт записи имеет номер0), начало поля Адрес отстоит от начала записи на 30 байт, пол – на 286 байт, а
Дата_рожденья – на 287 байт
Конструирование записей постоянной длины со смещением
5
Вычислительные устройства поддерживают более эффективные алгоритмы считывания и записи элементов данных, если они размещаются в оперативной памяти по адресам с номерами, кратными 4 или 8 (в случае 64-битного процессора). Для определенных типов данных (целые числа), требование размещения по адресам, кратным
4, обязательно, а для других (числа с плавающей точкой), должно выполняться условие привязки к адресам с множителем 8. Хотя кортежи отношения постоянно хранятся на диске,
а не в оперативной памяти, не учитывать подобные обстоятельства нельзя, т.к. при считывании дискового блока в оперативную память первый байт бока будет определенно размещен по адресу, кратному 4 либо являющемуся более высокой степенью 2. Таким образом, требование расположения полей данных по строго определенным адресам памяти,
кратным 4 или 8, трактуется как условие смещения этих полей от начала блока на соответствующую величину.
Пусть, все поля данных должны размещаться по адресам оперативной памяти,
кратным 4. Для удовлетворения этого требования достаточно выполнения следующих условий:
1.Каждая запись смещена от начала блока на величину, кратную 4.
2.Значение смещения каждого поля от начала записи также кратно 4.
Задача к решению 1.2.
Для указанных полей произвести конструирование записей постоянной длины. При решении задачи принять во внимание что каждая запись смещена на ту же величину что и поля в этой записи. Величина смещения равна n. Запись представить в виде графика, на котором должны быть отображены имена полей, номера байт, с которых начинаются поля.
Определить общую длину записи.
Запись: отношение Работник включает в себя четыре поля:
1.Имя – 30-байтовая строка символов;
2.Адрес – символьная строка типа VARCHAR(255), представляемая массивом из 256 байтов в соответствии с одной из схем.
3.Пол – единственный байт, содержащий код одного из двух допустимых символов – «М» или «Ж»
4.Дата_рождения – величина типа DATE (3-байтовое представление значений
дат SQL)
5.Должность - символьная строка типа VARCHAR(100), представляемая массивом из 101 байтов в соответствии с одной из схем.
6
6.Время и дата трудоустройства - величина типа DATETIME (8-байтовое представление значений дат SQL)
7.Название отдела - символьная строка типа CHAR(150), представляемая массивом из 150 байтов в соответствии с одной из схем.
8.Зарплата - NUMERIC(10,2), который будет занимать 12 байт.
Исходные данные для задачи – 25 вариантов
Вариант |
n |
A |
B |
C |
D |
|
|
|
|
|
|
0 |
4 |
1 |
2 |
3 |
4 |
|
|
|
|
|
|
1 |
4 |
2 |
3 |
4 |
5 |
|
|
|
|
|
|
2 |
4 |
2 |
3 |
4 |
6 |
|
|
|
|
|
|
3 |
4 |
2 |
3 |
4 |
7 |
|
|
|
|
|
|
4 |
4 |
2 |
3 |
4 |
8 |
|
|
|
|
|
|
5 |
4 |
3 |
4 |
5 |
6 |
|
|
|
|
|
|
6 |
4 |
3 |
4 |
5 |
7 |
|
|
|
|
|
|
7 |
4 |
3 |
4 |
5 |
8 |
|
|
|
|
|
|
8 |
4 |
4 |
5 |
6 |
7 |
|
|
|
|
|
|
9 |
4 |
4 |
5 |
6 |
8 |
|
|
|
|
|
|
10 |
4 |
5 |
6 |
7 |
8 |
|
|
|
|
|
|
11 |
8 |
1 |
3 |
4 |
8 |
|
|
|
|
|
|
12 |
8 |
1 |
2 |
3 |
5 |
|
|
|
|
|
|
13 |
8 |
1 |
2 |
3 |
6 |
|
|
|
|
|
|
14 |
8 |
1 |
2 |
3 |
7 |
|
|
|
|
|
|
15 |
8 |
1 |
2 |
3 |
8 |
|
|
|
|
|
|
16 |
8 |
5 |
6 |
7 |
8 |
|
|
|
|
|
|
17 |
8 |
1 |
3 |
4 |
8 |
|
|
|
|
|
|
18 |
8 |
1 |
4 |
6 |
7 |
|
|
|
|
|
|
19 |
8 |
2 |
3 |
6 |
8 |
|
|
|
|
|
|
20 |
8 |
2 |
3 |
7 |
8 |
|
|
|
|
|
|
21 |
8 |
2 |
4 |
5 |
7 |
|
|
|
|
|
|
22 |
8 |
1 |
3 |
5 |
7 |
|
|
|
|
|
|
23 |
8 |
2 |
4 |
6 |
8 |
|
|
|
|
|
|
24 |
8 |
2 |
6 |
7 |
9 |
|
|
|
|
|
|
7
25 |
8 |
1 |
2 |
4 |
8 |
|
|
|
|
|
|
Разбор 0 варианта
В нашем случае n =4, начинаем с первого поля, смотрим на количество байт, если число кратно 4, не прибавляя переходим к следующему полю, если число не кратно, то находим ближайшее число кратное 4 и добавляем необходимое количество байт,
получившееся число отмечаем на графике.
Переходим к следующему полю и проверяем на соответствие двум условиям,
отмечаем на графике, аналогично поступаем с остальными полями. И проверяем условие на всю длину записи.
1. Длина первого поля, Имя, составляет 30 байт, но второе поле, Адрес, не должно начинаться непосредственно после первого – его следует сместить до ближайшей отметки, кратной 4 – это значение 32.
30 + 2 = 32
2. Размер поля Адрес равен 256, поэтому смещение третьей поля, Пол, должно составить 288.
32 + 256 = 288
3.Поле Пол требует всего одного байта, но отвести для его хранения менее 4
байт нельзя, поэтому смещения поля, Дата_рождения, окажется равным 292.
288 + 1 + 3 = 292
4. Поле Дата_рождения имеет длину 3 байт и завершается элементом под номером 295, поэтому общая длина записи должна была бы составить 296 байта, т.к. первый байт записи обладает номером 0, но поскольку значение длины записи также должно быть кратным 4, запись следует дополнить двумя лишними байтами. Более целесообразно ввести эти байты в состав поля Дата_рождения, чтобы их нельзя было случайно использовать для иных целей.
292 + 3 + 1 = 296
Кортежи отношения Работник должны представляться в памяти в соответствии с указанными выше требованиями, т.е. каждое поле записи обязано начинаться с байта,
номер которого является множителем 4. Тогда значения смещений полей от начала записи будут такими: 0, 32, 288, 292. Общая длина записи составит 296 байта. Формат записи будет следующим.
8
Рис.3 Формат записи кортежа
Задание 2
Задача к решению 2.
При проектировании структур записей нередко в самой записи необходимо хранить порции дополнительной информации, не относящиеся ни к одному из полей, например:
1.Данные о схеме записи, либо указатель на то место, где СУБД сохраняет схему записи данного типа.
2.Сведения об общей длине записи.
3.Данные о моменте последнего обращения к записи с целью ее считывания или модификации.
Поэтому во многих случаях в структуру записи включается заголовок, состоящий, как правило, из небольшого количества байтов с дополнительными данным того или иного вида.
СУБД, сохраняет и поддерживает в актуальном состоянии информацию схемы отношения, которая, по существу, отображает содержимое соответствующей команды
CREATE TABLE:
1.Перечень названий атрибутов.
2.Список типов атрибутов
3.Порядок следования компонентов атрибутов в кортеже.
4.Ограничения, касающиеся отдельных атрибутов и/или отношения в целом
(сведения о первичном ключе, ограничения принадлежности значений некоторому допустимому диапазону или множеству).
Составить запись с заголовком и представить ее в графическом виде.
Исходные данные для задачи – 25 вариантов
Вариант Заголовок
0 |
12 |
9
1 |
18 |
|
|
2 |
24 |
|
|
3 |
12 |
|
|
4 |
18 |
|
|
5 |
24 |
|
|
6 |
12 |
|
|
7 |
18 |
|
|
8 |
24 |
|
|
9 |
12 |
|
|
10 |
18 |
|
|
11 |
24 |
|
|
12 |
12 |
|
|
13 |
18 |
|
|
14 |
24 |
|
|
15 |
12 |
|
|
16 |
18 |
|
|
17 |
24 |
|
|
18 |
12 |
|
|
19 |
18 |
|
|
20 |
24 |
|
|
21 |
12 |
|
|
22 |
18 |
|
|
23 |
24 |
|
|
24 |
12 |
|
|
25 |
18 |
|
|
Разбор 0 варианта
Дополнить структуру записи со для отношения Работник заголовком длиной в 12
байт. Первые четыре байта заголовка предназначены для хранения указателя, задающего величину смещения в области файла базы данных, где представлена информация о схеме отношения. Следующие четыре байта представляют целочисленное значение длины записи, а оставшиеся четыре байта – целочисленную величину, определяющую момент времени вставки или обновления кортежа. Теперь длина записи составляет 308 байт.
Структура записи выглядит следующим образом.
10