매주 고객 데이터 변경 사항을 추적하는 표가있는 시스템이 제공되었습니다. 매주 레코드는 customer_id와 연관된 action_id와 함께 새로운 file_id 번호를 생성합니다. 이는 update 'U'가됩니다. 다음 기본 키가 있습니다.기본 키 모범 사례 제거
ALTER TABLE t_customer_file
ADD CONSTRAINT CUSTF_PK PRIMARY KEY (file_id, customer_id, action_id);
고객 업데이트가 일주일에 두 번 나타날 수 있도록 변경되었습니다. 따라서 file_id, customer_id 및 action_id는 같아 지므로 기본 키가이 테이블을 채우는 데 실패합니다.
그래서 새로운 기본 키를 제거하고 기본 키를 사용하지 않는 것이 가장 좋습니다.
현재 기본 키를 삭제했습니다. 그런 다음 같은 이름의 동일한 필드 대신 색인을 붙입니다. 더 많은 열이있는 새로운 기본 키를 만들 겠지만 테이블에는 단 5 개의 열만 있습니다. 각 열은 업데이트 된 데이터 만 포함합니다. 다음은 중복 된 행을 얻기 위해 수행 한 작업이며, t_customer_file
의 데이터를 사용하는보기를 컴파일했습니다.
alter table t_customer_file
drop constraint CUSTF_PK
drop index;
create index CUSTF_PK on t_customer_file (file_id,customer_id,action_id);
alter view customer_file compile;
이 시나리오의 우수 사례에 대한 도움이 될 것입니다.
변경 사항이 발생한 날짜가 포함 된 다른 열, 예를 들어'change_date '를 만들어야하는 것처럼 들립니다. 그런 다음 기본 키'file_id, customer_id, action_id, change_date '를 만드십시오. 일주일에 두 번의 변경 사항이있는 경우 현재 어떤 작업이 먼저 발생했는지 모릅니다. –
@ElectricLlama : 타임 스탬프는 날짜보다 좋을 수도 있습니다. –
아마도. 나는 원래의 포스터를 남겨두고 그것을 반추한다. –