Разработка СУБД "Японские автомобили"
Курсовая работа, 02 Декабря 2010, автор: пользователь скрыл имя
Краткое описание
База данных определяется как совокупность взаимосвязанных данных, характеризующихся возможностью использования для большого количества приложений, возможностью быстрого получения и модификации необходимой информации, минимальной избыточностью информации, независимостью от прикладных программ, общим управляемым способом поиска.
Оглавление
Введение………………………………………………………………………………стр. 3
1 Обследование предметной области………………………………………………стр. 4
2 Концептуальное проектирование. ……………………………………………….стр. 5
2.1 Перечень сущностей (обосновать список). …………………………….стр. 5
2.2 Перечень атрибутов. ……………………………………………………..стр. 5
3 Инфологическое проектирование БД. …………………………………………...стр. 7
3.1 Модель “сущность-связь”.……………………………………………….стр. 7
3.2 Классификация связей. …………………………………………………..стр. 9
4 Реляционная модель БД. …………………………………………………..стр. 9
4.1 Функциональные зависимости между атрибутами. …………………...стр. 9
4.2 Выбор ключей. ………………………………………………………….стр. 11
4.3 Нормализация отношений. ……………………………………………..стр. 13
5 Даталогическое проектирование БД. …………………………………………..стр. 14
5.1 Состав таблиц БД. ……………………………………………………….стр. 14
5.2 Поддержание целостности. ……………………………………………..стр. 16
6 Запросы к БД. …………………………………………………………………….стр. 17
7 Разработка механизмов защиты данных от несанкционированного доступа...стр.19
8 Требования к техническому обеспечению. …………………………………….стр. 20
9 Инструкция по использованию БД. …………………………………………….стр. 21
9.1 Вызов программы. ……………………………………………………….стр. 21
9.2 Описание отчетов. ……………………………………………………….стр. 27
Заключение………………………………………………………………………….стр. 28
Список использованной литературы………………………………………………стр. 29
Файлы: 1 файл
Теоретическая часть.docx
— 1.59 Мб (Скачать)| Наименование атрибутов | Типы полей | Размер полей | Ограничения |
| код_кл | Integer | 4 | NOT NULL |
| наимен | Character | 20 | |
| адрес | Character | 30 | |
| тел | Character | 12 | |
| факс | Character | 12 | |
| e_mail | Character | 20 |
Таблица
5.1.2 «клиенты»
| Наименование атрибутов | Типы полей | Размер полей | Ограничения |
| код_пост | Integer | 4 | NOT NULL |
| наимен | Character | 20 | |
| адрес | Character | 30 | |
| тел | Character | 12 | |
| факс | Character | 12 | |
| e_mail | Character | 20 |
Таблица
5.1.3 «поставщ»
| Наименование атрибутов | Типы полей | Размер полей | Ограничения |
| код_опер_реал | Integer | 4 | NOT NULL |
| дата | Data | 8 | |
| Номер_двиг | Integer | 10 | NOT NULL |
| код_кл | Character | 4 | NOT NULL |
Таблица
5.1.4 «журнал_реализ»
| Наименование атрибутов | Типы полей | Размер полей | Ограничения |
| код_опер_п | Integer | 4 | NOT NULL |
| дата | Data | 8 | |
| номер_двиг | Integer | 4 | NOT NULL |
| Код_пост | Integer | 4 | NOT NULL |
Таблица
5.1.5 «журнал_постав»
- Поддержание целостности
Целостность данных является одним из самых важных требований, предъявляемых к базам данных. Целостность (от англ. integrity – нетронутость, неприкосновенность, сохранность, целостность) – понимается как правильность данных в любой момент времени. Но эта цель может быть достигнута лишь в определенных пределах: СУБД не может контролировать правильность каждого отдельного значения, вводимого в базу данных (хотя каждое значение можно проверить на правдоподобность). Поддержание целостности базы данных может рассматриваться как защита данных от неверных изменений. Современные СУБД имеют ряд средств для обеспечения поддержки целостности (так же, как и средств обеспечения поддержания безопасности).
Выделяют три группы правил целостности:
- целостность по сущностям;
- целостность по ссылкам;
- целостность, определяемая пользователем.
Для
определения условий
- Модификация: Cascade – при изменении значений полей первичного ключа в родительской таблице автоматически осуществляется каскадное изменения всех соответствующих значений в дочерней таблице (необходимо для сохранения связи между определенными записями и возможности их изменения);
- Удаление: Restrict – запрещает удаление значений полей первичного ключа в родительской таблице, если в дочерней таблице имеются связанные записи (необходимо для сохранения сведений об объектах, которые являются атрибутами других сущностей);
- Добавление: Ignore – разрешается вставка записей.
В
данном курсовом проекте были выставлены
условия целостности по ссылкам,
представленные на рис. 5.2.1.
Рис.
5.2.1 Построитель ссылочной
- авто : журнал_реализ
- При модификации cascade
При изменении данных в родительской таблице они изменяются и в дочерней.
- При удалении cascade
При удалении данных из родительской таблицы они удаляются и в дочерней.
- При вводе данных ignore
Допустима вставка.
- авто : журнал_постав
- При модификации cascade
При изменении данных в родительской таблице они изменяются и в дочерней.
- При удалении cascade
При удалении данных из родительской таблицы они удаляются и в дочерней.
- При вводе данных ignore
Допустима вставка.
- клиенты: журнал_реализ
- При модификации cascade
При изменении данных в родительской таблице они изменяются и в дочерней.
- При удалении cascade
При удалении данных из родительской таблицы они удаляются и в дочерней.
- При вводе данных ignore
Допустима вставка.
- поставщ: журнал_постав
- При модификации cascade
При изменении данных в родительской таблице они изменяются и в дочерней.
- При удалении cascade
При удалении данных из родительской таблицы они удаляются и в дочерней.
- При вводе данных ignore.
Целостность по сущностям ограничивает возможные значения ключей:
- первичный ключ не может принимать неопределенные значения
- не может быть разных строк с одинаковым первичным ключом.
В данном курсовом проекте была создана следующая целостность, определяемая пользователем:
- Ограничение на введенную дата: при попытке пользователя ввести дату, которая еще не наступила, будет выведено сообщение: "дата не может быть из будущего!"
- Ограничения на введенную цену: при попытке ввести отрицательную стоимость товара, либо стоимость, равную нулю, будет выведено сообщение: "цена автомобиля не должна быть меньше или равна нулю".
- Запросы к БД
Запрос представляет команду, которые обращаются к базе данных и сообщает ей, чтобы она отобразила определенную информацию из таблиц.
В данной работе все запросы написаны с помощью языка SQL. Которые состоят из одиночной команды SELECT с достаточно простой структурой, однако, путем ее использования можно выполнить сложную обработку данных.
В разработанной базе данных предусмотрены следующие запросы:
Запросы на языке SQL
- Безусловная выборка значений
SELECT *FROM " авто "
- Выборка вычисляемых значений
if thisform.optiongroup1.option1.
SELECT MAX((цена)) FROM авто
endif
if thisform.optiongroup1.option2.
SELECT MIN((цена)) FROM авто
endif
if thisform.optiongroup1.option3.
SELECT AVG((цена)) FROM авто
ENDIF
- Выборка с использованием оператора BETWEEN
thisform.grid1.recordsource=0
SELECT * FROM "авто";
into cursor temp;
WHERE цена between VAL(ThisForm.Text2.value) AND VAL(ThisForm.Text3.value)
thisform.grid1.recordsource = "temp"
ThisForm.text2.value=""
ThisForm.text3.value=""
- Выборка с использованием оператора IN
thisform.grid1.recordsource = 0
SELECT * FROM "журнал_постав"into cursor temp;
WHERE код_пост IN (VAL(ThisForm.Text3.value))
thisform.grid1.recordsource = "temp"
ThisForm.text3.value=""
- Выборка с использованием шаблонов
thisform.grid1.recordsource=0
SELECT *FROM "авто"
WHERE модель=alltrim(thisform.text5.
into cursor temp
thisform.grid1.recordsource="
ThisForm.text5.value=""
- Запрос по дате
thisform.grid1.recordsource=0
PUBLIC a, b
a = ALLTRIM(thisform.combo1.Value)
b = ALLTRIM(thisform.combo2.value)
if(a=" " and b=" ")
MESSAGEBOX("Введите дату для поиска", 0+48+0, " ")
ELSE
SELECT журнал_постав.код_опер_пост, журнал_постав.дата, журнал_постав.номер_двиг, журнал_постав.код_пост from "журнал_постав" into cursor temp;
WHERE дата between CTOD(a) AND CTOD(b)
thisform.grid1.recordsource = "temp"
ThisForm.combo1.value=""
ThisForm.combo2.value=""
endif;
- Использование квантора существования в запросах
thisform.grid1.recordsource=0
SELECT авто.модель, авто.цвет, авто.цена, авто.номер_двиг FROM "авто" into cursor temp;
WHERE EXISTS(SELECT *FROM "журнал_постав"
WHERE журнал_постав.номер_двиг=авто.
thisform.grid1.recordsource="
ThisForm.text4.value=""
- выборка данных из связанных таблиц
thisform.grid1.recordsource = 0
SELECT Клиенты.наимен,
Клиенты.адрес, Клиенты.тел,
FROM ;
data1!клиенты ;
INNER JOIN data1!журнал_реализ ;
ON Клиенты.код_кл = Журнал_реализ.код_кл;
into cursor temp;
WHERE Журнал_реализ.код_опер_реал = VAL(ThisForm.text6.value)