我有兩個表:一般多對一對多的關係問題(PostgreSQL系統)
CREATE TABLE "public"."auctions" (
"id" VARCHAR(255) NOT NULL,
"auction_value_key" VARCHAR(255) NOT NULL,
"ctime" TIMESTAMP WITHOUT TIME ZONE NOT NULL,
"mtime" TIMESTAMP WITHOUT TIME ZONE NOT NULL,
CONSTRAINT "pk_XXXX2" PRIMARY KEY("id"),
);
和
CREATE TABLE "public"."auction_values" (
"id" NUMERIC DEFAULT nextval('default_seq'::regclass) NOT NULL,
"fk_auction_value_key" VARCHAR(255) NOT NULL,
"key" VARCHAR(255) NOT NULL,
"value" TEXT,
"ctime" TIMESTAMP WITHOUT TIME ZONE NOT NULL,
"mtime" TIMESTAMP WITHOUT TIME ZONE NOT NULL,
CONSTRAINT "pk_XXXX1" PRIMARY KEY("id"),
);
如果我想創建像auction_value_key一個多一對多的關係這樣的:
ALTER TABLE "public"."auction_values"
ADD CONSTRAINT "auction_values_fk" FOREIGN KEY ("fk_auction_value_key")
REFERENCES "public"."auctions"("auction_value_key")
ON DELETE NO ACTION
ON UPDATE NO ACTION
NOT DEFERRABLE;
我得到這個SQL錯誤:
ERROR: there is no unique constraint matching given keys for referenced table "auctions"
問:
正如你可能會看到,我想「auction_values」將被「重用」,由不同的拍賣,而無需複製他們每次競價...所以我不想在一個關鍵關係拍賣表中的「id」字段...
我在這裏想錯了什麼,或者是什麼交易? ;)
感謝
這是典型的做法規範化,布拉沃 – stjohnroe 2010-05-11 10:45:14
或許沒錯,但不一定:)也許'auction_value_key'組行的集合來自'auction_values'?在這種情況下,提出的模式是不正確的。 – Unreason 2010-05-11 13:25:19