DB 모델링
- 데이터 모델링은 업무보다는 데이터를 중심으로 모델링을 진행하는 방법
- 데이터 모델링은 일반적으로 개념적 모델링, 논리적 모델링, 물리적 모델링 3가지 과정으로 분류
- 요구분석 단계에서 정의된 핵심 개체와 그들 간의 관계를 바탕으로 ERD를 생성하는 단계
- ERD : Entity Relationship Diagram
- 엔티티란 실제로 관리해야 할 구체적인 대상을 의미
- 유형 엔티티 : 물리적인 형태가 있는 엔티티
- 무형 엔티티 : 물리적인 형태는 없지만 개념적으로 존재
- 속성이란 엔티티가 가지고 있는 특징을 의미 (최소 데이터 단위)
- 엔티티에 있는 데이터들을 서로 구분을 해 줄 수 있는 속성을 의미 (기본키에 해당)
- 반드시 값이 존재
- 값이 중복되어서는 안됨
- 보조 식별자는 주 식별자를 대체할 수 있는 또 다른 속성을 의미
- 엔티티와의 관계를 연결해 주는 식별자를 외부 식별자라고 함
- 값이 없어도 가능
- 주 식별자 or 보조 식별자와 연결
2.3. 관계(Relationship)
- A 엔티티에 존재하는 1건의 데이터와 대응되는 B 엔티티의 데이터도 1건일 경우
- A 엔티티에 존재하는 1건의 데이터와 대응되는 B 엔티티의 데이터가 여러 건일 경우
- A 엔티티에 존재하는 여러 건의 데이터와 대응되는 B 엔티티의 데이터가 여러 건일 경우 M:M 관계
- 식별 관계는 부모 엔티티의 주 식별자를 자식 엔티티의 주 식별자, 외래 식별자로 사용하는 관계
- 비 식별 관계는 부모 엔티티의 주 식별자를 자식 엔티티의 외래 식별자로만 사용하는 관계
비 식별자로 설계하여 작업을 하다가 오류가 발생하면 식 별자로 사용
3. 논리적 모델링
- 개념적 모델링 과정에서 추상화된 데이터를 구체화하여 개체, 속성을 테이블화하고 상세화 하는 과정
- 정규화를 진행하지 않은 엔티티를 대상으로 삽입, 갱신, 삭제 시 발생할 수 있는 예기치 못한 현상을 이상이라고 함
- 이상에는 삽입 이상, 갱신 이상, 삭제 이상이 존재
3.1.1. 삽입 이상
- 주문에 대한 정보만 입력해도 제품에 대한 정보도 같이 입력해야 함
- 제품에 대한 정보만 입력하고 싶을 때 주문에 대한 정보는 NULL 값을 가짐
3.1.2. 갱신이상
- 동일한 제품명을 중복되어 있는 수만큼 수정해야함
- 한번만 수정하거나 일부만 수정할 경우 일관성이 맞지 않는 문제가 발생
3.1.3. 삭제 이상
- 주문에 대한 정보(주문 번호, 주문 수량)를 삭제할 때 제품 번호, 제품명, 단가도 같이 삭제
3.2. 제 1 정규화
- 하나의 속성이 하나의 값을 갖도록 함
3.3. 제 2 정규화
- 주 식별자 전체에 종속적이지 않는 속성을 분리 (주 식별자가 복합 식별자일 경우)
- 제 2정규화 이전에 제 1 정규화를 만족해야함
3.4. 제 3 정규화
- 주 식별자에 종속적이지 않고 다른 속성에 종속적인 속성을 분리
- 논리적 모델링 과정에서 표현된 데이터를 실제 데이터베이스에 맞도록 구현하는 과정
- 엔티티의 속성은 모두 테이블의 컬럼으로 생성
- 주 식별자는 모두 테이블의 Primary Key로 지정
- 보조 식별자는 Unique Key로 지정
- 외부 식별자는 Foreign Key로 지정
- 추가로 필요한 객체(뷰, 인덱스 등)를 생성
더보기

<테이블 정의서 작성>

- 반 정규화란 이름 그대로 정규화의 반대
- A 테이블과 B 테이블이 있을 때 두 테이블을 따로 분리해도 되고 합쳐도 되는 상황이라면 분리하는 것보다 합치는 것이 성능에 더 좋을 수 있음음
더보기
ERD Cloud : https://www.erdcloud.com/
'Database' 카테고리의 다른 글
[Database] mariaDB 리눅스에 설치 (0) | 2024.05.27 |
---|---|
[Database] 뷰(View) (0) | 2024.05.23 |
[Database] 조인(JOIN)과 UNION 연산자 / 서브쿼리 (0) | 2024.05.20 |
[Database] 데이터 형식(Data Type) & 함수(2) (0) | 2024.05.20 |
[Database] 데이터 형식(Data Type) & 함수 (1) (0) | 2024.05.17 |