가 나는 작업 및 로그 테이블이 있다고 가정하자 FK 제약 조건을 테이블 삭제하는 경우 :모범 사례
tbl_tasks
Id Name ProjectId
-----------------------------------
1 Walk the dog 1
2 Check the mail 1
tbl_log을
Id TaskId CreatedDateTime
--------------------------------
1 1 6/3/13 7:18am
2 2 6/3/13 7:18am
3 1 6/3/13 7:18am
로그 테이블은 영구 r이어야합니다. 이벤트의 ecord. 그러나 사용자가 작업을 삭제하면 몇 가지 해결책을 염두에 둔 무결성 문제가 발생합니다.
. 로그 테이블에서 TaskIn을 사용하는 대신 작업 이름을 사용하십시오. 나는이 접근 방식의 팬이 아니지만 쉬운 해결책입니다.
tbl_log
Id TaskName Credits
---------------------------------
1 Walk the dog 2
2 Check the mail 1
3 Walk the dog 2
2. 태스크가 프로젝트와 1 : m 관계를 가질 수 있도록하는 다른 테이블을 도입하십시오. 그러나 실제로는 1 : 1이 될 것이고 taskId를 pk (고유 제한 조건)로 사용함으로써 시행 될 것입니다. 작업을 삭제하는 대신 작업과 프로젝트 간의 관계를 삭제하십시오. 나는 모든 작업이 FK가없는 절단 된 나머지 모든 쓰레기를 좋아하지 않는다. 내가 추측하는 것은 대다수의 경우 일 것이다.
tbl_tasksInProject
TaskId ProjectId
-------------------
1 1
2 1
이 다루는 가장 좋은 방법은 무엇입니까?