Zac*_*ach 54 postgresql foreign-keys foreign-collection
我正在尝试为我的应用程序创建一个数据库,有一件事我想找到最好的方法是创建我Users和Items表之间的一对多关系.
我知道我可以做一个第三个表,ReviewedItems和具有列是一个UserID和一个ItemID,但我想知道是否有可能使一列Users,让我们说reviewedItems,这是一个包含外键的整数数组Items是该User审查.
如果PostgreSQL可以这样做,请告诉我!如果没有,我会走下我的第三张桌子路线.
Jar*_*rym 49
可能很快就可以这样做:https://commitfest.postgresql.org/17/1252/ - Mark Rofail在这个补丁上做了一些出色的工作!
补丁将(一旦完成)允许
CREATE TABLE PKTABLEFORARRAY (
ptest1 float8 PRIMARY KEY,
ptest2 text
);
CREATE TABLE FKTABLEFORARRAY (
ftest1 int[],
FOREIGN KEY (EACH ELEMENT OF ftest1) REFERENCES PKTABLEFORARRAY,
ftest2 int
);
Run Code Online (Sandbox Code Playgroud)
但是,作者目前需要帮助来修改补丁(超出我自己的能力)所以任何读过这个知道Postgres内部人员的人都可以提供帮助.
Pat*_*ick 47
不,这是不可能的.
PostgreSQL是一个关系型 DBMS,在正确规范化的数据模型上运行效率最高.根据定义,数组是有序集 - 而不是关系数据结构,因此SQL标准不支持在数组元素上定义外键,PostgreSQL也不支持.
但是,您可以使用链接到其他表中主键的数组元素构建一个完美的数据库.但是,这些数组元素不能声明为外键,因此DBMS不会保持引用完整性.
| 归档时间: |
|
| 查看次数: |
23613 次 |
| 最近记录: |