ERD와 정규화에 대하여
ERD에 대하여 알고 정규화를 공부해보자.
ERD와 정규화에 대하여
ERD란?
Entity-Relationship Diagram의 줄임말로 데이터 베이스 설계에서 사용하는 다이어그램이다.
데이터 베이스의 구조와 데이터 간의 관계를 시각적으로 표현한 것이다.
ERD는 모델링 과정에서 데이터 베이스 스키마를 설계하고, 데이터베이스의 논리적 및 물리적 구조를 정의하는 데 중요한 역할을 한다.
ERD를 사용하는 목적
- DB 설계 : DB 설계의 시작점으로 데이터를 어떻게 구조화하고 저장할지를 시각적으로 표현해준다.
- 데이터 관계 명확화 : 엔티티 간의 관계를 명확하게 정의하고, 데이터 무결성을 보장하기 위한 제약 조건들을 설정할 수 있다.
- 개발 및 유지보수 용이 : DB 구조를 명확하게 시각화하기 때문에 개발자, DB 관리자 등 여러 팀 간 협업을 용이하게 해줌, DB 구조에 변화가 생길 때 쉽게 파악 가능
ERD 작성 도구
- eXERD (이클립스 플러그인) : 다이어그램 -> 코드화 가능
- MySQL Workbench
- dbdiagram.io : 코드 -> 다이어그램화 가능
- ER/Studio
ERD의 기본 요소
- Entity(엔티티)
- 엔티티? 데이터베이스에서 저장할 수 있는 객체를 의미한다. (ex. 사용자, 주문, 제품 등)
- 엔티티는 테이블과 같은 개념으로 각 엔티티는 속성을 가지고 있다.
- Attributes(속성)
- 속성은 엔티티의 특성이나 정보를 나타낸다. 테이블의 칼럼과 동일한 개념.
- 예를 들어 User 엔티티는 UserID, Name, Email 등의 속성을 가질 수 있다.
- 속성은 PK(Primary Key), FK(Foreign Key), Unique등의 제약 조건을 가질 수 있습니다.
- Relationships(관계)
- 관계는 엔티티 간의 연결을 나타낸다. 데이터 베이스에서는 외래 키(FK)와 같은 의미
- 관계의 종류에는 1:1 관계, 1:N 관계, N:M 관계가 있다.
- Cardinality(카디널리티)
- 카디널리티는 관계에서 각 엔티티에 포함될 수 있는 인스턴스의 개수를 나타낸다.
- 관계의 종류와 비슷하게 1:1, 1:N, N:M 같은 형태로 표현된다.
- ERD에선 관계선에 표현되는 1이나 N 등의 기호가 카디널리티를 나타낸다.
- Primary Key(PK)
- PK는 엔티티의 각 인스턴스를 고유하게 식별하는 속성이다. 일반적으로 각 엔티티는 하나의 PK를 가지고, 그 값은 중복될 수 없다.
- Foreign Key(FK)
- 다른 엔티티의 PK를 참조하는 속성으로, 관계를 나타냅니다. 외래 키는 두 엔티티 간의 관계를 구현하는 핵심적인 요소이다.
정규화
정규화는 DB에서 데이터를 구조화하고 중복을 최소화하기 위해 사용하는 기법이다. 해당 과정을 통해 데이터의 무결성을 유지하고 보다 효율적으로 작동하도록 도와준다. 정규화는 단계 별로 이루어지는데 이 각 단계를 정규형이라 부른다.
제 1정규형
- 모든 컬럼값이 원자값을 가져야한다. : 각 컬럼에 저장된 값은 더 이상 분해할 수 없는 단일 값이어야한다.
- 반복 그룹 제거 : 하나의 컬럼에 여러 값이 들어가는 것을 허용하지 않는다.
제 2정규형
- 제 1정규형을 만족해야함
- 부분 함수적 종속성 제거 : 기본키의 일부분에만 의존하는 속성을 제거해야한다. 즉, 기본키 전체에 대해 종속된 속성만 남겨야함
제 3정규형
1.제 2정규형을 만족해야함 2.이행적 종속성 제거 : A -> B, B -> C인 관계가 있을 때, A -> C인 경우를 제거해야한다. 즉, 기본 키가 아닌 속성이 다른 비기본 키 속성에 종속되지 않도록 해야함
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.