database-design - 如何在数据库中实现一对多

标签 database-design foreign-keys rdbms

我要实现 一对多我的应用程序中的概念。
这是场景:我有两张 table

(一世)。人员(ID、姓名、年龄、部门)
(二)。个人责任(ID,RESP'S)

一个人可能有不止一种责任。我应该如何在这里实现 1-n 关系?
实际上,我不明白这个的正确概念。

任何理解这个概念的建议或链接将不胜感激。

最佳答案

这种一对多关系可以像这样用简单的英语解释......

一个人有一个或多个责任,



每一项责任都只属于一个人。

现在,根据您使用的 rdbms,您可以将其实现为外键关系。

首先,您需要向 RESPS 添加一个指向 person 表的列。

我们将此新列称为 PERSON_ID。

现在我们可以声明关系了,代码可能是这样的;

ALTER TABLE [Responsibilities] ADD CONSTRAINT FOREIGN KEY (PERSON_ID) 
REFERENCES [Person] (ID)

并且这个外键约束的声明意味着从现在开始你不能在不指定拥有该责任的人的情况下添加责任。

但是您仍然可以添加一个没有责任的人(还),因为在 person 表上没有限制。

请注意,这都是学术性的,因为在现实生活中责任是共同的。

换句话说,一个人可能有一个或多个责任,但每个责任可能属于一个或多个人。

这称为多对多关系,是一个众所周知的数据库设计问题,具有明确定义的解决方案 - 我现在不会讨论它,因为它与您的问题无关。

关于database-design - 如何在数据库中实现一对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3607783/

相关文章:

sql-server - 设计评论表

mysql - 如何在 MySQL 中使用别名对城市建模

c# - 首先使用 ASP.NET MVC 4 迁移代码的foreignkey

SQL - 按自定义 24 小时周期对结果进行分组

database-design - 类Wave协作系统的数据库设计

laravel - 一般错误 : 1824 Failed to open the referenced table

mysql - 创建组合键和外键之间的关系

mysql - 从数据库表中删除数据的最佳实践是什么?

java - 如何使用 JPA 持久化复杂的嵌套对象

mysql - 数据库规范化设计问题 : 2 tables sharing almost the same information