를 업데이트하는 나는 다음과 같은 테이블이 있습니다모범 사례는 EAV 테이블 행
SubjectID AttributeID ValueID
1 1 2
1 1 3
1 2 1
2 1 3
2 2 1
1 3 1
속성은 (동일한 속성에 대해 위의 표에서 여러 모습) 여러 값을 가질 수 있습니다. 동일한 속성 (다른 값)에 대해 얼마나 많은 모양이 사용되는지에 대한 제약이 없습니다.
Select * from Subject WHERE SubjectID=1 AND AttributeID=1
--returns:
SubjectID AttributeID ValueID
1 1 2
1 1 3
후 :
나는 그렇게
하기 전에, 단 1 AttributeId에 1 곳으로 ValueID을 변경, SubjectID = 1 주제를 업데이트 할 wan't
Select * from Subject WHERE SubjectID=1 AND AttributeID=1
--returns:
SubjectID AttributeID ValueID
1 1 1
나는 선택적 매개 변수 (모두 null 및 제공된 속성 만 업데이트하십시오.) 이제는 문제가되지 않습니다. 내 질문 :
이 행을 업데이트하는 가장 좋은 방법은 무엇입니까? 다음 대답을 실행 가능한 것으로 봅니다.
- 지정된 속성이 포함 된 모든 행을 삭제 한 다음 새 속성을 삽입하십시오.
- (지정된 주제에 대한) 해당 유형의 하나의 속성을 업데이트 하나 (1이 아닌보다이 같은 속성이있는 경우 좋은 해결책)
다른 아이디어가 있다면?
당신이 다른 곳에서 각 주제 속성 쌍에 대한 여러 값을 사용하고 있습니까? 그렇지 않다면, 나는 이것을 제거하고 재발생을 막기 위해 테이블 디자인을 업데이트 할 것을 권한다. 이렇게하면이 테이블에서 작성한 모든 쿼리/SP가 단순 해집니다. 이러한 기록을 보관해야하는 경우 트랜잭션 내에서 삭제 한 다음 삽입합니다. –
나는 정말로 선택의 여지가 없다. 거의 완성 된이 디자인을 구현해야만했다. o.O – berthos