1. ERD(Entity-Relationship Diagram) 작성법
ERD란?
ERD는 데이터베이스 설계를 시각적으로 표현한 다이어그램으로, 엔티티(Entity)와 이들 간의 관계(Relationship)를 보여줌. ERD는 데이터베이스 설계 초기 단계에서 요구 사항을 분석하고 데이터 모델을 정의하는 데 유용하다.
ERD 작성법
- 엔티티 식별(Entity Identification)
- 엔티티는 저장하고자 하는 주요 객체를 나타냄. 예로들어 사용자, 제품, 주문 등이 엔티티가 될수있다.
- 엔티티 속성 정의(Entity Attributes)
- 각 엔티티는 속성을 가진다. 속성은 엔티티의 특성을 나타내며, 예로들어 사용자 엔티티는 이름, 이메일, 전화번호 등의 속성을 가질수 있다
- 관계 정의(Relationship Definition)
- 엔티티 간의 관계를 정의한다. 예를 들어 사용자는 여러 주문을 할 수 있으며, 주문은 하나의 사용자가 할 수 있다.
- 일대다 관계
- 카디널리티(Cardinality)
- 관계의 카디널리티는 두엔티티 간의 관계 수를 나타냄. 일반적인 카디널리티는 1:1, 1:N, N:N이다.
2. 논리적 데이터 모델링
논리적 데이터 모델링은 실제 데이터베이스 구현 전에 데이터 구조를 논리적으로 정의하는 과정. 이를 erd 기반으로 테이블, 열, 데이터 타입등을 상세히 정의하여 데이터 베이스의 논리적 구조를 설계한다.
논리적 데이터 모델링 단계
- 엔티티 정의
- 각 엔티티는 데이터베이스의 테이블로 변환된다.
- 속성 정의
- 엔티티의 각 속성은 테이블의 열로 정의된다. 속성의 데이터 타입과 제약 조건을 설정한다.
- 키 정의
- 기본키와 외래키를 정의하여 테이블 간의 관계를 명확히 한다
- 관계정의
- 엔티티간의 관계를 테이블간의 외래키로 정의한다.
3. 정규화와 비정규화
정규화 : 정규화는 데이터베이스 설계에서 데이터를 구조적으로 최적화하여 중복을 최소화 하고 무결성을 유지하는 과정.
- 1. 1NF :
- 모든 속성이 원자값을 가지도록 테이블을 구성한다.
- 중첩된 테이블이나 반복되는 그룹이 없어야한다.
- 2. 2NF:
- 1NF를 만족한다
- 기본 키의 부분 집합에 의존하는 부분적 함수 종속성을 제거한다.
- 부분함수 종속성 : orderId, productId가 기본 키라고 할때 userName, orderDate는 orderId에만 종속됌
- 이를 제거하기 위해 테이블을 분리함
- 3. 3NF :
- 2NF를 만족하고 이행 함수 종속성을 제거한다.
- 이행함수 종속성 : productName은 productId에 종속되고, productId는 orderId에 종속되므로 productName은 orderId에 이행 종속됌.
- 2NF를 만족하고 이행 함수 종속성을 제거한다.
- 4. BCNF:
- 모든 결정자가 후보 키인 상태를 만족
비정규화 : 정규화된 데이터베이스에서 성능을 향상 시키기 위해 의도적으로 데이터 중복을 허용하는 과정. 비정규화는 읽기 성능이 향상되지만 데이터 무결성 유지, 쓰기 성능이 저하 된다.
4. 데이터무결성 및 제약 조건
데이터 무결성
데이터 무결성은 데이터의 정확성과 일관성을 유지하는 것을 의미. 무결성을 유지하기 위해 데이터베이스에서는 다양한 제약조건을 사용
제약조건
- 기본 키 제약
- 테이블의 각행을 고유하게 식별
- 외래 키 제약
- 테이블 간 관계를 정의 하고 참조 무결성 유지
- 고유 제약
- 열의 값이 고유해야함을 보장
- not null 제약
- 열의 값이 null이 될수 없음을 보장
- check 제약
- 열의 값이 특정 조건을 만족해야함을 보장
댓글