验证一致性约束Mysql

时间:2017-05-27 03:42:43

标签: mysql constraints

如何检查表格中的以下内容?

表是这样的:

Employee:

employee_id | Name | job_title | department_name
  

所有具有相同职位的员工必须属于同一部门。

     

例如:作为股票经理的所有员工都属于   部门运输。如果任何员工在另一个员工中工作   具有相同职称的部门,脚本必须显示   违反上面定义的一致性约束   格式如下。

JOB TITLE |员工ID |部门名称

2 个答案:

答案 0 :(得分:0)

单独使用CONSTRAINTS并非完全可能,因为您仍然需要依赖于未存储在任何地方的数据。这可以通过另一个只讨论JOB_TITLEDEPARTMENT之间关系的查找表来实现。

除非达不到这种关系,否则此要求可能无法按预期运作。

以下内容应该符合您的期望:

CREATE TABLE JOB_DEPT_RELATIONSHIP AS (
    JOB_TITLE VARCHAR(255) NOT NULL PRIMARY KEY,
    DEPARTMENT VARCHAR(255) NOT NULL,
    UNIQUE(JOB_TITLE, DEPARTMENT)
);

然后您的实际表格可以这样定义,我想:

CREATE TABLE EMPLOYEE AS (
    EMPLOYEE_ID INT AUTO_INCREMENT PRIMARY KEY,
    EMPLOYEE_NAME VARCHAR(255) NOT NULL,
    JOB_TITLE VARCHAR(255) NOT NULL,
    DEPARTMENT_NAME VARCHAR(255) NOT NULL,
    CONSTRAINT FK_JOB_DEPT_RELATIONSHIP FOREIGN KEY (JOB_TITLE, DEPARTMENT_NAME) REFERENCES JOB_DEPT_RELATIONSHIP(JOB_TITLE, DEPARTMENT)
);

希望这有帮助!

答案 1 :(得分:0)

我相信在参加同一所大学时,我们可能会得到同样的任务。我现在对此表示赞同,这些表可能有助于其他人看到。我仍然习惯于这里的格式化。

我不允许发布图片,所以我会尝试发送链接,也许正确的用户可以为我编辑,谢谢:http://imgur.com/a/FeFRz