Файл: Методические указания к выполнению курсовой работы по дисциплине Базы данных.doc
Добавлен: 16.03.2024
Просмотров: 62
Скачиваний: 0
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
теоретические предпосылки выполнения курсовой работы
Анализ предметной области и инфологическое проектирование
Даталогическое (техническое) проектирование
Рабочее (физическое) проектирование
Предпроектный анализ предметной области и инфологическое проектирование
Описание предметной области и определение цели проектирования
Таблица 6
Спецификации связей в иерархии обобщения
Тип связи | Дискрими-натор категорий | Сущность-супертип | Описание сущности-супертипа | Кардиналь-ность связи | Описание связи | Имя сущности-подтипа | Описание сущности-подтипа |
Неполная | тип | Абонент | Содержит информацию об абонентах библиотеки | Is a | Студент как абонент библиотеки. Связь неполная, могут быть и другие категории абонентов | Студент | Студент, являющийся абонентом библиотеки |
Неполная | тип | Абонент | Содержит информацию об абонентах библиотеки | Is a | Сотрудник как абонент библиотеки. Связь неполная, могут быть и другие категории абонентов | Сотрудник | Сотрудник, являющийся абонентом библиотеки |
В разделе «Ограничения ссылочной целостности» следует, с учетом семантических условий (бизнес-правил), действующих в предметной области, для каждой связи указать правила, которые управляют корректирующими запросами как со стороны отцовской сущности, так и со стороны сыновьей:
-
вставка в отцовской; -
обновление в отцовской; -
удаление в отцовской; -
вставка в сыновьей; -
обновление в сыновьей; -
удаление в сыновьей.
Результаты удобно свести в таблицы типа приведенных ниже (табл. 7 и 8). При построении таблиц следует воспользоваться возможностями ERwin для формирования отчетов (по команде Tasks/Generate Reports).
В разделе «Запросы пользователей» должны быть сформулированы на русском языке содержательные запросы, которые могут представлять интерес для потенциальных пользователей учебной базы данных, например такие:
-
Представить список абонентов данной категории. -
Представить все данные об абоненте, заданном его шифром. -
Представить список экземпляров книг, имеющихся в наличии в хранилище, по фамилии автора и названию. -
Представить список абонентов, имеющих на руках книги данного номинала (экземпляры одной и той же книги). -
Представить список книг, взятых и не возвращенных конкретным абонентом.
Даталогическое проектирование
В разделе «Даталогическая модель базы данных» должны быть представлены результаты разработки концептуальной даталогической модели базы данных, выполненной в среде ERwin. Следует обосновать или хотя бы объяснить выбор СУБД, а также привести СУБД-ориентированную ER-диаграмму (Physical Model ERwin [10]) (рис. 8).
Учебная база данных должна быть представлена в виде совокупности взаимосвязанных нормализованных (до нормальной формы Бойса-Кодда) таблиц. В разделе «Спецификации таблиц» должна быть представлена структура каждой таблицы (табл. 9). При построении сводных таблиц следует воспользоваться возможностями ERwin для формирования отчетов (по команде Tasks/Generate Reports).
Таблица 7
Ограничения ссылочной целостности для бинарных связей
Имя связи «отец-сын» | Имя связи «сын-отец» | Тип связи | Null внешнего ключа | Ограничения ссылочной целостности | |||||
Вставка в отцовской | Обновление в отцовской | Удаление в отцовской | Вставка в сыновьей | Обновление в сыновьей | Удаление в сыновьей | ||||
Получил на | | Неиденти-фицирую-щая | Not Null | None Не влияет | Restrict Запретить | Restrict Запретить | Restrict Запретить | Restrict Запретить | None Не влияет |
Пред-ставлена | | Неиденти-фицирую-щая | Not Null | None Не влияет | Restrict Запретить | Restrict Запретить | Restrict Запретить | Restrict Запретить | None Не влияет |
Руководит | Подчи-няется | Неиденти-фицирую-щая | Null | None Не влияет | Set Null Установить Null | Set Null Установить Null | Set Null Установить Null | Set Null Установить Null | None Не влияет |
В ыдал на | | Неиденти-фицирую-щая | Not Null | None Не влияет | Restrict Запретить | Restrict Запретить | Restrict Запретить | Restrict Запретить | None Не влияет |
Выдана на | | Идентифи-цирующая | Not Null | None Не влияет | Restrict Запретить | Restrict Запретить | Restrict Запретить | Restrict Запретить | None Не влияет |
Таблица 8
Ограничения ссылочной целостности для категориальных связей
Тип связи | Сущность-супертип | Имя сущности-подтипа | Ограничения ссылочной целостности | |||||
Вставка в отцовской | Обновление в отцовской | Удаление в отцовской | Вставка в сыновьей | Обновление в сыновьей | Удаление в сыновьей | |||
Неполная | Абонент | Студент | None Не влияет | Cascade Каскадировать | Cascade Каскадировать | Restrict Запретить | Restrict Запретить | None Не влияет |
Неполная | Абонент | Сотрудник | None Не влияет | Cascade Каскадировать | Cascade Каскадировать | Restrict Запретить | Restrict Запретить | None Не влияет |
Рис. 8. Пример СУБД (Access)-ориентированной модели предметной области "Библиотека"
Таблица 9
Структура реляционных таблиц
Имя таблицы | Имя столбца | Домен (тип) | Null-значение | Первичный ключ | Внешний ключ |
Абонемент | что выдано | Text(10) | NOT NULL | Да | Да |
| дата1 | Date/Time | NOT NULL | Да | Нет |
| дата2 | Date/Time | NULL | Нет | Нет |
| кому выдано | Text(10) | NOT NULL | Нет | Да |
| кто выдал | Text(10) | NOT NULL | Нет | Да |
Абонент | шифр | Text(10) | NOT NULL | Да | Нет |
| фио | Text(20) | NOT NULL | Нет | Нет |
| телефон | Text(8) | NULL | Нет | Нет |
| тип | Text(10) | NULL | Нет | Нет |
З арегистрированная книга | номер | Text(10) | NOT NULL | Да | Нет |
| автор | Text(30) | NULL | Нет | Нет |
| название | Text(50) | NULL | Нет | Нет |
| год издания | Integer | NULL | Нет | Нет |
Персонал | код | Text(10) | NOT NULL | Да | Нет |
| фио | Text(20) | NULL | Нет | Нет |
| должность | Text(16) | NULL | Нет | Нет |
| руководитель | Text(10) | NULL | Нет | Да |
Сотрудник | шифр | Text(10) | NOT NULL | Да | Да |
| должность | Text(16) | NULL | Нет | Нет |
| звание | Text(20) | NULL | Нет | Нет |
| степень | Text(8) | NULL | Нет | Нет |
Студент | шифр | Text(10) | NOT NULL | Да | Да |
| специальность | Text(6) | NULL | Нет | Нет |
Хранимая книга | инв_номер | Text(10) | NOT NULL | Да | Нет |
| какой книги экземпляр | Text(10) | NOT NULL | Нет | Да |
| наличие | Yes/Нет | NULL | Нет | Нет |
В разделе «Спецификации связей между таблицами» должна быть представлена структура связей и огрничения ссылочной целостности при манипулировании строками таблиц (табл. 10 и 11).
В разделе «SQL – запросы» должны быть представлены «SQL-скрипты» запросов пользователей, сформулированных ранее на естественном языке.
-
Представить список абонентов данной категории.
SELECT Абонент.*, Сотрудник.должность, Сотрудник.звание, Сотрудник.степень, Студент.специальность
FROM (Абонент LEFT JOIN Сотрудник ON Абонент.шифр = Сотрудник.шифр) LEFT JOIN Студент ON Абонент.шифр = Студент.шифр
WHERE Абонент.тип Like [введи тип абонента]&”*”;
-
Представить все данные об абоненте, заданном его шифром.
SELECT Абонент.*, Сотрудник.должность, Сотрудник.звание, Сотрудник.степень, Студент.специальность
FROM (Абонент LEFT JOIN Сотрудник ON Абонент.шифр = Сотрудник.шифр) LEFT JOIN Студент ON Абонент.шифр = Студент.шифр
WHERE Абонент.шифр = [введи шифр абонента];
-
Представить список экземпляров книг, имеющихся в наличии в хранилище, по фамилии автора и названию.
SELECT Хранимая книга.инв_номер, Хранимая книга.наличие, Зарегистрированная книга.*,
FROM Хранимая книга, Зарегистрированная книга
WHERE Хранимая книга.какой книги экземпляр = Зарегистрированная книга.номер AND Зарегистрированная книга.автор Like ”*”& [введи фамилию автора]&”*” AND Зарегистрированная книга.название Like ”*”& [введи название ниги]&”*” AND Хранимая книга.наличие;
-
Представить список абонентов, имеющих на руках книги данного номинала (экземпляры одной и той же книги).
SELECT Абонент.*
FROM Зарегистрированная книга, Хранимая книга, Абонемент, Абонент
WHERE Зарегистрированная книга.номер = Хранимая книга.какой книги экземпляр AND Хранимая книга.инв_номер = Абонемент.что выдано AND Абонемент.кому выдано = Абонент.шифр AND Зарегистрированная книга.номер = [введите номер книги];
-
Представить список книг, взятых и не возвращенных конкретным абонентом.
SELECT Хранимая книга.*
FROM Хранимая книга, Абонемент, Абонент
WHERE Хранимая книга.инв_номер = Абонемент.что выдано AND Абонемент.кому выдано = Абонент.шифр AND Абонент.шифр = [введите шифр абонента] AND СЕГОДНЯ() Between дата1 AND дата2;
Таблица 10
Структура связей между таблицами