도구 : SQL2000/5/8 .NET 3.5, C#을레거시 데이터베이스와 외래 키 문제를 해결
나는 두 개의 테이블이있는 응용 프로그램을 가로 질러왔다. "코드"의 표는 다음과 같다 :
TABLE1 (1 - N) TABLE2
을그래서 표 (T1)는 ID를 가지고 : IdT1 및 표 2 (T2)의 해당 ID (IdT2)가 및 외래 키 t2.IdT1
이 1.N 관계는 어느 정도 적용되는 코드입니다. DB에 FK가 전혀 없었습니다. (이것을 고안 한 사람은 제약 조건이나 그와 유사한 것은 추가하지 않았다.)
문제 I는 TABLE1, 에 참조 된 행을 저장하는 애플리케이션 (정확하게) 미국 TABLE2에 IdT1를 사용하는 것으로했지만도 (0) 특별한 경우 제로 사용된다.
그래서 나는 (표 2)이 라인을 따라 뭔가가 있습니다
IDt2 IdT1 OtherFields
1 1 x
2 1 x
3 5 x
4 0 x
5 3 x
6 0 x
…
당신이 TABLE1에 inexistent 행에 행 4, 6 개 FK 점에서 볼 수 있듯이. 이 소프트웨어는 IF 문장이나 이와 유사하게 "추적"하는 곳이 많기 때문에 효과가 있습니다. 지금은 정말 좋은 생각이 아니라고 변경 (그 코드를 만지고 싶지 않을 것이다 "작품과 내가 작성하지 않은"지금)이 유일한 방법하지 않는 한,. (우리가 템플릿 코드로 자동으로 생성하고있는 FKS이없는 경우, 어떤 일이 생성되지 않습니다)
는 지금은 응용 프로그램의 다른 부분을 수정하고 있는데 나는 FKS을 가지고에게 데이터베이스를 필요로 . 가 위의 시나리오 감안할 때, 나는 "지금까지"제약 조건을 확인하지 않는 FK를 만들 수있는 방법은 무엇입니까? 이 (앱이 FK에서 아이디 = 0이 일에 5 년 이상 근무 것을 고려)는 "문제"가 될 것인가? 의견 있으십니까? Tks.
통찰력에 감사드립니다. 나는 (당신이 말한대로 그 목적이 패배 때문에)에 FK를 제거하고 코드로 작업하기로 결정했습니다. 마법의 행렬이 유혹에 빠졌지 만 나는 마법의 길을 택하지 않았다.) –