🧑‍💻복습/DB

ERD 관계도 & DB모델링 (제1정규화, 제3정규화, 유니크컬럼 지정, null값 허용, 인덱스 컬럼, 포함관계와 배타적 관계 식별)

우동한그릇 2023. 8. 11. 09:49
반응형

* DB 모델링 절차

 

* ERD 관계도 ?

테이블과 테이블의 관계가 아니라 테이블 내부의 데이터와 데이터 간의 관계에 따라

1대다, 1대1, 다대다 관계가 성립하는 것이다.


# 제 1정규화 (원자성 만족)

- 정규화? 데이터 중복을 찾아내어 별도의 테이블로 데이터를 분리시키는 것.
- 중복 데이터 또는 중복 컬럼을 별도의 테이블로 분리하여 부모-자식 관계를 맺는다.
- 데이터를 참조 하는 테이블이 자식테이블이고, 데이터를 갖고 있는 테이블이 부모 테이블이다.
- 자식 테이블에서는 부모 테이블의 데이터를 가리키기 위해 그 데이터의 pk값을 보관해야 한다.
  - 부모-자식 테이블을 식별하기 애매할 때 1 : 다 관계에서 1 쪽이 부모 테이블이다.
- 이렇게 부모 테이블의 데이터에 대해 PK값을 저장하는 컬럼을 외부키(FK)라 부른다.
- 중복 컬럼? 사진1, 사진2, 사진3
- 중복 데이터? 교육센터명, 부서명, 은행명, ...

 

<기존>

<제1정규화 과정>


 


 


 제 3정규화 (이행적 함수 종속 제거)

- 어떤 컬럼이 PK가 아닌 다른 일반 컬럼에 종속되는 경우가 있다면,
  별도 테이블로 분리하여 부모-자식 관계를 맺는다.
  - 예) 우편번호와 기본 주소

 

<기존>

 

<제3정규화 과정>

"강의배정"의 "강의번호"는 "강의"의 FK가 PK가 된 것이다.

"강의배정"의 "강사번호"는 "강의"의 FK가 PK가 된 것이다.

즉, FK 가 PK로 지정되면 식별키로 지정된다. 

 

 

* 비식별관계와 식별관계란 ?

* FK(외래키) = PK(주요키)인 관계를 식별 관계라고한다.

 


* 유니크(Unique) 컬럼 지정

- PK는 아니지만 PK처럼 중복되어서는 안되는 컬럼이다.
- 대체 키(alternate key) 컬럼이 유니크 컬럼이 된다.
- 즉 PK로 선정되지 않은 나머지 후보 키는 유니크 컬럼으로 지정하여 데이터가 중복되지 않도록 한다.

 

<기존>

<유니크 컬럼 지정>

 


* ull 허용 여부 지정

- 필수 입력 컬럼인지 선택 입력 컬럼인지 지정한다.

 

<기존>

 

<ull 허용>


* 인덱스 컬럼

- 데이터를 찾을 때 검색 조건으로 사용할 컬럼을 지정한다.
- 조회 컬럼으로 지정하면 그 컬럼의 값으로 색인표가 자동으로 생성되어
  데이터를 찾는 속도가 빨라진다.
- 장점: select 속도가 빨라진다.
  단점: insert,update,delete 할 때 마다 색인표를 갱신해야하므로 속도가 느리다.

 

<기존>

 

<인덱스 컬럼>

 


* 포함관계와 배타적 관계 식별

- 테이블의 공통 컬럼을 추출하여 수퍼 타입 테이블을 정의한다.
- 부모(수퍼타입 테이블)-자식(서비타입 테이블) 관계를 맺는다.
- DBMS의 문법으로는 포함 관계와 배타적 관계를 구분할 수 없다

 

<기존>

 

<포함관계와 배타적 관계>

반응형