ERD(Entity Relation Diagram)
ERD는 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할을 하며 릴레이션 간의 관계들을 정의한 것이다.
DBMS에서 ERD를 사용하는 이유
ERD는 시스템의 요구 사항을 기반으로 작성되며, 이러한 ERD를 기반으로 데이터베이스를 구축하기 때문에 서비스를 구축한다면 가장 먼저 신경 써야 할 부분이다.
ERD는 시스템을 구축한 이후 디버깅 또는 비즈니스 프로세스 재설계가 필요한 경우에 설계도 역할을 담당하기도 한다.
ERD는 관계형 구조로 표현할 수 있는 데이터를 구성하는 데 유용하지만 비정형 데이터를 충분히 표현할 수 없다는 단점이 존재한다.
비정형 데이터: 비구조화된 데이터를 말하며 미리 정의된 데이터 모델이 없거나 미리 정의된 방식으로 정리되지 않은 정보를 말한다.
ERD에 사용되는 기호들
직사각형(Rectangle)
직사각형은 ER 모델의 엔티티를 나타낸다.
타원(Ellipse)
타원은 ER 모델의 속성을 나타낸다.
마름모(Diamond)
마름모는 엔티티 간의 관계를 나타낸다.
선(Line)
선은 다른 관계 유형이 있는 엔티티 및 엔티티 집합에 대한 속성을 나타낸다.
이중 타원(Double Ellipse)
이중 타원은 다중 값 속성을 나타낸다.
이중 직사각형(Double Rectangle)
이중 직사각형은 약한 엔티티를 나타낸다.
정규화(Normalization)
정규화는 릴레이션 간의 잘못된 종속 관계로 인해 데이터베이스 이상 현상이 일어나서 이를 해결하거나 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정이다.
정규화 과정은 정규형 원칙을 기반으로 정규형을 만들어가는 과정이며 정규화 정도는 정규형(NF)로 표현한다.
테이블을 나누게 되면 어떠한 쿼리는 조인을 해야 하는 경우도 발생해서 오히려 느려질 수도 있기 때문에 정규화 과정을 거치고 난 후 오히려 성능이 저하될 수도 있다. 그러므로, 서비스에 따라 정규화 또는 비정규화 과정을 진행해야 한다.
비정규화: 하나 이상의 테이블에 중복 데이터를 추가하는 데이터베이스 최적화 기술로 비용이 많이 드는 조인을 줄일 수 있다.
정규화 원칙
정규화 원칙으로 4가지가 있다.
- 같은 의미를 표현하는 릴레이션이지만 좀 더 좋은 구조로 만들어야 한다.
- 자료의 중복성은 감소해야 한다.
- 독립적인 관계는 별개의 릴레이션으로 표현해야 한다.
- 각각의 릴레이션은 독립적인 표현이 가능해야 한다.
제1 정규형(1NF)
릴레이션의 모든 도메인이 더 이상 분해될 수 없는 원자 값으로만 구성되어야 한다.
릴레이션의 속성 값 중에서 한 개의 기본키에 대해 두 개 이상의 값을 가지는 반복 집합이 있어서는 안 된다. 만약, 반복 집합이 있다면 제거해야 한다.
모든 속성과 열에는 고유한 이름이 있어야 한다. 단, 데이터가 저장되는 순서는 중요하지 않다.
위의 테이블을 보면 홍철이라는 사람은 2개의 교과목을 수강하며 각각 다른 성취도를 갖게 된다. 1 정규형을 적용하면 수강명과 성취도를 분해하여 밑의 테이블과 같이 만들 수 있다.
제2 정규형(2NF)
릴레이션이 제1 정규형이며 부분 함수의 종속성을 제거한 형태를 말한다.
부분 함수의 종속성 제거란 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속적인 것을 말한다.
이때 주의할 점은 릴레이션을 분해할 때 동등한 릴레이션으로 분해해야 하고 정보 손실이 발생하지 않는 무손실 분해로 분해되어야 한다는 것이다.
위의 테이블에서 기본키가 {유저 ID, 수강명} 일 때 밑의 테이블과 같이 유저 번호와 성취도 릴레이션으로 나눌 수 있다.
제3 정규형(3NF)
제2 정규형이고 기본키가 아닌 모든 속성이 이행적 함수 종속을 제거한 상태를 말한다.
이행적 함수 종속이란 A -> B와 B -> C가 존재하면 논리적으로 A -> C가 성립하는데 이때 집합 C가 집합 A에 이행적으로 함수 종속이 되었다고 한다.
보이스/코드 정규형(BCNF)
제3 정규형이고 결정자가 후보키가 아닌 함수 종속 관계를 제거하여 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키인 상태를 말한다.
기존의 3 정규형에서 데이터 중복을 발생시키는 중속성이 존재할 수 있기 때문에 더 강력한 정규형인 보이스/코드 정규형으로 해결하게 된다.
결정자: 함수 종속 관계에서 특정 종속자를 결정짓는 요소, 'X->Y'일 때 X는 결정자, Y는 종속자이다.
이상 현상(Anomaly)
데이터가 중복되면 동일한 데이터가 여러 곳에서 반복되기 때문에 데이터베이스의 크기를 불필요하게 증가시키고 삽입, 삭제, 갱신 작업 중에 데이터가 불일치하는 현상이 나타나게 되는데 이것을 이상 현상이라고 한다.
삽입 이상: 어떤 데이터를 삽입했을 경우 다른 데이터가 삽입되는 이상 현상
삭제 이상: 중복된 어떤 한 데이터를 삭제했을 경우 삭제를 의도하지 않은 데이터도 같이 삭제되는 현상
갱신 이상: 특정 데이터를 갱신했을 때 중복된 데이터 중 일부만 수정되어 데이터 모순이 발생하는 현상
이러한 이상 현상을 방지하기 위해서 정규화라는 과정을 거치게 된다.
'DB' 카테고리의 다른 글
MySQL - SELECT (1) | 2023.11.09 |
---|---|
MySQL - SQL (0) | 2023.11.09 |
MySQL (0) | 2023.11.08 |
데이터베이스 - 트랜잭션과 무결성 (2) | 2023.10.28 |
데이터베이스 (0) | 2023.10.26 |