Добавил:
Developer Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовой проект.docx
Скачиваний:
0
Добавлен:
28.12.2023
Размер:
212.8 Кб
Скачать

Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации

Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования

«Московский технический университет связи и информатики»

(МТУСИ)

Кафедра: Сетевые информационные технологии и сервисы

Дисциплина: «Технологии разработки приложений в среде СУБД»

Отчёт о практическом задании

«Проектирование концептуальной, логической и физической схемы СУБД»

Выполнили:

Иванов Иван

Группа: МБСТ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

Концептуальная схема базы данных

Разрабатываемая предметная область: университет.

Задача: Выполнение сессии.

Документы:

  1. Допуск к экзамену;

  2. Ведомость для экзамена;

  3. Ведомость о переэкзаменовки.

Единица времени: Сессия.

Сильные сущности: Таким образом, выделим сущности рассматриваемой предметной области для построения логической схемы:

  1. студенты – сущность содержит в себе личную информацию о студенте и номер его студенческого билета;

  2. преподаватели – сущность содержит в себе личную информацию о преподавателе и преподаваемую дисциплину;

Слабые сущности: Выделим слабые сущности рассматриваемой предметной области для построения логической схемы:

  1. группы – содержит информацию именах студентах и имени преподавателя и номер группы;

  2. Допуск к экзамену – содержит информацию о имени студента, предмете и допуске к экзамену;

  3. Ведомость для экзамена – содержит информацию о предмете и оценки студента, и статусе экзамена;

  4. Ведомость о переэкзаменовки – содержит информацию о статусе экзамена и предмете, и оценки студента.

При создание слабых сущностей нужен конвертор, который будет проводить реорганизацию СУБД, к сожалению, в многих СУБД его нет и придется писать его самостоятельно, так что старайтесь сделать сильные сущности

Каноническая форма

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;