- •Содержание
- •Концептуальная схема базы данных
- •Каноническая форма
- •Логическая схема базы данных
- •Физическая схема база данных
- •Метод доступа
- •Параметры запуска ядра субд MySql
- •Innodb write io threads 4
- •Защита данных в бд
- •Программа для взаимодействия
- •Программа для взаимодействия
- •Коды возврата
- •Restrictions and defaults
- •Реализация взаимодействия с бд
- •Функции
- •Контрольный пример
- •Программный код
Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
«Московский технический университет связи и информатики»
(МТУСИ)
Кафедра: Сетевые информационные технологии и сервисы
Дисциплина: «Технологии разработки приложений в среде СУБД»
Отчёт о практическом задании
«Проектирование концептуальной, логической и физической схемы СУБД»
Выполнили:
Иванов Иван
Группа: МБСТ0000
Проверил: доцент Беленькая Марина Наумовна
______________________________
Москва 2022
Содержание
Y
Содержание 2
Концептуальная схема базы данных 3
Логическая схема базы данных 4
Физическая схема база данных 9
1. Метод доступа 9
2. Параметры запуска ядра СУБД MySQL 11
Защита данных в БД 13
Программа для взаимодействия 13
Программа для взаимодействия 13
Коды возврата 14
Restrictions and defaults 15
Схема 16
Реализация взаимодействия с БД 16
Функции 17
Контрольный пример 17
Программный код 18
Концептуальная схема базы данных
Разрабатываемая предметная область: университет.
Задача: Выполнение сессии.
Документы:
Допуск к экзамену;
Ведомость для экзамена;
Ведомость о переэкзаменовки.
Единица времени: Сессия.
Сильные сущности: Таким образом, выделим сущности рассматриваемой предметной области для построения логической схемы:
студенты – сущность содержит в себе личную информацию о студенте и номер его студенческого билета;
преподаватели – сущность содержит в себе личную информацию о преподавателе и преподаваемую дисциплину;
Слабые сущности: Выделим слабые сущности рассматриваемой предметной области для построения логической схемы:
группы – содержит информацию именах студентах и имени преподавателя и номер группы;
Допуск к экзамену – содержит информацию о имени студента, предмете и допуске к экзамену;
Ведомость для экзамена – содержит информацию о предмете и оценки студента, и статусе экзамена;
Ведомость о переэкзаменовки – содержит информацию о статусе экзамена и предмете, и оценки студента.
При создание слабых сущностей нужен конвертор, который будет проводить реорганизацию СУБД, к сожалению, в многих СУБД его нет и придется писать его самостоятельно, так что старайтесь сделать сильные сущности
Каноническая форма
Students (id, student_name, birthday, student’s_bilet)
Teachers (id, teacher_name, teacher’s_activity)
Groups (id, student_name, teacher_name, groups_name)
Allowance (id, student_name, object, allowance)
Examination (id, student_name, object, assessment, exam_status, date_exam)
Re_examination (id, student_name, exam_status, object, assessment, date_re_exam)
При проектирование канонической формы мы получили 3 Нормальную форму, нет составного ключа используется первичный ключ.
Логическая схема базы данных
Целостность
Обеспечение пяти видов целостностей отмечены цветом:
1. Целостность сущностей – это ограничение, согласно которому в базовом отношении ни один атрибут первичного ключа не может иметь пустых или неопределенных значений типа NULL. Сущностная целостность определяет строку как уникальную сущность в конкретной таблице. Она обеспечивает целостность столбцов идентификаторов или первичного ключа таблицы с помощью индексов и ограничений UNIQUE или PRIMARY KEY.
2. Целостность данных – это когда для некоторых столбцов требуется наличие в каждой строке таблицы конкретного и допустимого значения, отличного от неопределенного значения (или значения NULL).
3. Доменная целостность – это достоверность записей в конкретном столбце. Целостность домена гарантирует, что все значения некоторого столбца принадлежат множеству допустимых значений. (Под доменом понимается множество возможных значений, которые принимаются данные хранящиеся в данном столбце. В частичности данного типа, но часто домен является дополнительным ограничением).
4. Ссылочная целостность – Если в отношении существует внешний ключ, то значение внешнего ключа либо соответствует значению потенциального ключа некоторого кортежа в его базовом отношении, либо внешний ключ полностью состоит из значений NULL. (ON UPDATE CASCADE ON DELETE RESTRICT).
5. Корпоративная целостность – позволяет определять бизнес-правила, не входящие ни в одну из категорий целостности. Поддержку корпоративной целостности обеспечивают все остальные категории целостности: любые типы ограничений уровня столбца и уровня таблицы в инструкции CREATE TABLE, хранимых процедура и триггерах.
СREATE database record_card
CREATE TABLE ‘record_card’. ‘students’ (
‘id’ int(20) NOT NULL auto_increment,
‘student_name’ text(50) NOT NULL,
‘birthday’ date NOT NULL,
‘student_bilet’ int(20) NOT NULL,
CONSTRAINT CHK_students CHECK (student_bilet > 10),
PRIMARY KEY (‘id’),
FOREIGN KEY (student_name) REFERENCES groups(student_name) ON UPDATE CASCADE ON DELETE RESTRICT) ENGINE = INNODB DEFAULT CHARSET = koi8r;
CREATE INDEX idx_students_student_name USING BTREE ON students (student_name);
CREATE INDEX idx_students_ student_bilet USING BTREE ON students (student_bilet);
CREATE TABLE ‘record_card’. ‘teachers’ (
‘id’ int(20) NOT NULL auto_increment,
‘teacher_name’ text(50) NOT NULL,
‘teacher_activity’ text(30) NOT NULL,
PRIMARY KEY (‘id’),
FOREIGN KEY (teacher_name) REFERENCES groups(teacher_name) ON UPDATE CASCADE ON DELETE RESTRICT) ENGINE = INNODB DEFAULT CHARSET = koi8r;
CREATE INDEX idx_teachers_teacher_name USING BTREE ON teachers (teacher_name);
CREATE INDEX idx_teachers_teacher_activity USING BTREE ON teachers (teacher_activity);
CREATE TABLE ‘record_card’. ‘groups’ (
‘id’ int(20) NOT NULL auto_increment,
‘student_name’ text(80) NOT NULL,
‘teacher_name’ text(80) NOT NULL,
‘group_name’ int(30) NOT NULL,
CONSTRAINT CHK_ groups CHECK (group_name > 3),
PRIMARY KEY (‘id’),
FOREIGN KEY (student_name) REFERENCES allowance (student_name) ON UPDATE CASCADE ON DELETE RESTRICT) ENGINE = INNODB DEFAULT CHARSET = koi8r;
CREATE INDEX idx_groups_group_name USING BTREE ON groups (group_name);
CREATE TABLE ‘record_card’. ‘allowance’ (
‘id’ int(20) NOT NULL auto_increment,
‘student_name’ text(80) NOT NULL,
‘object’ text(50) NOT NULL,
‘allowance’ tinyint(1) NOT NULL,
PRIMARY KEY (‘id’),
FOREIGN KEY (object) REFERENCES examination (object), re_examination(object) ON UPDATE CASCADE ON DELETE RESTRICT) ENGINE = INNODB DEFAULT CHARSET = koi8r;
FOREIGN KEY (student_name) REFERENCES examination (student_name), re_examination (student_name) ON UPDATE CASCADE ON DELETE RESTRICT) ENGINE = INNODB DEFAULT CHARSET = koi8r;
CREATE INDEX idx_allowance_allowance USING BTREE ON allowance (allowance);
CREATE INDEX idx_allowance_object USING BTREE ON allowance (object);
CREATE TABLE ‘record_card’. ‘examination’ (
‘id’ int(20) NOT NULL auto_increment,
‘student_name’ text(80) NOT NULL,
‘object’ text(50) NOT NULL,
‘assessment’ int(4) NOT NULL,
CONSTRAINT CHK_examination CHECK (assessment > 0),
‘exam_status’ tinyint(1) NOT NULL,
‘date_exam’ date NOT NULL,
PRIMARY KEY (‘id’),
FOREIGN KEY (exam_status) REFERENCES re_examination (exam_status) ON UPDATE CASCADE ON DELETE RESTRICT) ENGINE = INNODB DEFAULT CHARSET = koi8r;
CREATE INDEX idx_examination_assessment USING BTREE ON examination (assessment);
CREATE INDEX idx_examination_exam_status USING BTREE ON examination (exam_status);
CREATE INDEX idx_examination_date_exam USING BTREE ON examination (date_exam);
CREATE TABLE ‘record_card’. ‘re_examination’ (
‘id’ int(20) NOT NULL auto_increment,
‘student_name’ text(80) NOT NULL,
‘exam_status’ tinyint(1) NOT NULL,
‘object’ text(50) NOT NULL,
‘assessment’ int(4) NOT NULL,
CONSTRAINT CHK_re_examination CHECK (assessment > 0),
‘date_re_exam’ date NOT NULL,
PRIMARY KEY (‘id’),
FOREIGN KEY (exam_status) REFERENCES re_examination (exam_status) ON UPDATE CASCADE ON DELETE RESTRICT) ENGINE = INNODB DEFAULT CHARSET = koi8r;
CREATE INDEX idx_re_examination_assessment USING BTREE ON re_examination (assessment);
CREATE INDEX idx_re_examination_date_re_exam USING BTREE ON re_examination (date_re_exam);
MAX_ROWS = 20000;