当前位置: 首页 > 知识库问答 >
问题:

在SQL中,在父子关系中,有没有办法确保每个父级只链接到一个子级?

淳于涛
2023-03-14

我有一个父子关系,我想在我的数据库中确保每一个父母只链接到一个孩子。下面是我所拥有的一个例子

CREATE TABLE Parents (
       ParentId int NOT NULL,
       ...
       PRIMARY KEY (ParentId)
);

CREATE TABLE Children1 (
       ParentId int NOT NULL,
       ...
       PRIMARY KEY (ParentId),
       CONSTRAINT FK_Parent FOREIGN KEY (ParentId) REFERENCES Parents(ParentId)
);

CREATE TABLE Children2 (
       ParentId int NOT NULL,
       ...
       PRIMARY KEY (ParentId),
       CONSTRAINT FK_Parent FOREIGN KEY (ParentId) REFERENCES Parents(ParentId)
);

CREATE TABLE Children3 (
       ParentId int NOT NULL,
       ...
       PRIMARY KEY (ParentId),
       CONSTRAINT FK_Parent FOREIGN KEY (ParentId) REFERENCES Parents(ParentId)
);

CREATE TABLE Children4 (
       ParentId int NOT NULL,
       ...
       PRIMARY KEY (ParentId),
       CONSTRAINT FK_Parent FOREIGN KEY (ParentId) REFERENCES Parents(ParentId)
);

我想通过验证孩子的PK,确保每个家长只有一个孩子,但我不知道如何做,或者这是否可能

共有1个答案

薛欣荣
2023-03-14

父级是一个个体,子级是一个个体,子级可以有很多父级,因此一个表代表父级,一个表代表子级,一个连接表代表多个父级,父级上有一个唯一的键。

CREATE TABLE Parents (
       Id int NOT NULL,
       ...
       PRIMARY KEY (ParentId)
);

CREATE TABLE Children (
       Id int NOT NULL,
       ...
       PRIMARY KEY (Id),
);

create table parents_children(
  children_id int,
  parents_id int,
  unique key (parent_id),
  foreign key (children_id) references children(id),
  foreign key (parent_id) references parents(id)
);
 类似资料:
  • 问题内容: 我不知道如何选择查询递归。 如何使用SqlServer取得这样的结果 问题答案: 您需要使用递归公用表表达式。 在线上有很多有用的文章。 有用的链接 简单谈谈:SQL Server CTE基础 blog.sqlauthority:递归CTE 这是您的问题的解决方案:

  • 问题内容: SQL开发人员,我有一个计划不周的数据库作为任务,以学习有关SQL Server 2012的很多知识。 所以,有表: 更新该行后,我需要检查element的父键,以不允许element自anny之类。 当我删除该行时,我需要删除所有孩子以及孩子的孩子,等等。 问题是: 如何选择DIST的一个元素的所有“父母+祖父母+等等”? 我如何选择DIST元素中的所有“儿子+孙子+等”? 我读过有

  • 问题内容: Book,User和Review说,我正在构建具有复杂模型的应用程序。 评论包含书籍和用户ID。为了能够搜索至少包含一个评论的“图书”,我已将“图书”设置为“评论”的父级,并且具有这样的路由。但是,我还需要找到撰写包含某些短语的评论的用户。 是否可以同时将书和用户作为评论的父级?有没有更好的方法来处理这种情况? 请注意,我无法更改数据建模的方式/不愿意这样做,因为数据已从持久性数据库传

  • 实现一对多关系并选择父项和子项我有一个关系,我想进行查询(选择*) 文件夹。JAVA 作者。JAVA 我的请求: 我得到了这样的结果: 我的代码有什么问题?什么是问题,当我执行查询我得到了这个结果...我想得到这个结果

  • 问题内容: 假设我有两个表,“父母”和“孩子”。父子关系是一个多对多关系,可通过标准的交叉引用表来实现。 我想查找使用SQL(特别是MS SQL Server的T-SQL; 2005语法可以接受)的给定子集的所有成员所引用的所有Parent记录。 例如,假设我有: List item Parent Alice Parent Bob Child Charlie references Alice, B

  • 我有两个从抽象类继承的类,它们有父子关系。 所以我使用了注释OneToOne和ManyToOne,但是子类中的父实体总是为空。有人能帮我吗,我花了几个小时谷歌和测试了许多conf,但没有成功。 这些是我的类中的代码: ... ... ... 如果我不添加@JoinCol列注释,JPA会创建一个关联表,但无法检索父级,而关联可以直接通过在数据库中请求来完成。 非常感谢你的帮助。 祝好