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

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
grundic
Сообщения: 2
Зарегистрирован: 14 фев 2005, 18:12

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

Сообщение grundic » 14 фев 2005, 18:36

Здравствуйте.

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

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

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

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

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

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

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

Сообщение Merlin » 14 фев 2005, 19:13

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 писал(а): Просто у меня совсем в голове не укладывается как такие штуки сделать можно.
Читай на ночь Дейта с Грабером и не сочиняй избыточных связей :)

grundic
Сообщения: 2
Зарегистрирован: 14 фев 2005, 18:12

Сообщение grundic » 14 фев 2005, 19:27

Угуп, буду втыкать.... :roll:

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

Ivan_Pisarevsky
Заслуженный разработчик
Сообщения: 644
Зарегистрирован: 15 фев 2005, 11:34

Сообщение Ivan_Pisarevsky » 15 фев 2005, 11:39

Тогда уж закладывай в проект и страховые случаи

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

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

dk
Сообщения: 1
Зарегистрирован: 15 фев 2005, 17:53

Сообщение dk » 15 фев 2005, 17:56

id афты скорее. у клиента может быть несколько авто

Ответить