我有以下情况:
我有一张表格,其中包含各种语言的文本条目。它被定义如下:
CREATE TABLE text
(
textid character varying(70) NOT NULL,
language character varying(10) NOT NULL,
content text NOT NULL,
CONSTRAINT text_pk PRIMARY KEY (textid , language ),
CONSTRAINT languages_text_fk FOREIGN KEY (language)
REFERENCES languages (language) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT
);
语言表只是一个语言代码列表,与实际情况并不相关。
现在,在另一个表格中,我需要引用一段文本,但我不需要也不知道将使用哪种语言检索该文本。我只知道要检索的文本id。实际语言将由阅读文本的用户在运行时指定。
起初我创建了这个:
CREATE TABLE content_text
(
contentid character varying(70) NOT NULL,
textid character varying(70) NOT NULL,
CONSTRAINT content_text_pk PRIMARY KEY (contentid , textid ),
CONSTRAINT content_text_text_fk FOREIGN KEY (textid)
REFERENCES text (textid) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT
);
出现错误:
ERROR:对于被引用的表“text”,没有匹配给定键的唯一约束条件
我知道为了避免这个错误,我必须创建一个只包含textid的中间表格,该表格将由content和text引用,但我真的觉得这是过度设计了...仅仅为了这个而创建一张表格,尽管textid不是唯一的,但在我的想法中,它不应该被拒绝...
是否有更优雅的方法来解决这个问题?