💡데이터베이스 설계
1. 요구사항 수집 및 분석
2. 개념 데이터 모델링
3. 논리 데이터 모델링
4. 물리 데이터 모델링
5. 데이터베이스 구축(구현)
단계를 거쳐서 내려올수록 추상적인 설계도에 구체적인 내용이 추가된다.
현업에서는 논리 데이터 모델링부터 시작하기도 한다.
데이터 모델링
데이터 모델링은 요구 분석을 기반으로 분석하여 저장 구조를 만들고 도식화하는 작업이다.
도식화를 하면서 나오는 대표적인 산출물은 ERD이 있으며, 데이터 모델링은 최종적으로 ERD(Entity Relationship Diagram)를 만드는 작업이라고 생각하면 된다.
다시 말하면 데이터를 저장하기 위한 데이터 구조를 설계하는 작업이라고 할 수 있다.
개념 / 논리 / 물리 다이어그램
개념 다이어그램
개념 다이어그램은 아주 간단한 표현의 설계도이다.
테이블 이름, 속성, 관계 정도만을 기술한다.
논리 다이어그램
논리 다이어그램은 개념 다이어그램을 더 구체화시킨 것이다.
관계형 데이터베이스의 기본 설정을 정의한다.
속성(자료형, 길이), 도메인 정의, 키 등등을 정의하며, 개념 다이어그램에서 잘못된 것들을 재조정한다.
물리 다이어그램
물리 다이어그램은 논리에서 만들어진 결과물을 최종적으로 디테일하게 만든 것이다.
물리적 식별자 외에도 모든 것들을 실제 DBMS에 맞춰서 현실화시키는 작업을 한다.
💡ERD의 구성
ERD(Entity Relationship Diagram)는 엔티티의 관계를 표현한 그림이다.
ERD는 데이터베이스 모델링 기법 중 하나이다.
손으로 그리기도 하고, 오피스, 전문툴(eXERD, ER-Win, 온라인 툴)을 사용하여 만들기도 한다.
위 글은 ERD 작성방식의 예시이다.
엔티티 (Entity)
- 릴레이션 = 레코드(테이블) = 엔티티 = 인스턴스 = 객체
엔티티는 다른 Entity와 분류(구분)될 수 있고, 다른 Entity에 대해 정해진 관계를 맺을 수 있는 데이터 단위이다.
엔티티와 릴레이션을 테이블이라고 표현하기도 하지만, 데이터 하나를 구현하는 표현이기 때문에 테이블보다는 레코드라고 하는 게 맞는 표현이다.
a. 학생 정보 관리
- 정보 수집: 아이디, 학생명, 나이, 주소, 연락처 등..
- 학생(아이디, 학생명, 나이, 주소, 연락처)
b. 강의실 정보 관리
- 정보 수집: 강의실명, 크기, 인원수, 용도 등..
- 강의실(강의실명, 크기, 인원수, 용도)
학생 정보 관리 시스템이 있다고 할 때, 정보 수집을 하고 학생 객체를 만든다. 이때 만들어진 학생 객체를 데이터베이스 설계에서는 엔티티라고 부른다. 강의실 정보 관리 시스템으로 만들어진 강의실 또한 마찬가지로 엔티티이다.
속성 (Attribute)
속성(Atrribute)은 엔티티를 구성하는 구성 요소이다.
속성은 컬럼이며, 속성의 집합이 바로 엔티티이다.
관계 (Relationship)
- 학생(아이디, 학생명, 나이, 주소, 연락처)
학생 엔티티에 들어 있는 아이디, 학생명과 같이 하나의 엔티티 안에 들어있는 속성들은 서로 관계가 있다.
이런 속성들과의 관계가 서로 모여서 하나의 엔티티를 모였을 때, 관계는 속성들의 관계를 의미한다.
관계 (Relational)
이 관계는 테이블간의 관계로, 엔티티와 엔티티 간의 관계를 의미한다.
💡ERD를 그리는 과정
ERD를 그리는 방법은 Entity, Attribute, Ralation 등을 표현하는 방법을 말하는 것이다.
ERD를 그리는 방법에는 대표적으로 ER모델과 IE 표기법이 있다.
ER모델은 개념적 모델링에만 사용하는 모델로, 피터첸 표기법으로 네모, 마름모, 동그라미로 그린 모델이다.
IE 표기법은 새발 모양의 기호를 이용해 새발 표기법으로 그린 모델로, 엔티티를 네모로 그리고, 컬럼을 동그라미로 그린다.
보통 IE 표기법을 사용하는 편이다. ER모델은 개념 모델링에서 끝나지만, IE 표기법은 더 확장시켜 논리 모델링과 물리 모델링을 만들 수 있기 때문이다.
엔티티 정의
엔티티는 사각형으로 표시하고 이름을 작성한다.
하나의 ERD 내의 엔티티명은 중복될 수 없다.
속성 정의
피터첸 표기법으로는 원으로 표시하며 엔티티와 연결한다.
IE 표기법은 엔티티 내의 목록으로 표시한다.
관계 맺기
이때의 관계는 엔티티와 엔티티의 관계(테이블과 테이블의 관계)를 말한다.
관계라는 건 어떤 남자와 어떤 여자와 연관이 있다고 선을 그어둔 것이다.
어떤 남자는 여러 명의 여자와 연관이 있을 수도 있고, 어떤 남자가 그 어떤 여자와도 연관이 없을 수도 있다. 이를 그림만 봐도 알 수 있도록 관계 표시를 할 수 있다.
피터첸 표기법과 IE 표기법에는 그리는 방식에 차이가 있다.
두 개의 표기법에 대해 대해 알아보도록 하자!
💡ERD의 표기법
피터첸 표기법
피터첸 표기법은 숫자, N, M을 이용하여 관계를 표시할 수 있다.
IE 표기법
IE 표기법은 O, |, <를 이용하여 관계를 표시할 수 있다.
O는 관계가 없는 것을 의미하고, |는 관계가 하나만 있는 것을 의미하며, <(꺾새)는 관계가 많은 것을 의미한다.
이 그림은 남자 입장에서만 관계를 정의한 것이므로, 여자 입장에서도 남자 쪽에 관계를 작성해 주어야 한다.
관계의 종류
일대일(1:1) 관계
개체가 일대일로 대응하는 관계
일대다(1:N), 다대일(N:1) 관계
한쪽 개체 타입의 개체가 다른 쪽 개체 타입의 여러 개체와 연관이 있는 관계
다대다(N:M) 관계
다대다 관계는 각 개체 타입의 개체가 서로 임의의 개수 개체와 복합적인 관계를 맺는 경우이다.
💡비디오 대여점 ERD
회원과 비디오 간에 대여라는 사건이 발생한다.
시간의 흐름에 따라 계속해서 쌓이는 데이터를 사건데이터라고 하며, 사건데이터가 관계인 경우가 많다.
- 엔티티 정의
- 속성 정의
- 기본키 정의
- 관계 맺기
- 논리 다이어그램
- 물리 다이어그램
엔티티 정의
- 장르
- 비디오
- 회원
- 대여
속성 정의
속성 정의는 원으로 한다.
기본키 정의
기본키 정의는 속성에 밑줄을 그으면 된다.
관계 맺기
엔티티 간에 숫자, N, M 등을 작성하여 관계를 작성한다.
논리 다이어그램
논리 다이어그램을 만들 때에는 개념 모델(ERD)에 스키마를 추가하는 작업을 한다.
1. 숫자 3: 엔티티(사각형)만을 찾아서 모두 만든다.
2. Ctrl + Shift + Enter: 기본키를 만든다.
3. Ctrl + Enter: 나머지 컬럼을 만든다.
4. 테이블 선택 > Space > 컬럼 > 도메인 수정: 컬럼에 들어갈 데이터의 샘플을 설정한다.
도메인을 작성하는 방법에는 정해진 틀이 없으므로 나중에 작성할 사람이 헷갈리지 않게만 가이드라인을 작성하면 된다.
5. 테마 지정: 테이블 간에 구분한다.
테이블을 구분할 때, 이게 마름모인지 네모인지를 상상하면서 보는 게 좋다.
대여 테이블은 마름모 테이블이다. 구분을 위해 테마를 지정하여 색깔을 변경하였다.
6. 인조키 생성: 대여 테이블에 기본키를 대체할 수 있는 키를 만들어주었다.
7. 숫자 4, 부모 자식 컬럼 설정: 테이블 간에 관계를 설정하고, 관계 차수를 정의한다.
8. 숫자 3: N:M 다대다 관계를 위한 테이블 생성
개념 다이어그램에서 N:M의 다대다 관계가 나올 경우 반드시 중간에 테이블을 하나 더 만든다.
대여세부내역 테이블을 만들어 대여와, 비디오와 연결해 주었다.
중간에 테이블을 하나 더 만든 이유는 데이터를 원자값으로 유지하기 위해서이다. 대여번호가 1번이면서 비디오가 1, 2일 경우 (1, 1/2)로 저장이 되는데, 중간에 대여세부내역 테이블이 있기 때문에 (1, 1), (1, 2)로서 원자값을 유지할 수 있게 된다.
이는 기존에 한 번에 비디오를 하나만 빌려갈 수 있었던 시스템을 여러 개를 빌려갈 수 있게 수정하는 작업이다.
RDBMS가 지양하는 것에 대해서는 위 글을 참고하도록 하자.
물리 다이어그램
물리 다이어그램에는 실제 구현하기 위한 모든 것을 추가하는 작업을 한다.
1. 테이블 선택 > SPACE > 일반 > 테이블 물리 이름 수정
2. 테이블 선택 > SPACE > 컬럼 > 물리 이름, 데이터 타입, NOT NULL, 기본 값 표현식(Default) 등 수정
3. 테이블과 컬럼에 주석을 달 수 있다.
4. F5 > 물리 모드
회의를 할 때에는 논리 모드로 설명을 하고, 논리적으로 문제가 없다고 판단이 되면 물리 모드로 작업을 한다.
논리는 우리가 만든 것을 이해하기 위한 다이어그램, 물리는 실제 작업자가 봐야 할 다이어그램이라고 생각하면 된다.
물리 모드는 실제로 사용할 컬럼을 작성하기 때문에 약어로 쓰는 경우가 많아 설명으로는 부적합하다.
5. eXERD 기본, 컬럼 보이기 설정
산출물
a. ERD(개념 모델링)
b. 논리 다이어그램
c. 물리 다이어그램
지금까지 작업하면서 3개의 산출물이 나오게 된다.
작업할 때에는 논리와 물리 다이어그램을 번갈아보면서 작업을 한다.