1

이 개 원칙 테이블과 SQL Server의 일대일 관계 구현 :나는이 세 테이블이

1 :

enter image description here

2 :

enter image description here

SellChequeFinancialTransaction에 종속됩니다. 첫 번째 그림에서 보았 듯이 FinancialTransactionId을 종속 테이블에 넣었지만 필자가 아는 한 종속 테이블에 FK를 넣어야하기 때문에 올바른지 확신 할 수 없습니다. 다른 방법으로 FinancialTransaction (그림 2)에 ByeIdChequeId을 입력하면 그 중 하나는 항상 비어 있으므로 어떤 방법이 옳은지 모르겠습니다. 그리고 원칙 테이블은 둘 이상일 수 있습니다.

+0

최소한 구매와 수표가 나타내는 것은 분명하지 않습니다. 분명히 할 수 있습니까? 그들은 다른 칼럼을 포함합니까? –

+0

@ Sam Bauwens : 예, 그들은 다른 열을 가지고 있습니다. 시나리오는 돈이 수표 또는 매도 형태로 올 수 있다는 시나리오입니다. –

+0

확인 및 판매에는 동일한 열이 있습니까? – Saksham

답변

1

첫 번째 방법이 더 좋으며 단점이없는 것으로 보입니다.

그러나 그 순서로만 종속성을 유지하려는 경우 더 나은 방법은 동일한 열이 있고 다른 부울 열을 추가하는 경우 check 및 sell 테이블을 결합하는 것입니다. IsCheque이 true로 설정됩니다. 또는 지불 모드에 따라 False입니다.

편집 :

다른 접근 방식은 PayModeID으로 부울 열 IsPaymenyCheque와 다른 열을 취할 수 있습니다. IsPaymenyCheque을 기준으로 PayModeID 테이블을 참조하십시오.

매번 부울 값을 확인해야하므로 쿼리가 복잡해집니다. 또한 외래 키 제약 조건을 제거해야합니다.

+0

Saksham : 고마워요. 당신이 매우 친절합니다.) 첫 번째 것을 선호합니다. 하나의 원칙과 하나의 종속 테이블 인 경우 두 번째 테이블이 더 좋을 것입니다. 왜냐하면 캐스케이드 관계를 가질 수 있기 때문입니다. 해결책이 더 좋다. –

+0

답변을 수락하거나 좋아요를주세요 :) – Saksham

0

두 번째 해결책은 금융 거래가 최대 1 회 수표와 1 회 판매를 가질 수 있다는 규칙이 적용된다는 점에서 더 좋습니다.

+0

내가 말했듯이 그 중 하나는 항상 비어 있습니다! 수표 나 매도인을 가질 수 있습니다! –

+1

nullable 값에 외래 키를 가질 수 있습니다. @raha 값 중 하나를 비워두면 문제가 많지 않습니다. –

+0

구현할 수 있지만 외래 키를 null로 설정하는 것은 좋지 않습니다. 내 잘못이야. – Saksham