powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Поддержка ссылочной целостности
6 сообщений из 6, страница 1 из 1
Поддержка ссылочной целостности
    #34368146
msa@n-e.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть 3 таблицы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
--таблица брокеров
CREATE TABLE broker
(
  id serial NOT NULL,
  name text NOT NULL,
  CONSTRAINT broker_id_pkey PRIMARY KEY (id)
) 
WITH OIDS;
--таблица фондов
CREATE TABLE fund
(
  id serial NOT NULL,
  name text NOT NULL,
  CONSTRAINT fund_id_pkey PRIMARY KEY (id)
) 
WITH OIDS;
--таблица счетов
CREATE TABLE accounts
(
  ida bigserial NOT NULL, -- уникальный идентификатор счета
  id_owner int4 NOT NULL, -- идентификатор владельца счета
  CONSTRAINT accounts_ida_pkey PRIMARY KEY (ida)
) 
WITH OIDS;

Как поддерживать в этой структуре ссылочную целостность, если в таблице общих счетов поле id_owner может быть либо идентификатором брокера либо идентификатором фонда? Идентификаторы счетов и фондов пересекаться не будут. Т.е. можно в таблице accounts сделать какой-нибудь вторичный ключь по полю id_owner, который бы ссылался сразу на 2 таблицы:broker и fund? И что бы при удалении скажем брокера, удалялись все ег осчета из таблицы accounts? Или это не возможно?
...
Рейтинг: 0 / 0
Поддержка ссылочной целостности
    #34368452
Фотография NetFantom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ссылочную целостность при такой структуре foreign key обеспечить не может - сам ключ может состоять из нескольких полей, а вот ссылаться может только на одно или несколько полей в ОДНОЙ таблице. При это количество, типы и порядок полей должны быть идентичены. Можно, конечно, заморочиться и сделать еще одну таблицу и через нее связывать...
Но вообщем, можно обеспечить уникальность поле id для таблиц broker и fund если для них обеих использовать одну последовательность (sequence), а msa@n-e.ru что бы при удалении скажем брокера, удалялись все ег осчета из таблицы accountsможно обеспечить, повесив на таблицу broker и fund триггера ON DELETE
...
Рейтинг: 0 / 0
Поддержка ссылочной целостности
    #34368483
SergPS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно объединить таблицы фондов и брокеров с добавлением поля, определяющего, что это: фонд или брокер.
...
Рейтинг: 0 / 0
Поддержка ссылочной целостности
    #34368792
Фотография NetFantom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2SergPS
ну это и ежу понятно =))) А если эти сущности имеют существенно различный набор аттрибутов? Ну конечно, можно завести отдельную таблицу для аттрибутов, сделать нормализованную БД, но иногда это бывает очень неудобно.
...
Рейтинг: 0 / 0
Поддержка ссылочной целостности
    #34369246
SergPS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2NetFantom
В случае наличия дополнительных реквизитов для фондов и брокеров они выносятся в отдельные таблицы со стороны которых организуется механизм ссылочной целостности (foreign key на одну таблицу). Таким образом достигается
...
Рейтинг: 0 / 0
Поддержка ссылочной целостности
    #34369252
SergPS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2NetFantom
Таким образом решается поставленная задача без привлечения триггерных механизмов
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Поддержка ссылочной целостности
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]