
- •«Разработка информационной системы, использующую базу данных»
- •Задание
- •Разработка структуры бд
- •Анализ предметной области и определение сущностей
- •Структура сущностей
- •Первая нормальная форма
- •Вторая нормальная форма
- •Структура сущностей
- •Произведем анализ смысловых зависимостей
- •Третья нормальная форма
- •Проектирование таблиц
- •Реализация серверной части Создание таблиц.
- •Работа с данными
- •Заполнение данными таблицы Izgotovitel_gv
- •Заполнение данными таблицы Avtomobil_gv
- •Заполнение данными таблицы Prodaja_gv
- •Заполнение данными таблицы Harakt_gv
- •Заполнение данными таблицы Pokupatel_gv
- •Содержимое таблиц после заполнения
- •Разработка серверной части Проектирование общих принципов организации интерфейса
- •Проектирование отдельных графических форм Главная форма
- •Форма Покупатель
- •Форма Добавления автомобиля
- •Форма Продажи
- •Форма Автомобили
Структура сущностей
Произведем анализ смысловых зависимостей
В таблице «Покупатели» поле «Паспортные данные» определяет атрибуты покупателя, такие как «Фамилия», «Адрес», «Телефон», так как покупателю с такими паспортными данными могут соответствовать только такие параметры.
Как мы видим между таблицами «Автомобиль» и «Продажа» связь один к одному, следовательно, по правилам нормализации их необходимо объединить в одну таблицу. Теперь связь между таблица «Продажа» и «Автомобиль» один ко многим, так как автомобиль определенной модели мы можем продать несколько раз, но каждая продажа соответствует только одной модели.
В таблице «Характеристики» поле «№кузова» определяет атрибуты автомобиля, такие как «Марка», «Объем двигателя», «Мощность» и другие, так как автомобилю определенной марки\модели соответствуют только определенные характеристики.
В таблице «Изготовитель» поле «код фирмы» определяет такие атрибуты, как «Фирма» и «Страна»
Третья нормальная форма
Третья нормальная форма требует, чтобы таблицы были приведены ко второй нормальной форме, и чтобы между не ключевыми полями таблицы не было транзитивных зависимостей, то есть, чтобы значение любого поля, не входящего в состав первичного ключа не зависело от другого поля, не входящего в первичный ключ.
В нашем случае, таблицы удовлетворяют выше перечисленным требованиям, и это означает, что все таблицы соответствуют третьей нормальной форме.
Проектирование таблиц
Итак, в результате нормализации получились следующие таблицы: «Покупатель», «Продажа», «Автомобиль», «Изготовитель», «Характеристики».
Разработаем структуру для каждой из этих таблиц. Определим типы данных полей, их размерность и названия.
Таблица «Изготовитель»
Название таблицы «Izgotovitel_GV»
Поле |
Название |
Тип |
Правила целостности |
Код фирмы |
KodFirmi |
number(10) |
Primary key |
Фирма |
Firma |
varchar2(50) |
Not null |
Страна |
Strana_izg |
varchar2(50) |
Not null |
Поле KodFirmi является первичным ключом.
Поле Firma содержит название фирмы, длинны не менее 50 символов.
Поле Strana_izg содержит название страны, длинны не менее 50 символов.
Используемые типы данных:
VARCHAR2 (L) - символьные данные фиксированной длины L байт;
NUMBER (a, b) – числовое значение с общим числом цифр a, и с количеством цифр после запятой b.
Таблица «Автомобиль»
Название таблицы «Avtomobil_GV»
Поле |
Название |
Тип |
Правила целостности |
№двигателя |
n_dvig |
number(10) |
Primary key |
Продажи |
n_prodaji |
number(10) |
Not null |
Код фирмы |
KodFirm |
number(10) |
Not null |
Таблица «Продажа»
Название таблицы «Prodaja_GV»
Поле |
Название |
Тип |
Правила целостности |
№продажи |
n_prodaji |
number(10) |
Primary key |
№двигателя |
n_dvig |
number(10) |
n_dvig>0 |
Дата |
data |
date |
Not null |
Количество |
kol |
number(10) |
Not null |
Паспортные данные |
pasport_dann |
number(10) |
Not null |
Используемые типа данных:
DATE - хранение даты и времени.
Таблица «Характеристики»
Название таблицы «Harakt_GV»
Поле |
Название |
Тип |
Правила целостности |
№кузова |
n_kuzov |
number(10) |
Primary key |
Цвет |
zvet |
varchar2(50) |
Not null |
Марка |
Marca |
varchar2(50) |
Not null |
Объём двигателя |
ob_dvig |
number(10) |
ob_dvig>0 |
Кузов |
kuzov |
varchar2(50) |
Not null |
Мощность |
mojnost |
varchar2(50) |
Not null |
№двигателя |
n_dvig |
number(10) |
n_dvig>0 |
Таблица «Покупатель»
Название таблицы «Pokupatel_GV»
Поле |
Название |
Тип |
Правила целостности |
Паспортные данные |
pasport_dann |
number(10) |
Not null |
Фамилия |
familia |
varchar2(50) |
Not null |
Адрес |
adres |
varchar2(50) |
Not null |
Телефон |
telefon |
varchar2(50) |
Not null |