2013-08-21 2 views
0
Table employee 
{ 
employeename //employeename is unique 
} 

Table job 
{ 
jobid,job,assignedPerson,status 
} 

assignedPerson는 참조
는 내가 원하는 것은 작업 테이블 즉 I에서 자신의 기록을 제거 할 필요없이 직원 레코드를 삭제하는 방법을 알고있다 (직원) employeename 할 수있는 외래 키가 될 수 .. 내가 작업 기록을 유지하고 그 사람이 더 이상 직원 인 경우에도 작업이 할당 된 사람이보고 싶어는 외래 키는 선택

Table employee 
{ 
employeename 
} 

Table jobemployee 
{ 
jobid,assignedPerson 
} 

Table job 
{ 
jobid,job,status 
} 

을 의미 내가 이렇게해도 나는 경우 jobemployee에서 레코드를 삭제해야합니다 I 직원의 기록을 '직원'테이블에서 삭제하려고하고 어떤 사람이 작업을 할당 받았는지 알 수 없습니다.
도와주세요 ..

+0

직원의 이름을 저장할 작업 테이블에 colunm을 만들거나 직원의 이름과 키만 저장하는 특수 테이블을 만들고 일부 레코드를 삭제할 때 링크를 만들어야합니다. – guisantogui

+0

직원 테이블을 사용하여 테이블에 저장된 모든 레코드를 표시하고 사용자가 레코드를 선택하게 할 때 assignedPerson에서 외래 키 제약 조건을 제거하면 어떨까요? 선택한 레코드는 직원 테이블의 레코드 여야합니다. 그리고 나서 선택된 employeeName을 특정 작업에 대해 assignedPerson에 추가합니다. 할당 된 사람은 employee 테이블 레코드에서 하나가되어야합니다. 그래서 외래 키 제약 조건을 제거하더라도 문제는 없습니다. 옳은? 그리고 직원 기록을 삭제하고 작업 테이블에 assignedPerson 기록을 유지하는 것이 쉽습니다. 맞습니까? – ash

+0

외래 키를 삭제하고 직원 기록을 삭제하면 다시 방문 할 것입니다. 질문이 끝나면 문제를 직접 설명합니다. 이름에 대한 고유 한 제한 조건이 반드시 좋은 아이디어는 아 U니다. –

답변

1

최상의 옵션은 deleted에 대한 Employee 테이블에 플래그를 추가하는 것입니다.

해결 방법은 열을 job 테이블에 추가하는 것입니다. employee을 삭제하기 전에 assignedPerson 열을 null으로 설정하고 그 값을 assignedNonEmployee 열에 복사하십시오. 이후 열에 외래 키 제약 조건이 없으므로 이제 employee 레코드를 삭제할 수 있습니다.

+0

그게 좋은데 .. 고마워 .. :) – ash

+0

employee 테이블을 사용하여 레코드를 선택하고 사용자가 레코드를 선택하게 할 때 assignedPerson에서 외래 키 제약 조건을 제거하면 어떨까요? 선택한 레코드는 직원 테이블의 레코드 여야합니다. 그리고 나서 선택된 employeeName을 특정 작업에 대해 assignedPerson에 추가합니다. 할당 된 사람은 employee 테이블 레코드에서 하나가되어야합니다. 그래서 외래 키 제약 조건을 제거하더라도 문제는 없습니다. 옳은? 그리고 직원 기록을 삭제하고 작업 테이블에 assignedPerson 기록을 유지하는 것이 쉽습니다. 맞습니까? – ash

+0

귀하의 경우에 적절한 것으로 보입니다. 그러나 제약 조건을 제거하면 작업의 직원 이름과 직원 테이블 간의 불일치와 같은 불일치가 발생합니다. 그것이 권장되지 않는 이유입니다. – Andomar