Мне нужно связать таблицу suppliers(поставщики) с goods(товары) связью один ко многим. Suppliers главная таблица, goods - дочерняя. Связывать нужно табл. Suppliers ключевым полем sups_c_suplr с полем gds_c_suplr табл.goods. Как связать эти таблицы по указанным полям? Что для этого нужно создать и сделать? Можно ли в PostgreSQL посмотреть потом связи между таблицами в графическом виде и как?
Я делал так:
1) Создал индекс для поля gds_c_suplr.
2) Нажав по таблице suppliers правой кнопкой я выбрал создать вторичный индекс (Foreign Key).
3) В закладке Properties в поле References(ссылка) выбрал таблицу goods.
4) В закладке Columns в поле Local Column выбрал sups_c_suplr.
5) В поле Referencing выбрал gds_c_suplr.
6) Нажал кнопку Add.
7) И мне выводится ошибка: "ERROR: there is no unique constraint matching given keys for referenced table 'goods' "
Если я выше описанным способом свяжу два ключевых поля таблиц, то ошибка не вылетает.
Скажите пожалуйста что я сделал не так?
Описание таблиц:
CREATE TABLE suppliers
(
sups_c_suplr integer NOT NULL DEFAULT 0, -- Код поставщика
sups_surname character(10) NOT NULL,
sups_first_name character(10) NOT NULL,
sups_firm character(15) NOT NULL,
sups_telephone character(15) NOT NULL,
sups_passport_num character(8) NOT NULL,
sups_ident_num character(10) NOT NULL,
CONSTRAINT sups_c_suplr PRIMARY KEY (sups_c_suplr),
CONSTRAINT suppliers_sups_c_suplr_fkey FOREIGN KEY (sups_c_suplr)
REFERENCES goods (gds_c_goods) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
CREATE TABLE goods
(
gds_c_goods integer NOT NULL DEFAULT 0,
gds_manufact character(15),
gds_name character(30),
gds_price numeric,
gds_c_suplr integer,
CONSTRAINT gds_c_goods PRIMARY KEY (gds_c_goods)
)
WITH (
OIDS=FALSE
);
ALTER TABLE goods OWNER TO postgres;
-- Index: ind_gds_c_suplr
-- DROP INDEX ind_gds_c_suplr;
CREATE INDEX ind_gds_c_suplr
ON goods
USING btree
(gds_c_suplr);
Прочите документацию про
Прочите документацию про внешние ключи:
http://postgresql.ru.net/manual/ddl-constraints.html#DDL-CONSTRAINTS-FK
если после прочтения останутся вопросы, задавайте
Статья помогла! Спасибо!
Статья помогла! Спасибо!