Primary Key Unique Constraint 混淆/解决办法

Primary Key Unique Constraint confusion / solution

我有一个包含员工、技能 table 和技能集 table 的数据库:

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));

我的员工可以拥有多种技能,这存储在技能集 table 中。 我收到 ORA-00001:当我尝试从技能 table.

中为多个员工分配一项技能时,违反了唯一约束 (YSKILLSETID)

这对我来说很有意义,我仍在寻找一种解决方案,让多名员工拥有多种技能。

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

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);

screenshot of test

我的问题:

我认为清楚地表述问题域会有所帮助。我认为:

系统有很多员工。 系统有很多技能。 一个员工可能拥有零个或多个技能。 一项技能属于零个或多个员工。

如果是这样,您将得到以下表格:

Employee
----
ID (pk)
...

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

Employee_skill
--------------
employee_id (fk)
skill_id (fk)
....