You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL创建1-to-1关系却显示为1-to-many的问题咨询

PostgreSQL 1对1关系的实现问题

PostgreSQL完全支持1对1关系,你当前的脚本之所以在ERD里显示为1对多,是因为缺少了关键约束。

你的现有代码里,country表的capital_id只是外键,但没加唯一约束——这意味着多个国家可以关联同一个首都,自然会被识别成1对多的关系。

下面给你两种常见的1对1关系实现方式:

方式1:可选的1对1关系(允许国家无对应首都)

给country表的capital_id添加UNIQUE约束,确保一个首都只能被一个国家关联:

CREATE TABLE capital (
  id SERIAL PRIMARY KEY, 
  name VARCHAR(100)
);

CREATE TABLE country (
  id SERIAL PRIMARY KEY, 
  name VARCHAR(100), 
  capital_id INTEGER UNIQUE,
  CONSTRAINT fk_capital FOREIGN KEY(capital_id) REFERENCES capital(id)
);

方式2:强制的1对1关系(国家必须对应一个首都)

把country表的主键直接设为关联capital的外键,这样每个国家必须绑定一个首都,且每个首都只能对应一个国家:

CREATE TABLE capital (
  id SERIAL PRIMARY KEY, 
  name VARCHAR(100)
);

CREATE TABLE country (
  capital_id INTEGER PRIMARY KEY,
  name VARCHAR(100), 
  CONSTRAINT fk_capital FOREIGN KEY(capital_id) REFERENCES capital(id)
);

内容的提问来源于stack exchange,提问作者quintendc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 23:14:51