Здравствуйте.
У меня такая проблема. Разрабатываю базу данных для страховой компании [FB 1.5.2, FIBPlus, EhLib].
1. Хочется сделать два типа клиентов ЮР и ФИЗ и привязать их к одной таблице автомобилей. Т.е. сделать связь Мастер-Мастер-Деталь. Существует ли такая возможность? Или в отношении ЮР И ФИЗ существуют какие-нибудь специальные известные приемчики?
2. Теперь таблицу автомобилей надо связать с таблицей полисов. Но полисы могуть быть как КАСКО так и ОСАГО. Я подумал, что надо сделать две отдельные таблицы - отдельно для КАСКО и отдельно для ОСАГО. Т.е. таблица с автомобилями будет мастером по отношению к этим двум. Получается связь Мастер-Деталь-Деталь. При этом необходимо, что бы полис был ИЛИ каско ИЛИ ОСАГО (что естесственно).
Просто у меня совсем в голове не укладывается как такие штуки сделать можно.
Заранее благодарен.
Мастер-Мастер-Д и Мастер-Д-Д
Re: Мастер-Мастер-Д и Мастер-Д-Д
Таблица Клиенты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 писал(а): Просто у меня совсем в голове не укладывается как такие штуки сделать можно.
-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34