EN - FR - DE - ES - IT - PT -

LexiconDream

📐 정규화

데이터 중복을 줄이고 무결성을 향상시키기 위해 데이터를 정리합니다.

정규화

정규화는 데이터의 중복을 줄이고 데이터 무결성을 향상시키기 위해 데이터를 구성하는 과정입니다. 목표는 모든 정보를 한 번만 저장하는 것입니다. 예를 들어, 고객의 주소가 모든 주문 기록에 나타난다면 주소 변경 시 수백 군데를 수정해야 합니다. 한 곳이라도 누락되면 데이터의 일관성이 떨어집니다. 정규화는 주소를 고객 테이블로 이동시킵니다. 주문은 고객 ID를 통해 고객을 참조합니다. 주소는 한 번만 저장되므로, 해당 테이블에서 주소를 변경하면 모든 주문에 새로운 값이 반영됩니다.

정규화 과정은 정규형을 따릅니다. 제1정규형은 반복되는 그룹을 제거하고, 제2정규형은 부분 종속성을 제거하며, 제3정규형은 전이 종속성을 제거합니다. 각 정규형은 중복을 더욱 줄이는 제약 조건을 추가합니다. 더 높은 정규형도 존재하지만 실제로 사용되는 경우는 드뭅니다. 대부분의 트랜잭션 데이터베이스는 제3정규형을 목표로 합니다. 정규화에는 장단점이 있습니다. 테이블 수가 많아지면 조인이 많아져 쿼리 속도가 느려질 수 있습니다. 트랜잭션 시스템의 경우 데이터 무결성 유지라는 이점이 성능 저하보다 중요합니다. 분석 시스템의 경우에는 그 반대인 경우가 많습니다. 테이블 크기가 크고 중복 열이 있는 비정규화된 스키마는 조인을 피하기 때문에 쿼리 속도가 더 빠릅니다. 이것이 바로 데이터 웨어하우스에서 의도적으로 비정규화된 스타 스키마나 스노우플레이크 스키마를 사용하는 이유입니다. 적절한 정규화 수준은 워크로드에 따라 다릅니다. 트랜잭션 시스템은 정규화를 사용하고, 분석 시스템은 비정규화를 사용합니다. 두 방식 모두 목적에 따라 적합합니다.

정상 형태

정규화는 데이터의 무결성에 관한 것입니다. 각 사실을 한 번만 저장하면 데이터의 일관성이 유지됩니다. 여러 번 저장하면 불일치가 불가피해집니다.


Warning: session_start(): Cannot start session when headers already sent in /var/www/lexicondream.com/inc/functions.php on line 63

Comments

No comments yet. Be the first to share a thought.

Leave a comment