首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >主键唯一约束混淆/解决方案

主键唯一约束混淆/解决方案
EN

Stack Overflow用户
提问于 2021-07-16 13:46:54
回答 1查看 68关注 0票数 0

我有一个员工数据库、一个技能表和一个技能集表:

代码语言:javascript
复制
CREATE TABLE EMPLOYEE (
    EmployeeID NUMBER (5, 0) NOT NULL,
    *.....other fields*
CONSTRAINT EMPLOYEE_PK PRIMARY KEY (EmployeeID));


CREATE TABLE SKILL(
SkillID NUMBER (5, 0) NOT NULL,
Description VARCHAR2(30),
CONSTRAINT SKILL_PK PRIMARY KEY (SkillID),
CONSTRAINT SKILL_FK FOREIGN KEY (EmployeeID) REFERENCES EMPLOYEE(EmployeeID));

CREATE TABLE SKILLSET(
    SkillSetID NUMBER (5,0) NOT NULL,
    EmployeeID NUMBER (5,0) NOT NULL,
    SkillID NUMBER (5,0) NOT NULL,
CONSTRAINT SKILLSET_PK PRIMARY KEY (SkillSetID)
CONSTRAINT SKILLSET_SKILL_FK FOREIGN KEY (SkillID) REFERENCES Skill(SkillID));
CONSTRAINT SKILLSET_EMP_FK FOREIGN KEY (EmployeeID) REFERENCES EMPLOYEE(EmployeeID));

我有能具备多种技能的员工,这些技能存储在技能集表上。当我试图从技能表为多个员工分配技能时,我得到了ORA-00001:唯一约束(YSKILLSETID)。

这对我来说是有意义的,我仍然在寻找一种解决方案,让多名员工具备多种技能。

然而,我的困惑在于,一个员工可以有很多技能,难道不应该受到独特的约束吗?

代码语言:javascript
复制
INSERT INTO SKILLSET VALUES (125, 31150, 2513);
INSERT INTO SKILLSET VALUES (124, 31150, 2523);
INSERT INTO SKILLSET VALUES (122, 31150, 8493);
INSERT INTO SKILLSET VALUES (121, 31153, 2141);
INSERT INTO SKILLSET VALUES (120, 31154, 2521);
INSERT INTO SKILLSET VALUES (119, 31154, 2141);
INSERT INTO SKILLSET VALUES (118, 31150, 2521);

测试截图

我的问题:

  • 我能做些什么来让很多员工接触到多种技能?
  • 为什么这对一个有很多技能的员工来说是有效的呢?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-16 14:22:55

我认为这将有助于清楚地表述问题领域。我认为:

这个系统有许多雇员。这个系统有很多技能。员工可能没有或更多的技能。一项技能属于零或多名雇员。

如果是这样的话,您可以使用以下表格:

代码语言:javascript
复制
Employee
----
ID (pk)
...

Skill
----
ID (pk)
Description 
...

Employee_skill
--------------
employee_id (fk)
skill_id (fk)
....
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68410133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档