Страница 1 из 1

Мастер-Мастер-Д и Мастер-Д-Д

Добавлено: 14 фев 2005, 18:36
grundic
Здравствуйте.

У меня такая проблема. Разрабатываю базу данных для страховой компании [FB 1.5.2, FIBPlus, EhLib].

1. Хочется сделать два типа клиентов ЮР и ФИЗ и привязать их к одной таблице автомобилей. Т.е. сделать связь Мастер-Мастер-Деталь. Существует ли такая возможность? Или в отношении ЮР И ФИЗ существуют какие-нибудь специальные известные приемчики?

2. Теперь таблицу автомобилей надо связать с таблицей полисов. Но полисы могуть быть как КАСКО так и ОСАГО. Я подумал, что надо сделать две отдельные таблицы - отдельно для КАСКО и отдельно для ОСАГО. Т.е. таблица с автомобилями будет мастером по отношению к этим двум. Получается связь Мастер-Деталь-Деталь. При этом необходимо, что бы полис был ИЛИ каско ИЛИ ОСАГО (что естесственно).

Просто у меня совсем в голове не укладывается как такие штуки сделать можно.

Заранее благодарен.

Re: Мастер-Мастер-Д и Мастер-Д-Д

Добавлено: 14 фев 2005, 19:13
Merlin
grundic писал(а): 1. Хочется сделать два типа клиентов ЮР и ФИЗ и привязать их к одной таблице автомобилей. Т.е. сделать связь Мастер-Мастер-Деталь. Существует ли такая возможность? Или в отношении ЮР И ФИЗ существуют какие-нибудь специальные известные приемчики?
Таблица Клиенты
ID Primary
Атрибуты, общие для ФИЗ и ЮР

Таблица ФИЗ
ID Primary
Атрибуты свойственные только ФИЗ
Constraint ФИЗ_FK Foreign Key ID References Клиенты

Таблица ЮР
ID Primary
Атрибуты свойственные только ЮР
Constraint ЮР_FK Foreign Key ID References Клиенты

Таблица АФТЫ
ID Primary
Атрибуты афта
Constraint АФТЫ_FK Foreign Key ID References Клиенты

до атрибутов таблицы Клиенты от афта будешь добираться через inner join, до атрибутов ФИЗ и ЮР - left join с обоими если не знаешь ФИЗ он или ЮР и возьмешь те, которые достанутся. Если сделаешь ПК клиентских таблиц двухсегментные - Тип, ID -, и соответсвенно двухсегментные FK на них в остальных таблицах, то идя от конкретной афты можешь, зная заранее тип, тоже inner.

2. Теперь таблицу автомобилей надо связать с таблицей полисов. Но полисы могуть быть как КАСКО так и ОСАГО. Я подумал, что надо сделать две отдельные таблицы - отдельно для КАСКО и отдельно для ОСАГО. Т.е. таблица с автомобилями будет мастером по отношению к этим двум. Получается связь Мастер-Деталь-Деталь. При этом необходимо, что бы полис был ИЛИ каско ИЛИ ОСАГО (что естесственно).

Таблица КАСКО
ID Primary
ID_АФТЫ
Атрибуты полиса каски
Constraint КАСКИ_FK Foreign Key ID_АФТЫ References АФТЫ

до клиентов будешь добираться с помощью джойна через АФТЫ

Таблица ОСАГО
ID Primary
ID_АФТЫ
Атрибуты полиса осаги
Constraint ОСАГИ_FK Foreign Key ID_АФТЫ References АФТЫ

до клиента аналогично.
grundic писал(а): Просто у меня совсем в голове не укладывается как такие штуки сделать можно.
Читай на ночь Дейта с Грабером и не сочиняй избыточных связей :)

Добавлено: 14 фев 2005, 19:27
grundic
Угуп, буду втыкать.... :roll:

Спасибо большое!

Добавлено: 15 фев 2005, 11:39
Ivan_Pisarevsky
Тогда уж закладывай в проект и страховые случаи

ИД клиента
Дата проишествия
описание
сумма ущерба
прочие атрибуты

Шоб потом скидки/наценки подсчитать, всяческих недобросовесных товарищей быстро вычислить и т.п.

Добавлено: 15 фев 2005, 17:56
dk
id афты скорее. у клиента может быть несколько авто