如何在数据库中实现ONE-TO-MANY

14 rdbms database-design foreign-keys

我想在我的应用程序中实现一对多的概念.这是场景:我有两张桌子

(一世).人(身份证,姓名,年龄,部门)
(ii).人员责任(ID,RESP'S)

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

任何建议或链接,以了解这个概念将不胜感激.

Ed *_*ess 20

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

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

每项责任仅属于一个人.

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

首先,您需要向RESPS添加指向人员表的列.

我们将这个新列称为PERSON_ID.

现在我们可以声明关系,代码可能看起来像这样;

ALTER TABLE [Responsibilities] ADD CONSTRAINT FOREIGN KEY (PERSON_ID) 
REFERENCES [Person] (ID)
Run Code Online (Sandbox Code Playgroud)

这种外键约束的声明意味着从现在开始,如果没有指定拥有该责任的人,则无法添加责任.

但是你仍然可以添加一个没有责任的人(因为人员表上没有约束).

请注意,这是所有类型的学术,因为在现实生活中责任是共享的.

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

这被称为多对多关系,并且是一个众所周知的数据库设计问题,具有明确定义的解决方案 - 我现在不会涉及这个问题,因为它与您的问题相关.