- •Отчет о курсовой работе по курсу «Базы данных»
- •Содержание работы
- •1 Инфологическое проектирование
- •1.1 Анализ Предметной области
- •1.2 Анализ информационных задач и круга пользователей системы
- •2 Определение требований к операционной обстановке
- •3 Выбор субд и других программных средств
- •4 Логическое проектирование бд
- •4. 3 Составление реляционных отношений
- •4.4 Нормализация полученных отношений(до 4нф)
- •4. 6 Определение дополнительных ограничений целостности
- •4.7 Описание групп пользователей и прав доступа
- •5 Реализация проекта базы данных
- •5.1 Создание таблиц
- •5.2 Создание представлений, готовых запросов
- •5.3 Назначение прав доступа
- •5.4 Создание индексов
- •5.5 Разработка стратегии резервного копирования
- •6 Список литературы
4.4 Нормализация полученных отношений(до 4нф)
1НФ.
Для приведения таблиц к 1НФ требуется составить прямоугольные таблицы (одно значение атрибута – одна ячейка таблицы) и разбить сложные атрибуты на простые.
Разделим атрибут Адрес (регистрации и фактический) на атрибуты: индекс, область, район, город (или поселение, деревня), дом, строение, квартира;
Разделим атрибут Место рождения на атрибуты: индекс, область, район, город (или поселение, деревня);
Разделим атрибут Работа на атрибуты: город, компания, название офиса;
Разделим атрибут ФИО должностного лица, Застрахованного, Страхователя, Выгодоприобретателя на: Фамилия, Имя, Отчество;
Разделим атрибут Должность представителя СК на: Номер подразделения, название должности, рабочий кабинет;
2НФ.
В нашем случае составные первичные ключи отсутствуют.
3НФ.
В отношениях Страховщик, Страхователь, Вложения, Выплаты, Застрахованный, Выгодоприобретатель транзитивные зависимости отсутствуют.
4НФ.
Отношения Страховщик, Застрахованный, Страховые расчеты, Страхователь, Выгодоприобретатель, Вложения, Выплаты, Доля выплат не нарушают 4НФ.
Отношение Полис содержит многозначную зависимость – Представитель СК, Должность представителя СК от ID полиса (серии и номера), так одним полисом могут заниматься несколько человек (оформление, бухгалтерия и так далее).
В результате выделения должности сотрудника – в новой таблице появится транзитивная зависимость Полис =>Представитель СК =>Должность представителя СК. В данном случае вернемся к 3НФ и разобьем таблицу Представителей СК на 2: Представитель СК, Сотрудники
Получили:
Таблица Страховщик – InsurerOrg
Содержание поля |
Имя поля |
Тип (Длина) |
Примечания |
Наименование |
Name |
V(30) |
Обязательное поле |
ИНН |
INN |
V(12) |
От 10 до 12 знаков – Обязательное поле |
БИК |
BIK |
С(9) |
Первичный ключ |
К/с |
Ks |
V(20) |
Обязательное поле |
КПП |
Kpp |
С(9) |
Обязательное поле |
Расчетный счет |
Schet |
V(20) |
Обязательное поле |
Индекс |
Index_ad |
C(6) |
Обязательное поле |
Область (республика, край) |
Area_ad |
V(20) |
Обязательное поле |
Район |
Region_ad |
V(20) |
Обязательное поле |
Город (поселение, деревня) |
Town_ad |
V(20) |
Обязательное поле |
Дом |
House_ad |
V(10) |
Обязательное поле |
Строение |
Building_ad |
V(10) |
Обязательное поле (если нет – то «пусто» по умолчанию) |
Квартира |
Flat_ad |
V(5) |
Обязательное поле (если нет – то «пусто» по умолчанию) |
Таблица Страхователь – Insurer
Содержание поля |
Имя поля |
Тип (Длина) |
Примечания |
Фамилия |
Surname |
V(15) |
Обязательное поле |
Имя |
FirstName |
V(15) |
Обязательное поле |
Отчество |
Patronimic |
V(15) |
Обязательное поле |
Серия паспорта Номер паспорта |
Pass |
C(10) |
Первичный ключ |
Кем и когда выдан паспорт |
WhoPass |
V(50) |
Обязательное поле |
Дата рождения |
Birthdate |
D |
Обязательное поле |
Индекс места рождения |
Index_Birth |
C(6) |
Обязательное поле |
Область (республика, край) места рождения |
Area_Birth |
V(20) |
Обязательное поле |
Район места рождения |
Region_Birth |
V(20) |
Обязательное поле |
Город (поселение, деревня) места рождения |
Town_Birth |
V(20) |
Обязательное поле |
Профессия |
Prof |
V(20) |
Не обязательное поле |
Пол |
Sex |
C(1) |
Либо «м», либо «ж», обязательное поле |
Работа |
WorkCurr |
V(100) |
Обязательное поле |
Телефон |
Phone |
V(20) |
Обязательное поле |
|
|
V(30) |
Необязательное поле |
Индекс регистрации |
Index_reg |
C(6) |
Обязательное поле |
Область (республика, край) регистрации |
Area_reg |
V(20) |
Обязательное поле |
Район регистрации |
Region_ reg |
V(20) |
Обязательное поле |
Город (поселение, деревня) регистрации |
Town_ reg |
V(20) |
Обязательное поле |
Дом регистрации |
House_reg |
V(10) |
Обязательное поле |
Строение регистрации |
Building_reg |
V(10) |
Обязательное поле (если нет – то «пусто» по умолчанию) |
Квартира регистрации |
Flat_reg |
V(5) |
Обязательное поле (если нет – то «пусто» по умолчанию) |
Индекс фактический |
Index_fact |
C(6) |
Обязательное поле |
Область (республика, край) фактическая |
Area_ fact |
V(20) |
Обязательное поле |
Район фактический |
Region_ fact |
V(20) |
Обязательное поле |
Город (поселение, деревня) фактический |
Town_ fact |
V(20) |
Обязательное поле |
Дом фактический |
House_ fact |
V(10) |
Обязательное поле |
Строение фактическое |
Building_ fact |
V(10) |
Обязательное поле (если нет – то «пусто» по умолчанию) |
Квартира фактическая |
Flat_ fact |
V(5) |
Обязательное поле (если нет – то «пусто» по умолчанию) |
Судимости |
Conviction |
C(3) |
Либо «да», либо «нет» |
Полис – Policy
Содержание поля |
Имя поля |
Тип (Длина) |
Примечания | ||
Серия Номер |
Number |
C(25) |
Первичный ключ | ||
Дата оформления |
DateAcceptation |
D |
Обязательное поле | ||
Начало действия |
EffectiveDate |
D |
Обязательное поле | ||
Конец действия |
ExpirationDate |
D |
Обязательное поле | ||
Статус |
Stat |
V(20) |
«Выплаты использованы», «Выплаты пока не пригодились», Обязательное поле | ||
Вид страхования |
TypeIns |
V(30) |
Значения «travel», «life», «student», «home» | ||
БИК страховщика |
BIK_SK |
C(9) |
Внешний ключ | ||
Серия, номер паспорта страхователя |
PassR |
C(10) |
Внешний ключ | ||
Серия, номер паспорта Застрахованного |
PassD |
C(10) |
Внешний ключ | ||
Сумма |
SumPolicy |
FLOAT Unsigned (20) |
Обязательное поле |
Представитель СК – Work_policy
Серия, номер Полиса |
SerNum |
C(25) |
Внешний ключ |
Уникальный id пропуска |
Id |
C(16) |
Внешний ключ |
Сотрудники СК – worker_SK
Фамилия |
Surname |
V(15) |
Обязательные поля |
Имя |
FirstName |
V(15) | |
Отчество |
Patronimic |
V(15) | |
Должность |
Work_dep |
V(30) |
Обязательное поле |
Уникальный пропуска |
Id |
С(16) |
Первичный ключ |
Вложения – put_money
Содержание поля |
Имя поля |
Тип (Длина) |
Примечания |
Страховой взнос |
Fee |
FLOAT Unsigned (20) |
Обязательное поле |
Серия, номер полиса |
NumberSer |
C(25) |
Внешний ключ |
Выплаты - Payment
Содержание поля |
Имя поля |
Тип (Длина) |
Примечания |
Серия, номер полиса |
NumberSer |
C(25) |
Внешний ключ |
Признак адресата |
WhoPay |
C(1) |
По умолчанию “I”, варианты “I/B” |
Выплаты по смерти |
PaymentDeath |
FLOAT Unsigned (20) |
Обязательное поле |
Выплаты по дожитию |
PaymentSurv |
FLOAT Unsigned (20) |
Обязательное поле |
Застрахованный – Insured
Содержание поля |
Имя поля |
Тип (Длина) |
Примечания |
Фамилия |
Surname |
V(15) |
Обязательное поле |
Имя |
FirstName |
V(15) |
Обязательное поле |
Отчество |
Patronimic |
V(15) |
Обязательное поле |
Серия паспорта Номер паспорта |
Pass |
C(10) |
Первичный ключ |
Кем и когда выдан паспорт |
WhoPass |
V(50) |
Обязательное поле |
Дата рождения |
Birthdate |
D |
Обязательное поле |
Индекс места рождения |
Index_Birth |
C(6) |
Обязательное поле |
Область (республика, край) места рождения |
Area_Birth |
V(20) |
Обязательное поле |
Район места рождения |
Region_Birth |
V(20) |
Обязательное поле |
Город (поселение, деревня) места рождения |
Town_Birth |
V(20) |
Обязательное поле |
Профессия |
Prof |
V(20) |
Не обязательное поле |
Пол |
Sex |
C(1) |
Либо «м», либо «ж», обязательное поле |
Работа |
WorkCurr |
V(100) |
Обязательное поле |
Телефон |
Phone |
V(20) |
Обязательное поле |
|
|
V(30) |
Необязательное поле |
Индекс регистрации |
Index_reg |
C(6) |
Обязательное поле |
Область (республика, край) регистрации |
Area_reg |
V(20) |
Обязательное поле |
Район регистрации |
Region_ reg |
V(20) |
Обязательное поле |
Город (поселение, деревня) регистрации |
Town_ reg |
V(20) |
Обязательное поле |
Дом регистрации |
House_reg |
V(10) |
Обязательное поле |
Строение регистрации |
Building_reg |
V(10) |
Обязательное поле (если нет – то «пусто» по умолчанию) |
Квартира регистрации |
Flat_reg |
V(5) |
Обязательное поле (если нет – то «пусто» по умолчанию) |
Индекс фактический |
Index_fact |
C(6) |
Обязательное поле |
Область (республика, край) фактическая |
Area_ fact |
V(20) |
Обязательное поле |
Район фактический |
Region_ fact |
V(20) |
Обязательное поле |
Город (поселение, деревня) фактический |
Town_ fact |
V(20) |
Обязательное поле |
Дом фактический |
House_ fact |
V(10) |
Обязательное поле |
Строение фактическое |
Building_ fact |
V(10) |
Обязательное поле (если нет – то «пусто» по умолчанию) |
Квартира фактическая |
Flat_ fact |
V(5) |
Обязательное поле (если нет – то «пусто» по умолчанию) |
Судимости |
Conviction |
C(3) |
Либо «да», либо «нет» |
Выгодоприобретатель - Beneficiary
Содержание поля |
Имя поля |
Тип (Длина) |
Примечания |
Фамилия |
Surname |
V(15) |
Обязательное поле |
Имя |
FirstName |
V(15) |
Обязательное поле |
Отчество |
Patronimic |
V(15) |
Обязательное поле |
Серия паспорта Номер паспорта |
Pass |
C(10) |
Первичный ключ |
Кем и когда выдан паспорт |
WhoPass |
V(50) |
Обязательное поле |
Дата рождения |
Birthdate |
D |
Обязательное поле |
Индекс места рождения |
Index_Birth |
C(6) |
Обязательное поле |
Область (республика, край) места рождения |
Area_Birth |
V(20) |
Обязательное поле |
Район места рождения |
Region_Birth |
V(20) |
Обязательное поле |
Город (поселение, деревня) места рождения |
Town_Birth |
V(20) |
Обязательное поле |
Профессия |
Prof |
V(20) |
Не обязательное поле |
Пол |
Sex |
C(1) |
Либо «м», либо «ж», обязательное поле |
Работа |
WorkCurr |
V(100) |
Обязательное поле |
Телефон |
Phone |
V(20) |
Обязательное поле |
|
|
V(30) |
Необязательное поле |
Индекс регистрации |
Index_reg |
C(6) |
Обязательное поле |
Область (республика, край) регистрации |
Area_reg |
V(20) |
Обязательное поле |
Район регистрации |
Region_ reg |
V(20) |
Обязательное поле |
Город (поселение, деревня) регистрации |
Town_ reg |
V(20) |
Обязательное поле |
Дом регистрации |
House_reg |
V(10) |
Обязательное поле |
Строение регистрации |
Building_reg |
V(10) |
Обязательное поле (если нет – то «пусто» по умолчанию) |
Квартира регистрации |
Flat_reg |
V(5) |
Обязательное поле (если нет – то «пусто» по умолчанию) |
Индекс фактический |
Index_fact |
C(6) |
Обязательное поле |
Область (республика, край) фактическая |
Area_ fact |
V(20) |
Обязательное поле |
Район фактический |
Region_ fact |
V(20) |
Обязательное поле |
Город (поселение, деревня) фактический |
Town_ fact |
V(20) |
Обязательное поле |
Дом фактический |
House_ fact |
V(10) |
Обязательное поле |
Строение фактическое |
Building_ fact |
V(10) |
Обязательное поле (если нет – то «пусто» по умолчанию) |
Квартира фактическая |
Flat_ fact |
V(5) |
Обязательное поле (если нет – то «пусто» по умолчанию) |
Судимости |
Conviction |
C(3) |
Либо «да», либо «нет» |
Тип |
Type_Ben |
V(5) |
«Surv» или «Death» |
Серия, номер полиса |
NumberSer |
C(25) |
Внешний ключ |
Доля выплат |
Percent |
Float unsigned(6) |
Обязательное поле |
4.5 Схема реляционной базы данных, полученная в результате нормализации отношений:
Страховщик Страхователь
Полис
Представитель
СК
Вложения Выплаты Сотрудники
СК
Застрахованный
Выгодоприобретатель