2010-07-15 4 views
4

내 관계형 데이터베이스에 저장된 개체의 전체 복사본을 만들고 싶다면 건축 학적으로 근본적으로 잘못된 것을해야합니까? 이것은 제가 다른 질문에 대해 다른 질문입니다. (훨씬 자세하게) 질문했지만 Copying Relational Table Data이라는 응답을 많이받지 못했습니다.데이터베이스 및 완전 복사

답변

1

관계형 테이블이 나타내는 항목과 "비즈니스 오브젝트"를 빌드하기 위해 그룹화 된 엔티티 중 어떤 항목에 따라 다름니다. 예를 들어 모든 게시가 텍스트 행 목록으로 구성된 "게시"테이블과 "텍스트 _ 행"테이블이있는 컨텐트 관리 시스템의 관계형 모델이있는 경우 비즈니스 개체 "게시"의 유효한 복사본이 소속 된 Text_lines 엔티티와 함께 ​​"게시"엔티티의 전체 사본이어야합니다.

반면 "부서"와 "직원"이라는 두 개의 테이블이있는 경우 부서의 올바른 복사본은 전체 복사본이 아닙니다 (적어도 각 직원이 한 번에 정확히 한 부서에 연결되어있는 경우) 제 시간에). 관계형 데이터베이스 체계에서 이러한 종류의 차이는 종종 관계에 할당 된 참조 무결성 검사와 함께 사용됩니다. 관계 "Postings"-> "Text_lines"는 "ON DELETE CASCADE"무결성을 가진 외래 키 제약 조건을 사용하여 모델링 할 수 있습니다 (물론 데이터베이스에서 지원하는 경우). 그러나 "부서"-> "직원"은 이와 같은 "ON DELET CASCADE"점검을해서는 안됩니다.

2

반드시 그렇지는 않습니다. 나는 버전 관리 체계를 구현하는 데 많은 성공을 거두었 다. 기본적으로 전체 그래프는 버전 키가 될 수 있습니다 (키의 한 부분이 ID이고 버전이 버전 번호 인 compite 키 사용). 그래프 또는 하위 그래프의 모든 이전 버전에 쉽게 액세스 할 수있었습니다.

DB 설계자는이 계획을 권장합니다. 그의 견해는 많은 무게를 지니고 있었고 그 해결책은 제 첫 선택이 아니 었습니다. 그러나 결국 그것은 정말로 잘 돌아갔다.

2

일반적으로 부모 개체를 복사하는 경우 개체 자체가 아닌 자식 개체에 대한 참조 만 복사 할 수 있습니다. 그러나 특정 시점에서 객체의 상태를 유지하는 것처럼 하위 객체를 복사해야하는 경우가 있습니다. 따라서 귀하의 질문에 답하기 위해이 시나리오를 통해 생각을 멈추고 생각하게해야하지만 반드시 잘못된 행동을 의미하는 것은 아닙니다.

2

데이터베이스 개체의 탄력성 복제본이 필요한 경우 최선의 방법은 적어도 이후의 어떤 시점에서 변경 될 수있는 모든 항목을 복사하는 것입니다. 어떤 상황에서는 맞을지도 모르는 추가적인 복제 로직을 복잡성으로 도입 할 수있는 '복제'스타일의 복제본을 구현하는 것 외에 다른 대안이 많이 있음을 나는 알지 못한다.