Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
diplom (1).docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

3.3 Проектирование базы данных

Для физической реализации базы данных использовалась SQL Server 2008R. Эта СУБД была выбрана по множеству причин:

  1. высокая надежность;

  2. минимальные требования к памяти и дисковому пространству;

  3. поддержка данной СУБД распределенных и реляционных баз данных;

  4. свободное распространение СУБД в открытых кодах;

  5. наличие реализации СУБД для операционной системы Windows.

Полный листинг кода создания базы данных на языке SQL находится в приложении В. Поэтапно рассмотрим физическую реализацию базы данных. Зададим девять таблиц базы данных и русскую кодировку символов WIN1251. Создаем пустую базу данных от лица пользователя SYSDBA со стандартным паролем «master». Размер страниц базы данных установлен равным размеру кластера в файловой системе NTFS 4048байт. Для удаления из строк пробелов и преобразования строк к верхнему регистру были декларированы внешние функции Trim и Upper. Они реализованы на языке программирования Delphi и физически расположены в динамически связуемой библиотеке (DDL) Str.dll.

Каждая из полученных сущностей должна быть представлена базовой таблицей:

Таблица Пациенты – информация о пациенах, состоящая из следующих полей:

  1. Личный номер – числовое автоинкрементное поле, содержащее номер пациента и являющееся ключевым полем отношения;

  2. Фамилия – строковое поле, содержащее фамилию пациента, являющееся уникальным;

  3. Имя – строковое поле, содержащее имя пациента, являющееся уникальным;

  4. Отчество - строковое поле, содержащее отчество пациента, являющееся уникальным;

  5. Дата рождения – строковое поле, содержащее дату рождения пациент, являющееся уникальным;

  6. Дата регистрации – строковое поле, содержащее дату регистрации пациента, являющееся уникальным полем;

  7. Время регистрации - числовое поле содержащее время регистрации в таблице регистрации пациентов;

  8. Серия, № паспорта – строковое поле, содержащее серию и номер паспорта пациента, являющееся уникальным;

  9. Регион проживания - строковое поле, содержащие регион проживания пациента, являющееся уникальным;

  10. Улица – сроковое поле, содержащие название улицы пациента, являющееся уникальным;

  11. № дома, № квартиры – строковое поле, содержащие № дома, № квартиры пациента, являющееся уникальным;

Таблица Дополнительная информация – информация о студентах состоящая из следующих полей:

  1. Личный номер – числовое автоинкрементное поле, содержащее номер студента и являющееся ключевым полем отношения;

  2. Форма обучения – строковое поле, содержащее название формы обучения, являющееся уникальным полем;

  3. Закрытие сессий в срок – строковое поле, содержащее информацию об закрытие сессий, являющееся уникальным полем;

  4. Наличие задолжностей – строковое поле, содержащее информацию о наличии задолжностей у определенного студента, является уникальным полем.

Таблица Группы - информация о группах, которая состоит из следующих полей:

  1. Код группы - числовое автоинкрементное поле, содержащее номер групп и являющееся уникальным полем;

  2. Группы - строковое поле, содержащее название группы, является уникальным полем;

  3. Курс - строковое поле, содержащее код группы, является уникальным полем.

Таблица Преподаватель – информация о преподавателях, состоящая из следующих полей:

  1. Код преподавателя – числовое автоинкрементное поле, содержащее номер преподавателя и являющееся ключевым полем;

  2. Фамилия – строковое поле, содержащее фамилию преподавателя, являющееся уникальным;

  3. Имя – строковое поле, содержащее имя преподавателя, являющееся уникальным;

  4. Отчество - строковое поле, содержащее отчество преподавателя, являющееся уникальным;

  5. Пол – строковое поле, содержащее пол преподавателя, являющееся уникальным полем;

  6. Дата рождения – строковое поле, содержащее дату рождения преподавателя, являющееся уникальным;

  7. Код предмета – числовое поле содержащее код предмета в таблице Предметы;

  8. Категория – строковое поле, содержащее категорию преподавателей, являющееся уникальным полем;

  9. Стаж – строковое поле, содержащее информацию о стаже, являющееся уникальным полем;

  10. Дата трудоустройства – строковое поле, содержащее информацию о дате трудоустройства преподавателей, являющееся уникальным полем.

Таблица Предметы – информация о предметах, состоящая из следующих полей:

  1. Код предмета - числовое автоинкрементное поле, содержащее код предмета и являющееся ключевым полем;

  2. Предметы – строковое поле, содержащее название предметов и являющееся уникальным полем.

Таблица Успеваемость – информация об успеваемости студентов, которая состоит из следующих полей:

  1. Личный номер – числовое автоинкрементное поле, содержащее личный номер студента и являющееся уникальным полем;

  2. Дата – строковое поле, содержащее информацию о дате когда была поставлена оценка, являющееся уникальным полем;

  3. Код предмета – числовое поле, содержащее код предмета в таблице Предметы;

  4. Оценка – строковое поле, содержащее информацию об оценках и являющееся уникальным полем.

Таблица Электронный журнал – информацию выставленных оценках студентам, состоящая из следующих полей:

  1. ID – числовое автоинкрементное поле, содержащее номер электронного журнала и являющееся уникальным полем;

  2. Код группы – числовое поле, содержащее код группы в таблице Группы;

  3. Фамилия – строковое поле, содержащее фамилию студента, являющееся уникальным;

  4. Имя – строковое поле, содержащее имя студента, являющееся уникальным;

  5. Код предмета – числовое поле, содержащее код предмета в таблице Предметы;

  6. Оценка – строковое поле, содержащее информацию об оценках и являющееся уникальным полем.

Таблица Расписание групп – информация о группах и курсах, состоящая из следующих полей:

  1. ID – числовое автоинкрементное поле, содержащее номер группы и являющееся ключевым полем отношения;

  2. Группы – строковое поле, содержащее название групп и являющееся уникальным полем;

  3. Курс – строковое поле, содержащее информацию о курсе и являющееся уникальным полем.

Таблица ID-групп – информация о расписании, которая состоит из следующих полей:

  1. ID - числовое автоинкрементное поле, содержащее код расписания и являющееся ключевым полем отношения;

  2. День недели – строковое поле, содержащее информацию о днях недели и являющееся уникальным полем;

  3. Пары – строковое поле, содержащее номер пары и являющееся уникальным полем;

  4. Предмет – строковое поле, содержащее название предмета, являющееся уникальным полем.

Таблица 1 - Студенты

Имя столбца

Тип данных

Разрешение значения NULL

Личный номер

Int

Фамилия

Varchar(60)

Ограничение NOT Null

Имя

Varchar(60)

Отчество

Varchar(60)

Дата рождения

Date

Специальность

Varchar(60)

ID

Int

Группы

Varchar(60)

Курс

Varchar(60)

Таблица 2 - Дополнительная информация

Имя столбца

Тип данных

Разрешение значения NULL

Личный номер

Int

Форма обучения

Varchar(60)

Ограничение NOT Null

Закрытие сессий в срок

Varchar(60)

Наличие задолжностей

Varchar(60)

Таблица 3 - Дополнительная информация

Имя столбца

Тип данных

Разрешение значения NULL

Код группы

Int

Группа

Varchar(60)

Ограничение NOT Null

Курс

Int

Ограничение NOT Null

Таблица 4 - Предметы

Имя столбца

Тип данных

Разрешение значения NULL

Код предмета

Int

Предмет

Varchar(60)

Ограничение NOT Null

Таблица 5 - Успеваемость

Имя столбца

Тип данных

Разрешение значения NULL

Личный номер

Int

Дата

Varchar(60)

Ограничение NOT Null

Код предмета

int

Оценка

int

Таблица 6 - Преподаватель

Имя столбца

Тип данных

Разрешение значения NULL

Код преподавателя

Int

Фамилия

Varchar(60)

Ограничение NOT Null

Имя

Varchar(60)

Отчество

Varchar(60)

Пол

Varchar(60)

Дата рождения

Date

Код предмета

int

Категория

Varchar(60)

Стаж

Varchar(60)

Дата трудоустройства

int

Таблица 7 - Электронный журнал

Имя столбца

Тип данных

Разрешение значения NULL

ID

Int

Код группы

Int

Ограничение NOT Null

Фамилия

Varchar(60)

Ограничение NOT Null

Имя

Varchar(60)

Код предмета

Int

Ограничение NOT Null

Оценка

Int

Ограничение NOT Null

Таблица 8 - Расписание групп

Имя столбца

Тип данных

Разрешение значения NULL

ID

Int

Группы

Varchar(60)

Ограничение NOT Null

Курс

Varchar(60)

Ограничение NOT Null

Таблица 9 - ID-групп

Имя столбца

Тип данных

Разрешение значения NULL

ID

Int

День недели

Varchar(60)

Ограничение NOT Null

Пары

Varchar(60)

Ограничение NOT Null

Предмет

Varchar(60)

Ограничение NOT Null

Для изменения, добавления и удаления записей из таблиц базы данных и других целей предусмотрены ряд хранимых процедур:

  • DeleteBook – удаление заданного источника;

  • SearchBook – поиск источника по заданным атрибутам с учётом регистра символов;

  • UpdateLanguage – изменение языка источника;

  • InsertBook – вставка нового источника;

  • UpdateTitle – изменение названия источника;

  • DeleteAll – очистка всей базы данных и обнуление генераторов;

  • IsWriter – проверка прав пользователя на изменение базы данных;

  • UpdateBook – изменение атрибутов источника.

Для управления безопасностью базы данных созданы три роли:

  • Admin – имеет права на любые действия с базой данной (изменение, чтение данных и структуры);

  • Writer – имеет права на изменение и чтение данных базы данных, но не имеет прав на изменение структуры БД;

  • Reader – имеет только право на чтение данных БД.

Эти все роли наделены соответствующими правами на соответствующие таблицы и хранимые процедуры.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]