- •Введение
- •Теоретические предпосылки выполнения курсовой работы
- •Анализ предметной области и инфологическое проектирование
- •Даталогическое (техническое) проектирование
- •Рабочее (физическое) проектирование
- •Содержание курсовой работы
- •Предпроектный анализ предметной области и инфологическое проектирование
- •Функциональный аспект
- •Информационный аспект
- •Даталогическое проектирование
- •Рабочее проектирование
- •Оформление курсовой работы
- •Описание предметной области и определение цели проектирования
- •Анализ предметной области и инфологическое проектирование
- •Даталогическое проектирование
- •Рабочее проектирование
- •Библиографический список
- •Библиографический Список
- •620002, Екатеринбург, ул. Мира, 19
Даталогическое проектирование
В разделе «Даталогическая модель базы данных» должны быть представлены результаты разработки концептуальной даталогической модели базы данных, выполненной в среде 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
Структура связей между таблицами
Имя связи |
Имя отцовской таблицы |
Первичный ключ отцовской таблицы |
Имя сыновьей таблицы |
Первичный ключ сыновьей таблицы |
Внешний ключ сыновьей таблицы |
Null внешнего ключа сыновьей таблицы |
Получил на |
Абонент |
шифр |
Абонемент |
что выдано |
кому выдано |
NOT NULL |
|
|
|
|
дата1 |
|
|
Представлена |
Зарегистрированная книга |
номер |
Хранимая книга |
инв_номер |
какой книги экземпляр |
NOT NULL |
Руководит |
Персонал |
код |
Персонал |
код |
руководитель |
NULL |
Выдал на |
|
код |
Абонемент |
что выдано |
кто выдал |
NOT NULL |
|
|
|
|
дата1 |
|
|
Выдана на |
Хранимая книга |
инв_номер |
|
что выдано |
что выдано |
NOT NULL |
|
|
|
|
дата1 |
|
|
Таблица 11
Ограничения ссылочной целостности
Имя связи |
Имя отцовской таблицы |
Имя сыновьей таблицы |
Ограничения ссылочной целостности |
|||||
Вставка в отцовской |
Обновление в отцовской |
Удаление в отцовской |
Вставка в сыновьей |
Обновление в сыновьей |
Удаление в сыновьей |
|||
Получил на |
Абонент |
Абонемент |
None Не влияет |
Restrict Запретить |
Restrict Запретить |
Restrict Запретить |
Restrict Запретить |
None Не влияет |
Представлена |
Зарегистрированная книга |
Хранимая книга |
None Не влияет |
Restrict Запретить |
Restrict Запретить |
Restrict Запретить |
Restrict Запретить |
None Не влияет |
Руководит |
Персонал |
Персонал |
None Не влияет |
Set Null Установить Null |
Set Null Установить Null |
Set Null Установить Null |
Set Null Установить Null |
None Не влияет |
Выдал на |
Персонал |
Абонемент |
None Не влияет |
Restrict Запретить |
Restrict Запретить |
Restrict Запретить |
Restrict Запретить |
None Не влияет |
Выдана на |
Хранимая книга |
Абонемент |
None Не влияет |
Restrict Запретить |
Restrict Запретить |
Restrict Запретить |
Restrict Запретить |
None Не влияет |