Forum Webscript.Ru

Общие => Базы данных => Тема начата: Phoinix от 23 Марта 2005, 14:06:30

Название: PostgreSQL FOREIGN KEY + array
Отправлено: Phoinix от 23 Марта 2005, 14:06:30
Есть таблица категорий и талица фирм

CREATE TABLE "public"."firm_category" (
  "id" SERIAL,
  "name" VARCHAR(300) NOT NULL,
  "note" VARCHAR(150),
  CONSTRAINT "firm_category_pkey" PRIMARY KEY("id")
) WITHOUT OIDS;

CREATE TABLE "public"."firm_main" (
  "id" SERIAL,
  "category" INTEGER[],
  "name" VARCHAR(250) NOT NULL,
  "note" TEXT,
  CONSTRAINT "firm_main_pkey" PRIMARY KEY("id"),
) WITHOUT OIDS;

Одна фирма может относится к нескольким категориям поэтому поле category соответсвующей таблицы - массив

Так вот хотел прикрутить к этой (фирм) таблице внешний ключ, что бы автоматически обновлялись (удалялись) элементы массива.

Естественно при создании FOREIGN KEY выдало ошибку несоответсвие типов.

Возможно ли использовать внешний ключ, или же прийдется прикручивать Триггер?

И еще, существенна потеря производительности при выборке данных
...
firm_category.id = ANY (firm_main.category);
...

Если в обоих таблицах будет не более 4000-5000 записей
Или же все-таки использовать 3-ю таблицу для определения соотвествия и установить внешние ключи?
Название: PostgreSQL FOREIGN KEY + array
Отправлено: commander от 23 Марта 2005, 16:05:05
Цитировать
Или же все-таки использовать 3-ю таблицу для определения соотвествия и установить внешние ключи?

использовать ...