[DB] DB 모델링

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

댓글

Designed by JB FACTORY