2008-10-10 2 views
3

지금은 높은 읽기 : 쓰기 비율로 새로운 앱을 설계하고 있습니다. 현 고용주에게는 성능상의 이유로 테이블에 비정규 화 된 데이터가 많이 있습니다. 완전히 3NF 테이블을 가지고 색인 된 뷰를 사용하여 모든 비정규 화를 수행하는 것이 더 나은 방법입니까? 테이블이나 뷰에 대해 쿼리를 실행해야합니까?정규화 된 테이블을 비정규 화 된 인덱스 된 뷰와 함께 사용하는 것이 좋은 생각입니까?

내가 관심을 갖는 몇 가지 예는 열 하위 테이블 (예 : 사용자 게시물 수를 어딘가에 저장하는 데 사용됨)의 집계입니다.

답변

3

일반적으로 여러 개의 정규화 된 테이블을 자주 액세스해야하는 경우 비정규화된보기를 사용하는 것이 좋습니다. 대부분의 경우 조인을 사용하고 테이블에 대해 직접 쿼리하는 것보다 성능이 크게 향상 될 것이고 일반적으로보기 나 조인이 테이블의 일부에 대한 변경에 대해 불가지론 할 수 있기 때문에 유지 관리가 쉽지는 않습니다. 그것은 사용하지 않습니다.

모두 테이블이 세 번째 정규 형식이어야하는지 여부는 또 다른 질문입니다. 대부분의 응용 프로그램에서 대답은 입니다. 대부분 테이블을이 방법으로 정규화해야하지만 예외가 있습니다. 예외를 만들지 여부는 데이터 사용 방법과 관련이 있으며 앞으로 변경되지 않을 사용에 대해 매우 확신 할 수 있는지 여부입니다.

잘못된 방법을 사용했기 때문에 나중에 다시 정상화해야하기 때문에 비용이 많이 들지만 사용하기 쉽고 이해하기 쉬운 데이터를 지나치게 정규화하면 필요한 것보다 관리하기가 복잡하고 어려울 수 있습니다 있다. 귀하의 마일리지가 다를 수 있습니다.

3

뷰를 사용하여 사용자에게 비정규 화 된 데이터를 제공하고 SQL Server를 사용하는 경우 SCHEMABINDING 절을 확인해야합니다. 뷰가 스키마 화 된 경우 인덱싱 할 수 있으며 기본 테이블이 업데이트되면 인덱스가 업데이트됩니다. 이러한 방식으로 인덱스가 잘 설정되면 데이터를 찾는 사람들은 실제로 인덱스에서 선택할 수 있으므로 모든 쿼리에 대해 복잡한 뷰를 다시 작성할 필요가 없지만 사용자는 여전히 최신 정보를 볼 수 있습니다 기본 테이블이 변경되는 날짜

관련 문제