Как правильно связать данные???

Ivan A Kostko
Дата: 11.09.2006 11:40:50
Добрый день.

У меня возникла ситуация:

Есть две таблицы партнеров:
физ лица(id, name, pasport, adress, borndate), и
юр лица (id, name, oficialname, adress, ofadress, kpp, ogrn,....) имеющие разные наборы столбцов. Есть таблица заказов, где у каждого заказа один покупатель. Причем либо юр лицо, либо физ лицо. И его нужно привязать к заказам. Вот здесь вопрос: как правильно это реализовать?

Я вижу два пути:
1. Создание отдельной таблицы payer включающую все столбцы таблицы юр.лиц и физ.лиц. Но получается, что таблица не оправдано раздута.
2. в таблице заказов создать столбец partnertype boolean, который будет указывать на то, в какой таблице находится плательщик...
Второй вариант кажется наиболее правильным, но с другой стороны такая конструкция смущает не высокой надежностью. Подскажите плс...
-=DiM@n=-
Дата: 11.09.2006 11:46:11
а как определяется покупатель в таблице заказов?! по id физ/юр лица?! или как?!
Можно джойнить по подзапросу вида
SELECT id, name
FROM FizTable

UNION ALL

SELECT id, name
FROM UrTable
Glory
Дата: 11.09.2006 11:49:26
Ivan A Kostko
Я вижу два пути:
1. Создание отдельной таблицы payer включающую все столбцы таблицы юр.лиц и физ.лиц. Но получается, что таблица не оправдано раздута.

Вы про физический объем данных или про количество столбцов ?
-=MIX=-
Дата: 11.09.2006 11:51:06
Простите, но что мешает просто связать их по ID ?...
Ivan A Kostko
Дата: 11.09.2006 11:54:39
Забыл сказать, что id юр.лиц и физ.лиц не различаются. Т.е. и в обеих таблицах стоят счетчики. Что и приводит к тому, что всегда будут одинаковые id в физ.лицах и юр.лицах.
alexeyvg
Дата: 11.09.2006 11:57:08
Ivan A Kostko
Забыл сказать, что id юр.лиц и физ.лиц не различаются. Т.е. и в обеих таблицах стоят счетчики. Что и приводит к тому, что всегда будут одинаковые id в физ.лицах и юр.лицах.
Можно сделать таблицу "партнёр" с идентификатором-счётчиком и типом партнёра, и с неё связать 1-1 таблицы "физ лицо" и "юр лицо"
Ivan A Kostko
Дата: 11.09.2006 11:58:59
Какраз этот вариант был предшественником опубликованного втиорого варианта. Но для того, чтобы не создавать лишних таблиц, я сразу эту модель положил в заказы. Смущает ненадежность этой конструкции. Или я не прав?
-=DiM@n=-
Дата: 11.09.2006 12:00:11
Ivan A Kostko
Забыл сказать, что id юр.лиц и физ.лиц не различаются. Т.е. и в обеих таблицах стоят счетчики. Что и приводит к тому, что всегда будут одинаковые id в физ.лицах и юр.лицах.


И как же тогды Вы хотите определить тип покупателя в заказах?! Нужно по-любому заводить в таблице заказов поле с признаком юр/физ лицо (например, битовое). А дальше все просто.
pavel73
Дата: 11.09.2006 12:01:13
Сделать отдельно таблицу(заказов) для физ. лиц и юридических
Ivan A Kostko
Дата: 11.09.2006 12:03:28
Т.е. второй вариант - правильный? Я просто как раз и хотел это для себя уяснить, что данная кнструкция разумнее, нежели создание избыточной таблицы, как объединение физ/юр. лиц