데이터베이스 모델링
개념적 데이터 모델링
- 데이터의 요구사항 분석 과정
- 핵심 개체 (Entity) 사이의 관계를 찾아내고 표현한다.
논리적 데이터 모델링
- 데이터베이스 설계 프로세스의 과정
- 정보의 논리적인 구조와 규칙, 관계를 설정한다.
물리적 데이터 모델링
- 논리적 데이터 모델을 바탕으로 실제 구상
ERD; Entity Relation Diagram
엔터티 Entity
- 업무가 관여하는 정보
엔터티의 특징
- 엔터티는 반드시 속성을 가져야 한다.
- 엔터티는 다른 엔터티와 최소 한 개 이상의 관계가 있어야 한다.
- 유일한 식별자에 의해 식별이 가능해야 한다.
- 영속적으로 존재하는 (두 개 이상의) 인스턴스의 집합이어야 한다.
속성 Attribute
- 엔티티가 가지는 성격, 데이터 타입과 크기 및 제약사항을 지정한다.
속성의 특성
- 하나의 엔터티는 두 개 이상의 속성을 갖는다.
- 속성도 집합이다.
- 하나의 인스턴스에서 각각의 속성은 한 개의 속성값을 가져야 한다.
관계 Relationship
- 엔터티 간의 관계와 연관성을 나타낸다.
관계의 특성
- 관계는 존재적 관계와 행위에 의한 관계로 나눌 수 있다.
- 부서와 사원 엔터티 간의 '소속' 관계는 존재적 관계의 사례이다.
- 주문과 배송 엔터티 간의 '배송근거' 관계는 행위에 의한 관계의 사례이다.
관계의 종류
카디널리티 Cardinalit: 수적관계
- 1:1 관계
- A는 B를 하나 가진다. B는 A를 하나 가진다.
- 1:N 관계
- A는 B를 여러 개 가진다. B는 A의 하나에 해당한다.
- M:N 관계
- A는 B를 여러 개 가진다. B는 A를 여러 개 가진다.
옵셔널리티 Optionality
- (1) : 필수
- (0) : 선택
데이터베이스 모델링 예시
- 카카오 멀티프로필 기능은 1: M의 데이터 구조를 갖는다.
- 회원가입 시 아이디, 비밀번호, 이메일, 생년월일 등은 속성이다.
- 즉, 속성은 컬럼이며 회원들의 회원가입 시 속성을 기준으로 회원들의 정보를 받게 되는 것이다.
- 인스타 팔로우 팔로잉은 M:N의 사용자 id를 연결하는 것이기 때문에 사용자(users) 테이블, 즉 한 테이블 내에서 자기 자신(id)을 연결하는 것과 같다.
정규화
- 중복을 최소화 한다.
- 좋은 관계를 만들어 나가는 것에 의의가 있다.
- 계속해서 테이블을 나누는 것이다.
제1정규화
- 한 속성에 같은 유형의 속성이 여러 개로 나눠져 있는 경우 제거한다.
제2정규화
- PK가 아닌 모든 칼럼은 PK에 종속되도록 구성한다.
제3정규화
- 이행적 함수 종속성(X->Y, Y->Z)을 제거한다.
- 연속적으로 종속되는 테이블 혹은 컬럼
- 일반 속성 간의 함수 종속 관계가 존재하지 않아야 함
- 조인이 많이 발생한다.
- 배달의 민족 사용자의 주문정보를 찾을 때 일단 년 단위로 쪼개고, 월 단위로 쪼갠다.
반정규화
- 시스템의 성능향상과 개발과 운영의 단순화를 위해 중복, 통합, 분리 등을 수행한다.
- 데이터를 중복하여 성능을 향상시키는 기법이다.
- 데이터 무결성이 깨질 수 있지만, 반정규화를 하는 이유는
- 데이터 조회 시 디스크 I/O량이 많아서 성능이 저하
- 경로가 너무 멀어 조인으로 인한 성능저하 예상
- 칼럼을 계산하여 읽을 때 성능저하 예상
'SQL' 카테고리의 다른 글
[이론] QuerySet API (0) | 2022.08.25 |
---|---|
[이론] ORM, Object-Relational-Mapping (0) | 2022.08.24 |
[이론] JOIN (0) | 2022.08.22 |
[이론] CASE, SubQuery (0) | 2022.08.19 |
[이론] Aggregate Function 집계 함수, GROUP BY (0) | 2022.08.18 |