2016-07-05 4 views
0

다음과 같은 상황에서 어떻게 처리합니까?레코드를 편집하고 레코드가 승인 될 때까지 레코드를 보장하기위한 데이터베이스 기술

는 다음과 같은 필드가있는 고객 레코드가있는 테이블이 있습니다

id, name, email, phone 
1, John, [email protected], 515-222-3333 
2, Smith, [email protected], 515-333-444 

요한이 자신의 기록을 열고 자신의 전화 번호를 변경합니다. 그러나 관리자의 변경 사항이 승인 될 때까지 고객의 실제 기록을 변경해서는 안됩니다.

어떻게 이런 상황을 처리합니까?

시겠습니까?

a. Create an exact replica of customer table called customer-temp 
b. Copy the record of John into customer-temp 
c. let the admin review the updated record in customer-temp 
d. once approved, the record is replaced with the record of john in customer table and remove John's record from customer-temp 

이 방법이 최선의 해결책입니까, 아니면 더 좋은 방법입니까? 또한 고객 테이블에 릴레이션의 다른 테이블이 몇 개 있다면?

전문가의 조언을 부탁드립니다. 참고로 PostgreSQL 데이터베이스를 사용합니다.

----- 업데이트 형식

---

답변

0

나는 검토를 필요로 각 속성에 대한 추가 속성을 가질 것이다. 당신의 예에서

는 항목 수 :

name이 승인 된 이름, 사용자에 의해 편집 한 name_tmp 이름을 포함합니다.
승인시 name_tmp의 내용이 name에 복사됩니다.

그런 식으로 외래 키 관계에 아무런 문제가 없습니다. 당신이 정말로 기본 테이블의 속성을하지 않으려면 기본 키와 외래 키가 customer를 참조 당신이 id으로 제안처럼

customer_temp 테이블을 만듭니다. 단점은 그런 식으로 쿼리에 더 많은 조인이 필요하다는 것입니다.