在postgres
数据库中,我有两个关系,student
和project
。对于学生关系,我将studentid作为主键。在项目关系中,我想添加一个学生id列表作为外键。我编写的查询如下:CREATE TABLE project(projectid varchar(36), name text, participants varchar[] REFERENCES student(studentid));
它给了我一个错误:Key columns "participants" and "studentid" are of incompatible types varying[] and character varying
如何引用列表中的每个个体作为postgres中其他关系的引用?
1条答案
按热度按时间41zrol4v1#
项目和学生之间的参与者关系不是项目的属性(也不是学生的属性)。该关系应建模为链接项目和学生的关联表:
将参与者存储为项目的数组属性有几个问题。其中两个问题是难以维护引用完整性,以及难以识别学生是哪些项目的参与者。这两个问题都可以通过使用具有适当外键约束和索引的关联表来解决。