2013-10-15 6 views
1

SQL Server Express 2012를 사용하고 있으며 두 테이블의 관계를 만들려고합니다. 즉, 같은 테이블의 두 FK와 다른 테이블의 한 PK를 비교하려고합니다.두 개의 FK를 하나의 PK로 변환

의 관계는 데이터베이스 다이어그램에 표시하기 때문에 작동하는 것 같다하지만 변경 사항을 저장하려고 할 때, 나는 다음과 같은 오류가 나타날 수 있습니다 PK입니다 회원에

'Members' table saved successfully 'BookedResources' table - Unable to create relationship 'FK_BookedResourcesMemberId_MembersMemberId'.
The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "FK_BookedResourcesMemberId_MembersMemberId". The conflict occurred in database "resursBokning2", table "dbo.Members", column 'MemberId'.

MEMBERID합니다.

BookedResouce.EditedBy (FK) -> Member.MemberId (PK)
BookedResouce.MemberId (FK) -> Member.MemberId (PK)

누구나이 오류에 대해 무엇인지? 필자는 이런 종류의 관계가 제대로 작동하도록해야한다고 읽었습니다.

답변

0

오류는 어쩌면 두 번 외래 키에 같은 이름을 사용하기 때문에, 그래서, 다른 값으로 두 번째의 이름을 변경 발생 예를 들면 : 당신이 그것을 제공 한 오류에서

FK_BookedResourcesMemberId_MembersMemberId2 
+0

원래 BookedResource 테이블의 레코드를 만든 멤버는 MemberId에 저장 될 수 있습니다. 이 경우 중복 된 데이터가 없습니다. – RFerwerda

+0

그게 맞아요, 한 명만 만들면 다른 한명 만 편집 할 수 있습니다. 당신이 무엇을 쓰는가를 보면, 하나의 fk는 EditedBy, 다른 fk MemberId입니다. – MikeAlike234

+0

@ david2342 kinske는 관련 열의 이름이 아니라 FK의 이름을 참조합니다. 당신의 경고는 둘 다'FK_BookedResourcesMemberId_MembersMemberId'라고 불렀다. 우연히 동일한 열 관계를 두 번 추가하려했을 가능성이있다. 아마도 이것들을 다시 확인해야 할 것이다. – Amber

0

두 외래 키의 이름을 똑같이 지정하려고 한 것처럼 보입니다. @kinse가 암시 하듯이 각 외래 키 관계에 고유 한 이름을 지정하십시오. 또한 동일한 테이블에 두 개의 외래 키가 필요한지 여부를 고려하십시오. 데이터베이스 모델이 불완전하다는 것을 나타낼 수 있습니다.

회원이 다른 회원을 편집하지 않는다고 가정하므로 EditedBy (회원)와 MemberId가 회원 테이블에 불필요한 것처럼 보입니다.