如何检查表中的以下一致性?验证串行限制Mysql
表是这样的:
Employee:
employee_id | Name | job_title | department_name
所有员工都具有相同的职位必须属于同一个部门。
例如:作为库存经理工作的所有员工属于 部门运输。如果任何员工在其他 部门使用相同的职务工作,脚本必须显示 的违反 以下格式上面定义的一致性约束。
职位名称|雇员ID |部门名称
如何检查表中的以下一致性?验证串行限制Mysql
表是这样的:
Employee:
employee_id | Name | job_title | department_name
所有员工都具有相同的职位必须属于同一个部门。
例如:作为库存经理工作的所有员工属于 部门运输。如果任何员工在其他 部门使用相同的职务工作,脚本必须显示 的违反 以下格式上面定义的一致性约束。
职位名称|雇员ID |部门名称
没有完全单独CONSTRAINTS
可能的,因为你仍然需要依赖于不存储数据。这可以通过另一个查询表来讨论JOB_TITLE
和DEPARTMENT
之间的关系。
之前,除非是不是实现了关系,这一要求可能不会像您期望的工作。
以下应该做你所期望的:
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)
);
希望这有助于!
当然,您job_dept_relationship表上的唯一键只是说标题和部门的组合是唯一的,这不会停止在不同部门中拥有相同的标题。 –
@NigelRen,它需要加强。我所建议的是一个近似解决方案(基于OP的假设)。 –
相信大家可能已经给出了同样的任务,同时参加同一所大学。我现在就解决这个问题,这些表格可能会帮助其他人看到。我仍然习惯于在这里格式化。
我不允许张贴图片,所以我会尝试发送一个链接,而不是,也许是适当的用户可以编辑这个对我来说,谢谢:http://imgur.com/a/FeFRz
哪里/你是怎么定义'股票manager'应该属于'运送'? – Utsav
谢谢你的回复。它没有定义,但对于这个任务,我们假设股票经理属于运输部门。 –
'假设'在编码时不起作用。其他部门呢?如果你需要输出,你需要有一个主源或类似的东西。 – Utsav