Смекни!
smekni.com

Создание базы данных "РЭО-ГАИ" (стр. 2 из 4)

РНН владельца - Адрес стоянки авто

РНН владельца - Пол

РНН владельца - Год рождения

РНН владельца - № уд. личности

РНН владельца - Дата выдачи

РНН владельца - Профессия

№ уд. личности - Дата выдачи

Признак владельца - Наименование

Видно, что, хотя первичным ключом является составной атрибут РНН владельца, Признак владельца, атрибут ФИО/Наименование зависит от части первичного ключа. В результат при Признаке владельца - юридическое лицо, мы не сможем вставить кортеж, с Полом, Годом рождения и Профессией владельца. Можно произвести следующую декомпозицию отношения Владельцы на два отношения: Владельцы - юр_лица и Владельцы-физ_лица.

Владельцы-юр_лица (РНН владельца, Признак владельца, Наименование, Адрес владельца, Адрес стоянки авто, Телефон)

Первичный ключ

РНН владельца, Признак владельца

Функциональные зависимости:

РНН владельца, Признак владельца - Наименование

РНН владельца, Признак владельца - Адрес владельца

РНН владельца, Признак владельца - Телефон

РНН владельца, Признак владельца - Адрес стоянки авто

Владельцы-физ_лица (РНН владельца, Признак владельца, ФИО, Адрес владельца, Телефон, Адрес стоянки авто, Пол, Год рождения, № уд. личности, Дата выдачи, Профессия)

РНН владельца, Признак владельца - ФИО

РНН владельца, Признак владельца - Адрес владельца

РНН владельца, Признак владельца - Телефон

РНН владельца, Признак владельца - Адрес стоянки авто

РНН владельца, Признак владельца - Пол

РНН владельца, Признак владельца - Год рождения

РНН владельца, Признак владельца - № уд. личности

РНН владельца, Признак владельца- Дата выдачи

РНН владельца, Признак владельца - Профессия

№ уд. личности - Дата выдачи

Каждое из этих двух отношений находятся в 2 NF

Третья нормальная форма

Рассмотрим отношение Владельцы-физ_лица. Функциональная зависимость РНН владельца - Дата выдачи является транзитивной; она является следствием функциональных зависимостей РНН владельца - № уд. личности и № уд. личности - Дата выдачи. То есть, дата выдачи является характеристикой удостоверения личности владельца.

Можно декомпозировать отношение Владельцы-физ_лица в два отношения Владельцы-физ_лица-уд. личности и Удостоверения личности:

Владельцы-физ_лица-уд. личности (РНН владельца, Признак владельца, ФИО, Адрес владельца, Телефон, Адрес стоянки авто, Пол, Год рождения, № уд. личности, Профессия)

Первичный ключ:

Возможные функциональные зависимости:

РНН владельца, Признак владельца - ФИО

РНН владельца, Признак владельца - Адрес владельца

РНН владельца, Признак владельца - Телефон

РНН владельца, Признак владельца - Адрес стоянки авто

РНН владельца, Признак владельца - Пол

РНН владельца, Признак владельца - Год рождения

РНН владельца, Признак владельца - № уд. личности

РНН владельца, Признак владельца - Профессия

Удостоверения личности (№ удостоверения личности, Дата выдачи)

Первичный ключ:

№ уд. личности

Возможные функциональные зависимости:

№ уд. личности - Дата выдачи

Каждое из этих двух отношений находится в 3NF.

Нормальная форма Бойса-Кодда

Рассмотрим схему отношения Владельцы-физ_лица-уд. личности (РНН владельца, Признак владельца, ФИО, Адрес владельца, Телефон, Адрес стоянки авто, Пол, Год рождения, № уд. личности, Профессия)

Здесь личность владельца может полностью определятся как именем, так и его РНН.

Можно произвести декомпозицию отношения в два отношения: Владельцы-физ_лица-имена и

Владельцы-физ_лица-имена (РНН владельца, ФИО)

Первичный ключ: РНН владельца

Функциональные зависимости:

РНН владельца - ФИО

Владельцы-физ_лица-атрибуты (РНН владельца, Признак владельца, Адрес владельца, Телефон, Адрес стоянки авто, Пол, Год рождения, № уд. личности, Профессия)

Первичный ключ: РНН владельца, Признак владельца

Возможные функциональные зависимости:

РНН владельца, Признак владельца - Адрес владельца

РНН владельца, Признак владельца - Телефон

РНН владельца, Признак владельца - Адрес стоянки авто

РНН владельца, Признак владельца - Пол

РНН владельца, Признак владельца - Год рождения

РНН владельца, Признак владельца - № уд. личности

РНН владельца, Признак владельца - Профессия

Четвертая нормальная форма

Видим, что каждому владельцу соответствует множество, состоящее из нуля или более значений атрибута телефон (А→В), также как и соответствует множество, состоящее из нуля или более значений атрибута адрес стоянки авто (А→С). Но телефон владельца авто не зависит от адреса стоянки авто.

Многозначные зависимости:

РНН владельца →→ Телефон

РНН владельца →→ Адрес стоянки авто

Можно произвести декомпозицию отношения:

Владельцы-физ_лица-телефоны (РНН владельца, Признак владельца, Адрес владельца, Телефон, Пол, Год рождения, № уд. личности, Профессия

Первичный ключ: РНН владельца, Признак владельца

Возможные функциональные зависимости:

РНН владельца, Признак владельца - Адрес владельца

РНН владельца, Признак владельца - Телефон

РНН владельца, Признак владельца - Пол

РНН владельца, Признак владельца - Год рождения

РНН владельца, Признак владельца - № уд. личности

РНН владельца, Признак владельца - Профессия

Владельцы-физ_лица-адреса стоянок (РНН владельца, Признак владельца, Адрес владельца, Адрес стоянки авто, Пол, Год рождения, № уд. личности, Профессия)

Первичный ключ: РНН владельца, Признак владельца

Возможные функциональные зависимости:

РНН владельца, Признак владельца - Адрес владельца

РНН владельца, Признак владельца - Адрес стоянки авто

РНН владельца, Признак владельца - Пол

РНН владельца, Признак владельца - Год рождения

РНН владельца, Признак владельца - № уд. личности

РНН владельца, Признак владельца - Профессия

Отношения находятся в 4NF

Пятая нормальная форма

Таблица находится в пятой нормальной форме 5NF, тогда и только тогда, когда в каждой ее полной декомпозиции все проекции содержат возможный ключ.

Декомпозиция отношений6

Владельцы-юр_лица_наименования (РНН владельца, Признак владельца, Наименование)

Первичный ключ

РНН владельца, Признак владельца

Функциональные зависимости:

РНН владельца, Признак владельца - Наименование

Владельцы-юр_лица_адреса владельцев (РНН владельца, Признак владельца, Адрес владельца)

Первичный ключ

РНН владельца, Признак владельца

Функциональные зависимости:

РНН владельца, Признак владельца - Адрес владельца

Владельцы-юр_лица_адреса стоянок авто (РНН владельца, Признак владельца, Адрес стоянки авто, Телефон)

Первичный ключ

РНН владельца, Признак владельца

Функциональные зависимости:

РНН владельца, Признак владельца - Адрес стоянки авто

Владельцы-юр_лица_телефоны (РНН владельца, Признак владельца, Телефон)

Первичный ключ

РНН владельца, Признак владельца

Функциональные зависимости:

РНН владельца, Признак владельца - Телефон

Владельцы-физ_лица-имена (РНН владельца, ФИО)

Первичный ключ: РНН владельца

Функциональные зависимости:

РНН владельца - ФИО

Владельцы-физ_лица_адреса владельцев (РНН владельца, Признак владельца, Адрес владельца)

Первичный ключ: РНН владельца, Признак владельца

РНН владельца, Признак владельца - Адрес владельца

Владельцы-физ_лица-телефоны (РНН владельца, Признак владельца, Телефон, рождения)

Первичный ключ: РНН владельца, Признак владельца

Возможные функциональные зависимости:

РНН владельца, Признак владельца - Телефон

Владельцы-физ_лица-адреса стоянок (РНН владельца, Признак владельца, Адрес стоянки авто)

Первичный ключ: РНН владельца, Признак владельца

Возможные функциональные зависимости:

РНН владельца, Признак владельца - Адрес стоянки авто

Владельцы-физ_лица-пол (РНН владельца, Признак владельца, Пол)

Первичный ключ: РНН владельца, Признак владельца

Возможные функциональные зависимости:

РНН владельца, Признак владельца - Пол

Владельцы-физ_лица-год рождения (РНН владельца, Признак владельца, Год рождения)

Первичный ключ: РНН владельца, Признак владельца

Возможные функциональные зависимости:

РНН владельца, Признак владельца - Год рождения

Владельцы-физ_лица-уд. личности (РНН владельца, Признак владельца, № уд. личности)

Первичный ключ: РНН владельца, Признак владельца

Возможные функциональные зависимости:

РНН владельца, Признак владельца - № уд. личности

Владельцы-физ_лица-профессии (РНН владельца, Признак владельца, Профессия)

Первичный ключ: РНН владельца, Признак владельца

Возможные функциональные зависимости:

РНН владельца, Признак владельца - профессия

3. Структура программы

Программа "РЭО-ГАИ" реализована на языке программирования Borland Delphi с подключением MSSQLServer 2000. Структуру программы составляют 4 класса и 6 программных модулей.

3.1 Описание модулей

Модули данной программы подразделяются на:

1. Модуль Unit1, который находится в файле Unit1. pas содержит информацию о всех таблицах данной базы данных.

2. В модуле Unit2, находящемся в файле Unit2. pas происходит реализация класса TZaprosy (запросы).

3. Модуль Unit3 расположен в файле Unit3. pas, в котором находится реализация класса TOtchety (отчеты).

4. Модуль Unit4 расположен в файле Unit4. pas, в нем находится код описания класса TProcedury (процедуры).

5. Модуль Unit5, который расположен в файле Unit5. pas содержит реализацию класса TSpravka (справка).

6. Модуль Unit6 находится в файле Unit6. pas и содержит информацию об отчетах.

3.2 Описание запросов выполняемых в программе

Запрос 1. Количество автотранспортных средств, принадлежащих каждому из владельцев.

SELECT [РНН владельца], COUNT ([№автомобиля])

FROM Автомобили

GROUPBY [РНН владельца]

ORDERBY [РНН владельца] ;

Запрос 2. Найти автомобиль по неполному номеру двигателя <…>