많은 응용 프로그램, 중요한 응용 프로그램, 은행 등이 매일이 작업을 수행한다고 확신합니다.
그 모든 아이디어는 다음과 같습니다.
- 모든 행에는 히스토리가 있어야합니다
- 모든 링크는 일관성을 유지해야합니다
- "현재"열을 가져 오도록 요청하는 것이 쉬워야합니다.
- 더 이상 사용하지 않는 제품을 구매 한 고객은이 제품이 더 이상 카탈로그의 일부가 아니더라도 구매 한 제품을 확인해야합니다.
등등.
여기에 내가하고 싶은 일이 있으며, 내가 직면 한 문제에 대해 설명하겠습니다.
내 모든 테이블에는 해당 열이 있습니다.
id
id_origin
date of creation
start date of validity
start end of validity
CRUD 작업에 대한 아이디어는 다음과 같습니다.
- 작성 =
id_origin
=id
,date of creation
= now,start date of validity
= now,end date of validity
= null을 사용 (= 현재 활성 레코드임을 의미) - 업데이트 =
- 읽기 = 모든 레코드 읽기
end date of validity
null 인 - "현재"레코드
end date of validity
= null 업데이트end date of validity
= now로 - 새로운 값으로 새로운
end date of validity
것을 만들고 = null (= 현재 활성 레코드임을 의미)
- 읽기 = 모든 레코드 읽기
- delete = "현재"레코드를 업데이트합니다
end date of validity
= nullend date of validity
= now
그래서 여기에 내 문제가 있습니다 : 다 대다 협회. 값을 가진 예제를 보자 :
- 표 A (id = 1, id_origin = 1, start = now, end = null)
- 표 A_B (시작 = 현재, 종료 = 널, id_A = 1, id_B = 48)
- 표 B (id = 48, id_origin = 48, start = now, end = null)
이제 테이블 A, 레코드 id = 1을 업데이트하고 싶습니다.
- end = now로 레코드 id = 1을 표시합니다.
테이블 A에 새 값을 삽입하고 관계를 복제 하지 않으면 관계 A_B를 잃어 버렸 습니다. 이것은 테이블로 끝납니다.
표 A (id = 1, id_origin = 1, start = now, end = now + 8mn)
- 표 A (id = 2, id_origin = 1, start = now + 8mn, end = null)
- 표 A_B (시작 = 현재, 종료 = 널, id_A = 1, id_B = 48)
- 표 A_B (시작 = 현재, 종료 = 널, id_A = 2, id_B = 48)
- 표 B (id = 48, id_origin = 48, start = now, end = null)
그리고 ... 또 다른 문제가 있습니다 : 관계 A_B : (id_A = 1, id_B = 48)을 더 이상 사용하지 않는 것으로 표시해야합니까 (A-id = 1은 사용되지 않지만 B-48은 아닙니다)?
이것을 다루는 방법?
제품, 파트너 등 대규모로 설계해야합니다.
이것에 대한 당신의 경험은 무엇입니까? 어떻게 하시겠습니까 (어떻게 했습니까)?
-- 편집하다
이 매우 흥미로운 기사를 찾았 지만 "캐스 케이 딩 노후화"(= 실제로 묻는 것)를 제대로 다루지 않습니다.