2012-07-04 2 views
1

나는 당신의 지혜가 필요합니다. 나는 고전적인 asp에서 mvc로 시스템을 대대적으로 분해하는 과정에 있으며,이 과정에서 SQL Server 2008 R2의 주요 테이블 (MAIN이라고 함)을 리팩토링하고 있습니다. 이 테이블에는 백 열이 넘고 (필자는 이에 대해 책임을지지 않습니다) 성능, 유연성 및 유지 보수를 위해 구조를 7 개의 테이블로 이동시키고 있습니다. 그러나 새롭고 오래된 코드는 많은 이전 페이지와 새 페이지에서 MAIN 테이블을 참조합니다. 새로운 테이블로 원활하고 점진적으로 전환하고 싶습니다. 비즈니스를위한 핵심 사이트입니다. 제발 도와주세요. 메인 테이블 모두에서 표준 삽입, 업데이트를 사용SQL Server에서 리팩토링하는 동안 여러 테이블 동기화

1) 및 삭제 트리거와 일곱 개 NEW 테이블 : 나는 기존 데이터를 전송하면

,

나는 생각했습니다. 무한 트리거 루프에 대한 catch (http://stackoverflow.com/questions/2237499/sql-server-trigger-loop)를 포함해야합니다.

2.) 새 테이블을 참조하여 MAIN 테이블을 에뮬레이션하는 뷰 만들기. 뷰에 INSTEAD OF 트리거를 사용하여 뷰를 통해 테이블을 삽입하고 업데이트합니다. 이렇게하면 MAIN 테이블을 즉시 삭제할 수 있습니다.

다음 중 어느 것이 더 합리적인가요? 어느 쪽이 바보 같습니까? 양자 모두? 나는 분명히 dba가 아니지만, 처음으로 올바르게 수행해야합니다.

감사합니다.

답변

0

앱이 데이터베이스 테이블에 직접 액세스하는 것처럼 들리는데, 이는 지금 알아내는 것이 좋지 않습니다.

데이터베이스 디자인을 추상화 할 CRUD 작업을 처리하기 위해 저장된 procs를 작성하는 것이 좋습니다. 그런 다음 앱에서 저장된 procs를 호출하고 모든 데이터를 매개 변수로 전달할 수 있습니다. 저장된 proc은 모든 새 테이블을 업데이트하는 모든 작업을 수행합니다 (당연히 트랜잭션을 사용해야 함). 그러면 이전 테이블을 즉시 사용하지 않아도됩니다.

이 방법은 복잡한보기를 작성하는 것보다 쉬우 며, 트리거를 사용하는 것보다 더 많은 가시성을 제공한다고 생각합니다.

+0

확실히 좋은 시나리오가 될 것입니다. 그것은 모든 코드 리팩토링 (고전적인 ASP에서 MVC로) 후 테이블 디자인을 전환하는 방법 갈 수 있습니다. 나는 새 코드에서 NEW 테이블을 코딩하고 이전 코드를 그대로 유지하는 것이 가치 있다고 생각했다. (단지 MAIN 뷰의 MAIN 테이블을 바꾼다.) – cdutcher

관련 문제