Доброго времени суток!
Возник такой вопрос:
к примеру, существует БД с 3 таблицами CUSTOMERS, JURIDICAL_PERSONS, PHYSICAL_PERSONS.
В таблице CUSTOMERS есть поле, которое является внешним ключом, и должно быть связано с таблицей JURIDICAL_PERSONS или PHYSICAL_PERSONS в зависимости от того, какое значение имеет поле CUSTOMER_TYPE (BOOL) в той же таблице CUSTOMERS.
Подскажите PLZ как лучше поступить в данном случае.
Объеденить таблицы JURIDICAL_PERSONS и PHYSICAL_PERSONS нельзя.
Foreign Keys
SRY я несколько непонятно описал.
Переименуем CUSTOMERS в TELEPHONE_NUMBERS
Для наглядности
Т.Е у каждого абонента должен быть какой-то уникальный ID.
В то же время у абонента может быть несколько номеров.
Если абонент юридическое лицо, то ID должен присутствовать в таблице JURIDICAL_PERSONS , если физическое, в таблице PHYSICAL_PERSONS .
Или полюбому придется создавать промежуточную таблицу?
Переименуем CUSTOMERS в TELEPHONE_NUMBERS
Для наглядности
Код: Выделить всё
CREATE TABLE TELEPHONE_NUMBERS
(
ID integer,
ABONENT_ID INTEGER NOT NULL,
CONSTRAINT PK_TELEPHONE_NUMBERS_1 PRIMARY KEY (ID)
);
CREATE TABLE JURIDICAL_PERSONS
(
ID INTEGER,
JURIDICAL_PERSON_ID INTEGER,
CONSTRAINT PK_JURIDICAL_PERSONS_2 PRIMARY KEY (ID),UNIQUE (JURIDICAL_PERSON_ID)
);
CREATE TABLE PHYSICAL_PERSONS
(
ID INTEGER,
PHYSICAL_PERSON_ID INTEGER,
CONSTRAINT PK_PHYSICAL_PERSONS_3 PRIMARY KEY (ID), UNIQUE (PHYSICAL_PERSON_ID)
);
ALTER TABLE TELEPHONE_NUMBERS
ADD CONSTRAINT FK_JURIDICAL_PERSONS FOREIGN KEY (ABONENT_ID) REFERENCES JURIDICAL_PERSONS (JURIDICAL_PERSON_ID),
ADD CONSTRAINT FK_PHYSICAL_PERSONS FOREIGN KEY (ABONENT_ID) REFERENCES PHYSICAL_PERSONS (PHYSICAL_PERSON_ID)
В то же время у абонента может быть несколько номеров.
Если абонент юридическое лицо, то ID должен присутствовать в таблице JURIDICAL_PERSONS , если физическое, в таблице PHYSICAL_PERSONS .
Или полюбому придется создавать промежуточную таблицу?
-
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05