Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД курсач.docx
Скачиваний:
76
Добавлен:
08.02.2015
Размер:
329.67 Кб
Скачать

4. 6 Определение дополнительных ограничений целостности

Перечислим ограничения целостности, которые не указаны в таблицах отношений:

Дата рождения людей > 1950 года

Дата оформления = текущий день

Начало действия полиса >= Текущий день + 1

Конец действия полиса >=Текущий день +6

4.7 Описание групп пользователей и прав доступа

Опишем для каждой группы пользователей права доступа к каждой таблице. Права приведены в таблице ниже. Используются следующие сокращения:

s – чтение данных (select);

i – добавление данных (insert);

u – модификация данных (update);

d – удаление данных(delete).

Таблицы

Группы пользователей (роли)

Должностные лица СК

Начальство СК

Страхователь

Застрахованный, Выгодоприобретатель

Бухгалтерия СК

Администратор БД

Страховщик

S

SIUD

S

S

S

SIUD

Страхователь

SIUD

S

-

-

S

SIUD

Вложения

S

S

-

-

SIUD

SIUD

Выплаты

S

S

-

-

SIUD

SIUD

Доля выплат

S

S

-

-

SIUD

SIUD

Застрахованный

SIUD

S

-

-

S

SIUD

Должностные лица

SIU

SIUD

-

-

S

SIUD

Выгодоприобретатель

SIUD

S

-

-

S

SIUD

Сотрудники СК

S

SIUD

-

-

S

SIUD

5 Реализация проекта базы данных

5.1 Создание таблиц

1 Отношение Страховщик

CREATE TABLE InsurerOrg

(

Name varchar(30) not null,

INN varchar(12) not null,

BIK char(9) primary key,

Ks varchar(20) not null,

Kpp char(9) not null,

Schet varchar(20) not null,

Index_ad char(6) not null,

Area_ad varchar(20) not null,

Town_ad varchar(20) not null,

House_ad varchar(10) not null,

Building_ad varchar(10) not null default('empty'),

Flat_ad varchar(5) not null default('empty')

);

2 Отношение Страхователь

CREATE TABLE Insurer

(

Surname varchar(15) not null,

FirstName varchar(15) not null,

Patronomic varchar(15) not null,

Pass char(10) primary key,

WhoPass varchar(50) not null,

Birthdate date not null check (Birthdate>'1949-12-31'),

Index_Birth char(6) not null,

Area_Birth varchar(20) not null,

Town_Birth varchar(20) not null,

Prof varchar(20) not null,

Sex char(1) not null check (sex IN('w','m')),

WorkCurr varchar(100) not null,

Phone varchar(20) not null,

Mail varchar(30),

Index_reg char(6) not null,

Area_reg varchar(20) not null,

Town_reg varchar(20) not null,

House_reg varchar(10) not null,

Building_reg varchar(10) not null default('empty'),

Flat_reg varchar(5) not null default('empty'),

Index_fact char(6) not null,

Area_fact varchar(20) not null,

Town_fact varchar(20) not null,

House_fact varchar(10) not null,

Building_fact varchar(10) not null default('empty'),

Flat_fact varchar(5) not null default('empty'),

Conviction char(3) not null check (Conviction IN('yes'.' no'))

);

3 Отношение Полисы

CREATE TABLE Policy

(

NumberSer char(25) primary key,

DateAcceptation Date not null default curdate(),

EffectiveDate Date not null check (EffectiveDate > curdate()),

ExpirationDate Date not null check (ExpirationDate > (curdate() + 5)),

Stat varchar(20) not null check (Stat IN('payments used', payment until useful)),

TypeIns varchar(10) not null check (TypeIns IN('travel', 'life', 'student' 'home')),

BIK_SK char(9) references IsurerOrg,

PassR char(10) references Insurer on UPDATE cascade,

PassD char(10) references Insured on UPDATE cascade,

SumPolicy float(20) unsigned not null

);

4 Отношение Представитель СК

CREATE TABLE Work_policy

(

Id char(16) references worker_SK,

SerNum char(25) references Policy

);

5 Отношение Сотрудники СК

CREATE TABLE worker_SK

(

Surname varchar(15) not null,

FirstName varchar(15) not null,

Patronimic varchar (15) not null,

Work_dep varchar(30) not null,

Id char(16) Primary Key

);

6 Отношение Вложения

CREATE TABLE put_money

(

Fee Float(20) UNSIGNED not null,

NumberSer char(25) references Policy

);

7 Отношение Выплаты

CREATE TABLE Payment

(

NumberSer char(25) references Policy,

WhoPay char(1) default('I') check (WhoPay IN ‘I’,’B’),

PaymentDeath float(20) unsigned not null,

PaymentSurv float(20) unsigned not null

);

8 Отношение Застрахованный

CREATE TABLE Insured

(

Surname varchar(15) not null,

FirstName varchar(15) not null,

Patronomic varchar(15) not null,

Pass char(10) primary key,

WhoPass varchar(50) not null,

Birthdate date not null check (Birthdate>'1949-12-31'),

Index_Birth char(6) not null,

Area_Birth varchar(20) not null,

Town_Birth varchar(20) not null,

Prof varchar(20) not null,

Sex char(1) not null check (sex IN('w','m')),

WorkCurr varchar(100) not null,

Phone varchar(20) not null,

Mail varchar(30),

Index_reg char(6) not null,

Area_reg varchar(20) not null,

Town_reg varchar(20) not null,

House_reg varchar(10) not null,

Building_reg varchar(10) not null default('empty'),

Flat_reg varchar(5) not null default('empty'),

Index_fact char(6) not null,

Area_fact varchar(20) not null,

Town_fact varchar(20) not null,

House_fact varchar(10) not null,

Building_fact varchar(10) not null default('empty'),

Flat_fact varchar(5) not null default('empty'),

Conviction char(3) not null check (Conviction IN('yes'.' no'))

);

9 Отношение Выгодоприобретатель

CREATE TABLE Beneficiary

(

Surname varchar(15) not null,

FirstName varchar(15) not null,

Patronomic varchar(15) not null,

Pass char(10) primary key,

WhoPass varchar(50) not null,

Birthdate date not null check (Birthdate>'1949-12-31'),

Index_Birth char(6) not null,

Area_Birth varchar(20) not null,

Town_Birth varchar(20) not null,

Prof varchar(20) not null,

Sex char(1) not null check (sex IN('w','m')),

WorkCurr varchar(100) not null,

Phone varchar(20) not null,

Mail varchar(30),

Index_reg char(6) not null,

Area_reg varchar(20) not null,

Town_reg varchar(20) not null,

House_reg varchar(10) not null,

Building_reg varchar(10) not null default('empty'),

Flat_reg varchar(5) not null default('empty'),

Index_fact char(6) not null,

Area_fact varchar(20) not null,

Town_fact varchar(20) not null,

House_fact varchar(10) not null,

Building_fact varchar(10) not null default('empty'),

Flat_fact varchar(5) not null default('empty'),

Conviction char(3) not null check (Conviction IN('yes'.' no')),

Type_Ben varchar(5) not null check (Type_Ben IN ('Surv', 'Death')),

percent float(6) unsigned not null,

NumberSer char(25) references Policy

);