db

반정규화 (De-Normalization)
정규화의 목적은 테이블 간 중복 데이터를 최소화하는 것이었다. 제 1 정규화 부터 제 5 정규화까지 단계를 거치며 테이블을 구체적으로 분해하게 되고, 이는 테이블 간 발생할 수 있는 이상 현상들을 제거하고 무결성을 유지할 수 있게 하는 장점이 있다. 하지만 단계를 거치며 중복을 제거하기 때문에 많은 테이블로 분리가 되기 때문에 데이터를 조회하기 위해선 테이블 간 Join 연산이 늘어나 조회 성능이 낮아지는 단점이 있다. 반정규화(De-Normalizaiton)은 성능 향상, 개발 편의성 등을 위해서 정규화된 테이블 규칙을 의도적으로 위반하는 것을 의미한다. 비정규화와 반정규화? 비정규화는 정규화가 되지 않은 테이블 모델을 지칭하는 단어이고, 반정규화는 정규화 원칙을 의도적으로 위반하는 것을 의미한다. 즉..

정규화 (Normalization)
하나의 테이블에 다양한 애트리뷰트를 혼합해서 사용한다면 데이터가 중복해서 저장될 수 있고, 이는 다양한 갱신 이상을 발생시킨다. 삽입 이상 : 원하지 않는 데이터가 삽입 되거나 필수적으로 삽입할 데이터가 부족해 삽입이 되지 않는 문제 현상을 말한다. 삭제 이상 : 하나의 데이터만 삭제하고 싶지만, 해당 데이터 전체가 포함된 튜플이 삭제됨으로써 원하지 않는 데이터가 삭제 되는 문제 현상을 말한다. 수정 이상 : 튜플의 일부분만 수정되어 데이터의 의미가 모호해지거나 일관성이 사라지는 문제 현상을 말한다. 정규화(Normalization)의 기본 목적은 테이블 간 중복 데이터를 최소화 시키는 것이다. 중복 데이터를 최소화 시킴으로써 데이터의 무결성 또한 유지되며 다양한 갱신 이상들을 해결할 수 있다. 그리고,..

인덱스(Index)
인덱스(Index)의 사전적 의미는 “색인, 책 속에 다루어진 중요한 단어나 용어를 독자가 쉽게 찾을 수 있도록 페이지를 밝혀 벌여 놓은 것.” 이란 뜻이다. 데이터베이스에서도 Index의 의미는 동일하게 이용된다. 대용량 데이터베이스 내에서 우리가 원하는 데이터를 빠르게 조회하기 위해 사용하는 것이 인덱스이다. 이는 Select 쿼리의 성능 향상이 인덱스의 목적이라고 할 수 있다. 인덱스는 데이터베이스의 테이블 내의 객체가 아닌 데이터베이스의 또다른 객체이다. 이는 인덱스를 사용하는 경우 테이블외에 추가적인 공간이 필요하다는 의미이다. 따라서, 인덱스는 조회 쿼리의 성능 향상을 가져오지만, 인덱스 정보에 관한 연산이 추가적으로 이뤄줘야 하기 때문에 DML(Insert, Update, Delete)에 있..