[DB] DB 모델링
- DB
- 2017. 11. 22. 10:27
Database 설계
1. 데이터 모델링
(1) 개념적 모델링
(2) 논리적 모델링
(3) 물리적 모델링
<데이터베이스 의뢰를 받은 후 과정>
1. 요구사항 수집
(팀장 + 개발자)
2. 요구사항 정리
3. 모델링
1) 개념적
- 최대한 간단하게 그림으로 그린다.
- 이렇게 그린 대략의 그림을 ERD(Entity Reration )이라고 한다.
2) 논리적
- 간단하게 그린 그림을 자세하게 설명한다.
3) 물리적
4. 구현
5. 코딩
6. 테스트
7. 발주
- 지금까지 했던 것은 주로 구현이었다.
2. ERD(Entity-Relationship Diagram)
데이터베이스를 가장 대략적으로 그린 그림
(1) 개체(Entity) : 직사각형
- 테이블
1) 강한개체
- 다른 개체의 도움없이 독자적으로 존재
2) 약한개체
- 독자적으로 존재할 수 없고 반드시 상위개체 타입을 가진다.
예) 직원과 부양가족이라는 테이블이 있다. 직원 테이블은 그 자체로 의미가 있지만,
부양가족이라는 테이블은 직원테이블을 위한 것이기 때문에 독자적으로 존재할 수 없
다.
이 때 직원 개체는 강한테이블, 부양가족은 약한 테이블이다.
강한개체는 직사각형, 약한개체는 직사각형 안에 또다른 사각형으로 표현된다.
(2) 속성(Attribute) : 타원
- 필드
1) 값의 형태
- 단순속성과 복합속성
속성은 타원형으로 그린다.
속성 중에 키를 가진 속성은 밑줄로 표현한다.
단순속성 : 단순히 값을 하나로만 사용할 수 있는 것
복합속성 : 주소 아래 시와 동 번지 같이 다시 나눌 수 있는 것을 복합속성이라고 한다.
- 단일값 속성과 다중값 속성
단일값 : 값이 하나만 들어 갈 수 있다. 예) 주소
다중값 : 값이 여러가지 들어갈 수 있다. 예) 취미
다중값은 타원으로 표현한다.
이는 관점에 따라 달라질 수 있다.
- 저장속성과 유도속성
저장속성 : 단순히 저장만 되는 속성이다. 다른 속성을 유도해 낼 수 있으면 저장속성이다. 예)
생년월일
유도속성 : 다른 필드로 값을 유추해낼 수 있는 속성이다. 예) 나이 (생년월일로 유추할 수 있
음.)
유도속성은 다른 속성으로 유추할 수 있기 때문에 안만들 가능성이 많다.
(3) 관계 (Relationship) : 마름모
도서 - 구매 - 고객
학생 - 소속 - 학과
학생 - 수강 - 강좌
1) 차수에 따른 유형
- 1진 관계 : 한 개의 개체가 자기 자신과 관계를 맺는 경우
예) 학생이라는 똑같은 속성인데 멘티와 멘토 혹은 마니또로 관계를 맺을 수 있다.
- 2진 관계 : 두 개의 개체가 관계를 맺는 경우 (가장 일반적인 관계이다.)
예) 학생은 학과에 소속되어 있다.
- 3진 관계 : 세 개의 개체가 관계를 맺는 경우
예) 학생은 강좌를 강의실에서 듣는다.
2) 관계 대응수에 따른 유형
- 일대일 관계 : 하나에 하나가 대응되는 것
예) 사원이 컴퓨터 하나를 사용한다.
- 일대 다 관계 : 하나에 여러개가 대응되는 것
예) 학생이 여러 과목을 수강한다.
- 다대일 관계 : 여러개에 하나씩 대응된다. (관점만 다르지 일대다/다대일 은 같다.)
예) 여러개의 학생이 하나의 학과에 대응한다.
- 다대다 관계
각 개체 타입의 개체들이 서로 임의의 개수의 개체들과 서로 복합적인 관계를 맺고 있
는 관계
데이터베이스에서 다대다 관계가 되어서는 안된다. 가장 나쁜 관계이다.
반드시 일대일이나 일대다 관계로 고쳐야한다.
3) 관계대응수의 최소값과 최대값
- 관계대응수 1:1, 1:N, M:N에서 1,N,M은 각 개체가 관계에 참여하는 최댓값을 의미
- 관계에 참여하는 개체의 최솟값을 표시하지 않는다는 단점을 보완하기 위해
다이어그램에서는 대응수 외에 최솟값과 최댓값을 관계실선 위에(최솟값, 최댓값)으로 표기
1
상대개체에 비교해서 가질 수 있는 개체
(1,1)
본인이 직접 가질 수 있는 개체
여기서 *은 무한대를 말한다.
4) 역할
- 마치주석처럼 구체적인 설명을 적을 수 있다.
<데이터설계 모델링 과정>
1) 명사를 고른다.
예시)
Netsong7전문학교에서는 수강신청을 관리하려고 한다. 모든 과정은 과목코드를 가지고 있으며 과목명과 그 기간 을 알아야 한다. 각 과정은 날짜에 따라 다른 강의실에서 여러 번 열릴 수 있으나 하루에 동일한 과정이 여러 번 열리는 경우는 없다. 각 과목의 강사는 본 학교 교사가 맡으며 한 강좌는 한명 이 전담한다. 하지만 한 과목만을 강의하는 교사도 있고 여러 과목을 강의하는 교사도 있다. 수강생들은 개설된 과정을 수강할 수 있고 각 학생에 대해 서는 그 사람의 주민번호와 이름을 알아야 한다. |
2) 관련된 내용이 있는 명사를 추론한다.
테이블이 죌 가능성이 많다.
예시)
Netsong7전문학교에서는 수강신청을 관리하려고 한다. 모든 과정은 [과목코드]를 가지고 있으며 [과목명]과 그 [기간]을 알아야 한다. 각 과정은 [날짜에 따라 다른 강의실에서 여러번 열릴 수 있으나] 하루에 동일한 과정 이 여러번 열리는 경우는 없다. 각 과목의 강사는 본 학교 교사가 맡으며 [한 강좌는 한명 이 전담]한다. 하지만 한 과목만을 강의하는 교사도 있고 여러 과목을 강의하는 교사도 있다. 수강생들은 개설된 [과정]을 수강할 수 있고 각 학생에 대해서는 그 사람의 [주민번호]와 [이름]을 알아야 한다. |
Netsong7전문학교 (Entity Set) |
|
과정 |
과목코드, 과목명, 기간, 강사 |
수강생 |
주민번호, 이름 |
이런 명사형 중 Enitity로 선택이 되려면 반드시 구성요소를 가져야 한다. 명사들 중 다른 구성요소로 표현될 수 있는 명사들을 찾아보면 위와 같다. 이런 구성요소를 Attribute라 하고, Attribute는 관리할 정보의 항목 이라고 보면 된다. 만약 Entity가 될 수 있는 후보들을 단지 Attribute가 없다고 너무 쉽게 자격을 박탈하지는 말라. 나중에 혹시 중요한 Attribute들이 나타날 수 있기 때문이다. |
3. 논리적 모델링
(1) 이진관계타입
방법1)
일 대 다 관계 경우 많이 사용
E1(KA1, A2)
E2(KA2, A4, KA1)
방법2)
다대 일 관계 경우 많이 사용
E1(KA1, A2, KA2)
E1(KA2, A4)
방법3)
일 대 일 경우 많이 사용
ER(KA1, A2, KA2, A4)
방법4)
다 대 다 경우 많이 사용
E1(KA1, A2)
R(KA1, KA2)
E2(KA2, A4)
(2) 다중값 속성 매핑
R(학생)
KA(학번) B(이름) C(취미)
1) C의 값을 알 수 없는 경우
R(KA, B)
RC(KA, C)
2) C의 값이 3개정도 일 경우
R(KA, B, C1, C2, C3)
4. 정규화(Normalization)
(1) 종류
1) 제1정규화
속성값은 반드시 원자값이어야 한다.
2) 제2정규화
- 기본키가 복합키일때, 복합키의 일부분이 다른 속성의 결정자인지 여부 판단
- 모든 키가 아닌 컬럼은 기본키 전체의 의존적이어야 한다.
기본키의 일부분에 의존적이어서는 안된다.
3) 제3정규화
- 기본키가 아닌 컬럼은 다른 키가 아닌 컬럼에 의존적이어서는 안된다.
'DB' 카테고리의 다른 글
[DB] MySQL 설치 (0) | 2018.01.02 |
---|---|
[DB] ERD 그려보기 예제 (0) | 2017.11.22 |
[DB] Trigger (0) | 2017.11.21 |
[DB] Procedure (0) | 2017.11.20 |
[Oracle] 오라클11g 다운로드 및 설치 (0) | 2017.11.20 |