如何檢查表中的以下一致性?驗證串行限制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