
- •1 Обследование предметной области
- •2 Концептуальное проектирование
- •3 Инфологическое проектирование
- •3.1 Модель «сущность-связь»
- •3.2 Классификация связей
- •4 Реляционная модель базы данных
- •4.1 Функциональные зависимости между атрибутами
- •4.2 Выбор ключей
- •4.3 Определение отношений между таблицами
- •4.4 Нормализация отношений
- •5 Даталогическое проектирование
- •5.1 Состав таблиц базы данных
- •5.2 Средства поддержания целостности
- •6 Запросы к базе данных
- •7 Разработка механизмов защиты данных от несанкционированного доступа
- •8 Требования к техническому обеспечению
- •9 Инструкция по использованию бд
- •9.1 Вызов программы
- •9.2 Экранные формы
- •9.3 Описание отчетов
- •Заключение
- •Список используемых источников
- •Приложения
- •Приложение а. Er-диаграмма
- •Приложение б. Экранные формы
- •Приложение в. Запросы
- •Приложение г. Отчеты
5 Даталогическое проектирование
5.1 Состав таблиц базы данных
В этом разделе приводится состав таблиц базы данных «Научно-исследовательская работа». Для каждого поля таблицы указан размер поля (в количестве символов), тип. Для первичных ключей введен запрет неопределенных значений. Для остальных полей возможность запрета неопределенных значений определяется семантикой предметной области.
Таблица 8 - Состав таблицы «Должности»
Наименование атрибутов |
Тип полей |
Размер полей |
Допустимость неопределенных значений |
kod_doljnosti; doljnost. |
integer character |
4 40 |
NOT NULL
|
Таблица 9 - Состав таблицы «Образование»
Наименование атрибутов |
Тип полей |
Размер полей |
Допустимость неопределенных значений |
kod_obrazovania; obrazovanie. |
integer character |
4 40 |
NOT NULL
|
Таблица 10 - Состав таблицы «Формы трудового участия»
Наименование атрибутов |
Тип полей |
Размер полей |
Допустимость неопределенных значений |
kod_f_trud_uchast; forma_trud_uchast. |
integer character |
4 40 |
NOT NULL
|
Таблица 11 - Состав таблицы «Сотрудники»
Наименование атрибутов |
Тип полей |
Размер полей |
Допустимость неопределенных значений |
tab_nom_sotr; fio; inn; kod_doljnosti; uchen_stepen; kod_obrazov; semeinoe_polojen; kolvo_detei; kod_f_trud_uch; god_otchetn; kod_kafedri; shifr_temi. |
integer character character integer character integer character integer integer date integer integer |
4 40 10 4 20 4 20 4 4 8 4 4 |
NOT NULL
|
Таблица 12 - Состав таблицы «Факультеты»
Наименование атрибутов |
Тип полей |
Размер полей |
Допустимость неопределенных значений |
kod_fak; nazv_fakulteta. |
integer character |
4 40 |
NOT NULL
|
Таблица 13 - Состав таблицы «Кафедры»
Наименование атрибутов |
Тип полей |
Размер полей |
Допустимость неопределенных значений |
kod_kaf; nazv_kafedri; kod_fak. |
integer character integer |
4 40 4 |
NOT NULL
|
Таблица 14 - Состав таблицы «Темы»
Наименование атрибутов |
Тип полей |
Размер полей |
Допустимость неопределенных значений |
shifr_temi; nazv_temi; god_objem_fin_tem |
integer character float |
4 40 10 |
NOT NULL
|
5.2 Средства поддержания целостности
Обеспечение целостности базы данных означает выполнение ряда ограничений, соблюдение которых необходимо для поддержания непротиворечивости хранимых данных. Среди ограничений целостности можно выделить ограничения диапазонов значений атрибутов отношений и структурные ограничения на кортежи отношений.
Первый тип ограничений предполагает контроль значений атрибутов отношений.
Структурные отношения фиксируют два требования целостности, которые должны поддерживаться реляционными СУБД: требование целостности сущностей и целостности ссылок. Каждому экземпляру сущности, представленному в отношении, соответствует только один его кортеж. Первое требование состоит в том, что любой кортеж отношения должен быть отличим от любого другого кортежа этого отношения, иными словами, любое отношение должно обладать первичным ключом.
Формулировка второго требования тесно связана с понятием внешнего ключа. Требование целостности по ссылкам состоит в том, что для каждого значения внешнего ключа родительской таблицы должна найтись строка в дочерней таблице с таким же значением первичного ключа.
В Visual Fox Pro поддержка ссылочной целостности выполняется с помощью одноименного Построителя. Чтобы открыть Построитель ссылочной целостности, достаточно выполнить следующее:
- Открыть БД с таблицами, для которых необходимо установить ссылочную целостность;
- В контекстном меню Конструктора БД задать команду Referential Integrity (ссылочная целостность), что и приведет к открытию окна Построитель ссылочной целостности данных.
В окне Построителя перечислены все постоянные связи между таблицами БД Подписка. Информация по каждой связи размещена в отдельной строке. Первые два столбца содержат имена родительских и дочерних таблиц. Следующие три столбца содержат правила поддержания ссылочной целостности в случае редактирования, удаления и добавления записей соответственно. Изначально все правила содержат Ignore, но они определяются для каждой связи и каждой из трех перечисленных операций. Последние два столбца содержат индексы (теги) родительской и дочерней таблиц, по которым осуществляется связь.
В диалоговом окне Построителя ссылочной целостности коррективам могут быть подвергнуты только столбцы с правилами. Задача состоит в том, чтобы для каждой связи определить правила поддержания ссылочной целостности при выполнении каждой из трех возможных операций с данными этих таблиц.
Таблица 15 - Средства поддержания целостности по ссылкам при модификации
Наименование |
Описание |
Cascade |
При изменении первичного ключа или ключа-кандидата в родительской таблице автоматически осуществляется каскадное изменение всех соответствующих значений в дочерней таблице. |
Restrict |
Не позволяет изменять значения полей первичного ключа или ключа-кандидата в родительской таблице, если в дочерней таблице имеется хотя бы одна запись, содержащая ссылку на изменяемую запись. |
Ignore |
Позволяет изменять значения полей первичного ключа или ключа-кандидата в родительской таблице независимо от существования связанных записей в дочерней таблице. Целостность данных при этом не поддерживается |
При удалении записи из родительской таблицы возможны следующие варианты действий:
Таблица 16 - Средства поддержания целостности по ссылкам при удалении
Наименование |
Описание |
Cascade |
При удалении первичного ключа или ключа-кандидата в родительской таблице автоматически осуществляется каскадное удаление всех соответствующих значений в дочерней таблице. |
Restrict |
Не позволяет удалять значения полей первичного ключа или ключа-кандидата в родительской таблице, если в дочерней таблице имеется хотя бы одна запись, содержащая ссылку на изменяемую запись. При попытке удаления возникает ошибка, которую можно обработать программно. |
Ignore |
Позволяет удалять значения полей первичного ключа или ключа-кандидата в родительской таблице независимо от существования связанных записей в дочерней таблице. Целостность данных при этом не поддерживается. |
При добавлении новой записи в дочернюю таблицу или редактировании в ней существующей записи.
Таблица 17 - Средства поддержания целостности по ссылкам при вводе
Наименование |
Описание |
Restrict |
Не позволяет вводить запись, если значение индексного выражения дочерней таблицы не соответствует одной из записей родительской таблицы. |
Ignore |
При вводе данных в дочернюю таблицу не анализируется значение индексного выражения. Целостность данных при этом не поддерживается. |
В данном курсовом проекте ссылочная целостность формировалось следующим образом:
- Изменение значений ключевых полей родительских таблиц. Таблица «сотрудники» является дочерней по отношению к таблицам «должности», «образование», «формы трудового участия» и «темы», а таблица «кафедры» является дочерней по отношению к таблице «факультеты» (рисунок 1). Соответствующие поля являются ключевыми. При необходимости такие изменения нужны в родительских таблицах. В этом случае они синхронно (каскадно) изменяются в дочерних таблицах.
- Удаление записей в родительских таблицах. Запретим удаление записей в родительских таблицах, имеющих в дочерних таблицах записи с совпадающими значениями внешних ключевых полей.
- Изменение (добавление) записей в дочерней таблице. Запретим ввод записей в дочерней таблице, не соответствующих одной из записей в родительской таблице [2].
Рисунок 1 – Таблица «Средства поддержания целостности»