프로그래밍/자바(java) 융합개발자 2차

[자바 기초] 10일차 일지 1 - 6. 데이터 모델링

aSpring 2020. 12. 28. 11:20
728x90
728x90

 

 

[목차]

1. 데이터 모델링의 개념

2. ER 모델

3. ER 모델을 관계 데이터 모델로 사상

4. ERwin 실습

5. 모델링 연습 - 마당 대학(데이터베이스)


설계 -> 구현(코딩)

design

           implementation

           Develope 개발

 

우리가 하는 것 : 설계 : 기획, 계획, 생각 -> 그림(Diagram) -> 도형, 표준화, 상호 통신(공용)

우리는 Diagram(설계도(건축에서의 설계도면))을 보고 그림을 그리는 것

DB - ER 다이어그램(NTT relationship), DB 설계서

       E-R(개체-관계)

 

DB의 무엇을 설계하느냐? 여러 개의 테이블

 

1. 데이터 모델링의 개념

              ㄴ> 데이터 구조를 설계하겠다.

프레임워크, 스프링(웹 - 궁극적으로 우리가 6개월간 배울 것)

- Model : 데이터

- View : 화면

- Control : 제어(문기분, 반복문.. )

 

2. ER 모델 : NTT relationship

 

3. ER 모델을 관계 데이터 모델로 사상 : 사상한다, 투영하다(변환하다라기 보다는)

 

4. ERwin 실습

 

5. 모델링 연습 - 마당 대학(데이터베이스)


01. 데이터 모델링의 개념

데이터 모델링의 중요성

설계 -> 구현

 

데이터 모델링의 개념

우리는 3번인 DB로 구현 ex) Create table ~. 이걸 먼저 했음

실생활에 있는 정보를 ER 다이어그램으로 그리고 이것을 관계 데이터 모델로 만든다

ER 다이어그램의 네모, 다이아몬드들을 관계 데이터 모델로 만들고 DB로 구현

 

현실세계 -> ER 다이어그램 -> 관계 데이터 모델

             ①                    ②

각각 변환하는 것이 중요하다.

 

 

1. 데이터베이스 생명주기

데이터베이스 생명주기(database life cycle) : 데이터베이스의 생성과 운영에 관련된 특징

데이터베이스 생명주기

운영 단계 : 테스트(알파테스트 : 개발자들끼리 테스트, 베타 : 클로즈 테스트), 유지보수

 

 

1. 요구사항 수집 및 분석

사용자들의 요구사항을 듣고 분석하여 데이터베이스 구축의 범위를 정하는 단계

 

2. 설계

분석된 요구사항을 기초로 주요 개념과 업무 프로세스 등을 식별하고(개념적 설계), 사용하는 DBMS의 종류에 맞게 변환(논리적 설계) 한) 후, 데이터베이스 스키마를 도출(물리적 설계)

 

3. 구현

설계 단계에서 생성한 스키마를 실제 DBMS에 적용하여 테이블 및 관련 객체(, 인덱스 등)를 만듦

 

4. 운영

구현된 데이터베이스를 기반으로 소프트웨어를 구축하여 서비스를 제공

 

5. 감시 및 개선

데이터베이스 운영에 따른 시스템의 문제를 관찰하고 데이터베이스 자체의 문제점을 파악하여 개선

 

2. 데이터 모델링 과정

데이터 모델링 과정

2 개념적 모델링 - ERD 작성 : 머릿속에 있는 것을 네모, 다이아몬드로 만든다.

 

3 논리적 모델링 : ERD를 -> customer(custid, name, address, phone) 이런 식으로 만든다.

   속성 :  Customer - Order - Book 세 개의 테이블 안에 있는 상세한 속성들 테이블명(id, name, address, 속성 .. )

   정규화 : Standard, 표준화시킨다, 최적화시킨다, Normallize 시킨다. 불필요, 중복된 것들 빼고 필요한 것만 남긴다.

 

2.1 요구사항 수집 및 분석

 

요구사항 수집 방법

  1. 실제 문서를 수집하고 분석함
  2. 담당자와의 인터뷰나 설문조사를 통해 요구사항을 직접 수렴함
  3. 비슷한 업무를 처리하는 기존의 데이터베이스를 분석함
  4. 각 업무와 연관된 모든 부분을 살펴봄

 

2.2 개념적 모델링

  : 내 머리 속의 생각을 ER 다이어그램으로 만드는 것

 

개념적 모델링(conceptual modeling)

  • 요구사항을 수집하고 분석한 결과를 토대로 업무의 핵심적인 개념을 구분하고 전체적인 뼈대를 만드는 과정
  • 개체(entity)를 추출하고 각 개체들 간의 관계를 정의하여 ER 다이어그램(ERD, Entity Relationship Diagram)을 만드는 과정까지를 말함

개념적 모델링의 예

 

 

2.3 논리적 모델링

논리적 모델링(logical modeling)

  • 개념적 모델링에서 만든 ER 다이어그램을 사용하려는DBMS에 맞게 사상(매핑, mapping)하여 실제 데이터베이스로 구현하기 위한 모델을 만드는 과정

논리적 모델링의 예

 

논리적 모델링 과정

  1. 개념적 모델링에서 추출하지 않았던 상세 속성들을 모두 추출함
  2. 정규화 수행
  3. 데이터 표준화 수행

2.4 물리적 모델링

물리적 모델링(physical modeling)

  • 작성된 논리적 모델을 실제 컴퓨터의 저장 장치에 저장하기 위한 물리적 구조를 정의하고 구현하는 과정
  • DBMS의 특성에 맞게 저장 구조를 정의해야 데이터베이스가 최적의 성능을 낼 수 있음

물리적 모델링의 예

 

물리적 모델링 시 트랜잭션, 저장 공간 설계 측면에서 고려할 사항

  1. 응답시간을 최소화 : 쿼리를 잘 짜라 -> ① 돌아가게 ② 빠른가?(성능 측정, Cost가 작은지)
  2. 얼마나 많은 트랜잭션을 동시에 발생시킬 수 있는지 검토 -> 쿼리를 동시에 여러개를 날릴 수 있는가. 쿼리1, 쿼리2, 쿼리3 .. 을 묶어놓은 것이 트랜잭션
  3. 데이터가 저장될 공간을 효율적으로 배치

 

02. ER 모델

  • 개체와 개체 타입 -> 네모
  • 속성                 -> 동그라미
  • 관계와 관계 타입 -> 다이아몬드
  • 약한 개체 타입과 식별자 : 개체 타입(자료형), 식별자(identifier - 기본키비슷한 것)                                                                                      ㄴ 강한 개체에서 쓰는 것
  • IE 표기법 : 표준

 

  • ER(Entity Relationship) 모델 : 세상의 사물을 개체(entity)와 개체 간의 관계(relationship)로 표현함
  • 개체 : 독립적인 의미를 지니고 있는 유무형의 사람 또는 사물. 개체의 특성을 나타내는 속성(attribute)에 의해 식별됨. 개체끼리 서로 관계를 가짐.

      ex) 속성 - 개체 사람의 아이디, 주소, 전화번호 등..

 

ER 모델의 기본 개념

사람이라는 형태로 남편을 만들고 사람이라는 형태로 아내를 만든다. ex) 고객, 책

남편, 아내 : 역할에 해당 ex) 주문하다, 사다 ..

사람, 고객, 책 : 개체

결혼하다 : 관계

 

  • ER 다이어그램 : ER 모델은 개체와 개체 간의 관계를 표준화된 그림으로 나타냄

ER 다이어그램

 

1 : N

한 직원이 여러 프로젝트를 한다

 

개체(entity)

  • 사람, 사물, 장소, 개념, 사건과 같이 유무형의 정보를 가지고 있는 독립적인 실체
  • 비슷한 속성의 개체 타입(entity type)을 구성하며, 개체 집합(entity set)으로 묶임

개체, 개체 타입, 개체 집합

개체 : 축구아는 여자, 축구의 이해, 축구의 역사 -> 개체 집합 -> 이것들은 전부 도서라는 개체 타입

 

 

ER 다이어그램상에서 개체 타입은 직사각형으로 나타냄

개체 타입의 ER 다이어그램 표현

개체 타입의 유형

  • 강한 개체(strong entity) : 다른 개체의 도움 없이 독자적으로 존재할 수 있는 개체 -> 일반 개체(독립적)
  • 약한 개체(weak entity) : 독자적으로는 존재할 수 없고 반드시 상위 개체 타입을 가짐(의존적)

 

속성(attribute) : 개체가 가진 성질 -> 타원(도서이름, 출판사, 도서단가)

   개체가 가질 수 있는 상세한 속성들

 

개체 타입과 속성

 

속성의 ER 다이어그램 표현

  • 속성은 기본적으로 타원으로 표현. 개체 타입을 나타내는 직사각형과 실선으로 연결됨
  • 속성의 이름은 타원의 중앙에 표기
  • 속성이 개체를 유일하게 식별할 수 있는 키일 경우 속성 이름에 밑줄을 그음

도서 개체 타입

 

2.2 속성의 유형

속성의 ER 다이어그램 표현

 

약한 개체는 사각형 두개가 겹친 것

 

cf) 다중 속성 : 동그라미 두개가 겹쳐있는 것

ex) 취미 - 취미라는 속성은 바둑, 수영, 필라테스, 바둑 등 같은 레벨의 속성이 여러가지가 있을 수 있다(병렬적인 느낌)

 

cf) 복합 속성

ex) 주소 - 시, 동, 번지 : 속성 '주소'는 서로 다른 속성인 시, 동, 번지를 모두 함께 묶어야 하나의 속성인 '주소'가 된다.

 

유도 속성

ex) '나이' 속성의 경우 생년월일을 입력받았으면 자연스레 알 수 있는 속성

    '지역' 속성의 경우에도 주소를 입력받았으면 알 수 있는 속성

 

 

3. 관계와 관계 타입 : 다이아몬드

  • 관계(relationship) : 개체 사이의 연관성을 나타내는 개념
  • 관계 타입(relationship type) : 개체 타입과 개체 타입 간의 연결 가능한 관계를 정의한 것이며, 관계 집합(relationship set)은 관계로 연결된 집합을 의미

관계, 관계 타입, 관계 집합

 

3.1 관계 타입의 ER 다이어그램 표현

관계 타입의 ER 다이어그램 표현과 관계의 예

 

3.2 관계 타입의 유형

차수에 따른 유형

  • 관계 집합에 참가하는 개체 타입의 수를 관계 타입의 차수(degree)라고 함

차수에 따른 관계 타입의 유형

 

1진 관계(recursive relationship) : 한 개의 개체가 자기 자신과 관계를 맺는 경우

1진 관계의 예

2진 관계(binary relationship) : 두 개의 개체가 관계를 맺는 경우

2진 관계의 예

ex) 2진 관계 : 고객이 / 책을 / 주문하다

 

3진 관계(ternary relationship) : 세 개의 개체가 관계를 맺는 경우

3진 관계의 예

 

 

 

관계 대응수(cardinality) : 두 개체 타입의 관계에 실제로 참여하는 개별 개체 수

관계 대응수에 따른 관계 타입의 유형

 

<일대다(1:N), 다대일(N:1) 관계 서로 구분>

 

1. 일대일(1:1)관계

   좌측 개체 타입에 포함된 개체가 우측 개체 타입에 포함된 개체와 일대일로 대응하는 관계

1:1 관계의 예

ex) 한 사람은 한 책만 살 수 있다.

    한 사원은 한 컴퓨터를 쓸 수 있다.

 

2. 일대다(1:N), 다대일(N:1) 관계

실제 일상생활에서 가장 많이 볼 수 있는 관계로, 한쪽 개체 타입의 개체 하나가 다른 쪽 개체 타입의 여러 개체와 관계를 맺음

 

일대다, 다대일 관계의 예

한 학생은 여러개의 학과를 가질 수 없음

한 학과는 여러명의 학생을 가질 수 있음

 

ex) 1 : N  -> 한 사람이 책을 여러 권 살 수 있다.

    N : 1 -> 하나의 책 이름은 여러 사람에게 팔릴 수 있다.

 

3. 다대다(M:N) 관계

각 개체 타입의 개체들이 서로 임의의 개수의 개체들과 서로 복합적인 관계를 맺고 있는 관계

다대다 관계의 예

한 학생은 여러 개의 강좌를 수강할 수 있다.

한 강좌는 여러 명의 학생이 수강할 수 있다.

 

관계 대응수의 최솟값과 최댓값

  • 관계 대응수 1:1, 1:N, M:N에서 1, N, M은 각 개체가 관계에 참여하는 최댓값을 의미
  • 관계에 참여하는 개체의 최솟값을 표시하지 않는다는 단점을 보완하기 위해 다이어그램에서는 대응수 외에 최솟값과 최댓값을 관계실선 위에 (최솟값, 최댓값)으로 표기

      ---------------------------------------------중요---------------------------------------------------------

관계 대응수의 최솟값과 최댓값

(0, *) : 0~*(무한대, 많다)                                            (1,1) : 최소 1개 ~ 최대 1개

 

한 학생은 한개의 학과를 가지는데 최소 1개에서 최대 1개만 가질 수 있다 -> 학생은 반드시 1개의 학과를 가져야 한다.

학생은 입학 전에는 0이고 입학하면 * 많은 수의 학생이 들어온다(학생은 만들 때 없어도 된다.)

학생은 반드시 학과(NOT NULL)를 적어야 한다.

ex) 학생에서 (1,2)라고 되어있으면 학생은 최소 1개의 학과를 가져야하고 복수전공으로 1개 더 해서 최대 2개의 학과까지 가지는 것이 아능하다

 

    ---------------------------------------------중요---------------------------------------------------------

 

3.3 ISA 관계 : 부모 - 자식 관계(상속 관계)

- isA : he is boy -> he = boy : 같다. 동등 ex) 부모 -> 자식(상속)

- hasA -> he has book -> he가 book을 가지다. ex) 어떤 객체(객체B)를 내(객체A)가 가지고 있다. -> 객체 A(내)가 멤버변수인 객체(B)를 가지고 있다.

 

상위 개체 타입의 특성에 따라 하위 개체 타입이 결정되는 형태

isA 관계와 예

역삼각형 : ISA -> 상하관계 : 부모-자식 관계

 

개체 학생 : 부모개체

휴학생, 재학생, 졸업생 : 자식 개체 -> 학생이 없어져도 휴학생, 재학생, 졸업생은 살아있다(부양관계 아님)

 

3.4 참여 제약 조건

  • 개체 집합 내 모든 개체가 관계에 참여하는지 유무에 따라 전체 참여와 부분 참여로 구분 가능
  • 전체 참여는 개체 집합의 모든 개체가, 부분 참여는 일부만 참여
  • 전체 참여를 (최솟값, 최댓값)으로 표현할 경우 최솟값이 1 이상으로 모두 참여한다는 뜻이고, 부분 참여는 최솟값이 0 이상

(0, *) :  최소값 0 -> 없을 수도 있다. 부분 참여 ex) 처음에 학과에는 학생이 없을 수도 있음

(1, 1) : 무조건 1개 -> 최소값이 1 : 모두 참여, 전체 참여 ex) 학생은 입학을 하면 무조건 학과가 있어야 함

 전체 참여도 선 두개 잘 안긋고 (1, 1) 이런 식으로 표시함

 

ex) 강좌는 수강생이 무조건 1명은 있어야 함 -> 전체 참여

     학생은 수강 신청을 안할 수 있음 ex.휴학하는 등 -> ex) (0, 7) -> 부분 참여

 

 

3.5 역할

개체 타입 간의 관계를 표현할 때 각 개체들은 고유한 역할(role)을 담당

1 : N

교수는 여러명의 학생을 지도할 수 있다.

학생은 지도교수를 1명만 둘 수 있다.

 

 

3.6 순환적 관계

  • 순환적 관계(recursive relationship) : 하나의 개체 타입이 동일한 개체 타입(자기 자신)과 순환적으로 관계를 가지는 형태 -> 재귀 : 순환 참조

순환적 관계의 예

(a) 학생은 멘토링을 할 때 멘토가 될 수도 있고 멘티가 될 수도 있다.

(b) 사원은 지시를 할 수도 있고 받을 수도 있다.

 

4. 약한 개체 타입과 식별자

약한 개체(weak entity) 타입 : 의존적

  • 상위 개체 타입이 결정되지 않으면 개별 개체를 식별할 수 없는 종속된 개체 타입
  • 약한 개체 타입은 독립적인 키로는 존재할 수 없지만 상위 개체 타입의 키와 결합하여 약한 개체 타입의 개별 개체를 고유하게 식별하는 속성을 식별자(discriminator) 혹은 부분키(partial key)라고 함
  •  

식별자와 약한 개체 타입

약간 개체 타입이면 -> 식별 관계 타입도 이중 -> 키를 가질 수 X고 무조건 식별자

 

 

 

약한 개체 타입과 식별자의 예

이름 : 키가 아니라 식별자 -> 파선으로 표시

직원과 가족은 의존적인 관계이다.

직원의 속성을 가족을 가지고 오지는 않음

 

 

5. IE 표기법 : ER 다이어그램의 표준화된 표기법

  • IE 표기법에서 개체 타입과 속성은 직사각형으로 표현

IE 표기법 - 관계와 관계대응수와 예(식별자 관계, 비식별자 관계)

1 : N, (0, *) 이런거 안쓰고 저런 선으로 쓰겠다.

 

직원은 최소 1개, 최대 1개의 부서를 가져야 한다.

부서는 직원이 처음에는 없을 수도 있고 여러 명의 직원을 가질 수 있다.

 

가족은 직원 1명에게만 등록될 수 있다(최소 1개, 최대 1개)

예외) 만약 홍길동이라는 사람의 딸(홍길순), 아들(홍길만)이 둘 다 같은 회사에 취업한 경우...

    -> 홍길동은 직원인 홍길순 또는 홍길만 둘 중 한명에게만 등록될 수 있다.

 

직원은 부양가족이 없을 수도 있고 여러명일 수도 있다.

 

직원 : 강한개체

가족 : 약한개체

 

 

연습문제 풀이

연습문제 2~4번

정답은 더보기 클릭

더보기

연습문제

2. 정답 3번 : 속성 - 타원형

속성의 ER 다이어그램 표현

3. 정답 2번 : 모두 가능(1:1, 1:N, N:1, N:M)

4. 정답 3번 : 이중 동그라미는 다중 속성 ex) 취미 : 장구, 바둑, 장기, 축구, 농구, 배구 등.. 같은 레벨이 올 수 있음

  복합속성은 아래 그림과 같다

복합속성의 예

 

 03. ER 모델을 관계 데이터 모델로 사상

  • 개체 타입의 사상
  • 관계 타입의 사상
  • 다중값 속성의 사상

완성된 ER 모델은 실제 데이터베이스로 구축하기 위해 논리적 모델링 단계를 거치는데, 이 단계에서 사상(mapping)이 이루어짐

ER 모델과 관계 데이터 모델의 사상 알고리즘

 

1. 개체 타입의 사상 : 네모

  • [1단계] 강한(정규) 개체 타입 : 정규 개체 타입 E의 경우 대응하는 릴레이션 R을 생성함
  • [2단계] 약한 개체 타입 : 약한 개체 타입에서 생성된 릴레이션은 자신의 키와 함께 강한 개체 타입의 키를 외래키로 사상하여 자신의 기본키를 구성

개체 타입의 사상

 

가족 테이블의 사번, 이름은 복합키

- 가족 테이블의 사번은 사원 테이블의 사번을 항상 가져와야 함, 의존해야 함

 

2. 관계 타입의 사상 : 다이아몬드

3단계  1 : 1

4단계  1 : N

5단계  M : N

6단계  여러 개

 

이진 관계  타입

 

<2진 관계일 때>

[방법1] 오른쪽 개체 타입 E2를 기준으로 관계 R을 표현한다.

          E1(KA1, A2) -> 컴퓨터(컴id, 컴이름)

          E2(KA2, A4, KA1) -> 사원(사원id, 사원이름, 컴id)

 

[방법2] 왼쪽 개체 타입 E1을 기준으로 관계 R을 표현한다.

          E1(KA1, A2, KA2)    -> 컴퓨터(컴id, 컴이름, 사원id)

          E2(KA2, A4)          -> 사원(사원id, 사원이름)

 

[방법3] 단일 릴레이션 ER로 모두 통합하여 관계 R을 표현한다.

          ER(KA1, A2, KA2, A4)   -> 컴퓨터사람(컴id, 컴이름, 사원id, 사원이름)

 

[방법4] 개체 타입 E1, E2와 관계 타입 R을 모두 독립된 릴레이션으로 표현한다. -> 이게 우리가 이제껏 해온 방식

          E1(KA1, A2)   -> 컴퓨터(컴id, 컴이름)

          R(KA1, KA2)  -> 사용(컴id, 사원id)

          E2(KA2, A4)  -> 사원(사원id, 사원이름)

 

   -> 한 사람은 여러 대의 컴퓨터 사용 가능

       한 컴퓨터를 여러 사람이 사용 가능      -> M : N

 

방법 4개 중에서 가장 좋은 방법은 방법 3 > 방법 1, 2 > 방법 4(만능)

방법1은 1:N -> 3단계

방법1, 2 둘 다 가능 -> 1:1

방법3은 1:1일 때만 한 테이블로 만들 수 있음 -> 3단계

방법4는 M : M일 때 -> 5단계

 

[3단계] 이진 1:1 관계 타입

이진 1:1 관계 타입의 경우 [방법1]~[방법4]까지 모든 유형으로 사상 가능. 개체가 가진 정보 유형에 따라 판단

 

- 한 사원은 한 대의 컴퓨터만 쓰고,

  한 컴퓨터는 한 명의 사원에게만 사용되어진다.

  방법3으로도 가능  사원,컴(사원번호, 컴번호, 사원이름, 컴이름)

 

[4단계] 이진 1:N 관계 타입

이진 1:N 관계 타입의 경우 N의 위치에 따라 [방법1] 또는 [방법2]의 유형으로 사상됨

 

- 한 학생은 1개의 과만 가질 수 있는데

  한 학과는 여러 명의 학생을 가질 수 있다.

 

 

[5단계] 이진 M:N 관계 타입 : 가장 많이 사용

이진 M:N 관계 타입은 [방법4]의 유형으로 사상

 

- 교수는 여러 개의 강의를 한다.

  한 강의는 여러 교수에 의해서 강의 되어진다.

 

[6단계] N진 관계 타입

ER 모델의 차수가 3 이상인 다진 관계 타입의 경우 [방법4]의 유형으로 사상

- 학생이 여러개의 강좌를 듣는다

  이 강좌에는 여러 명의 학생이 듣는다.

  이 강좌는 강의실을 한 개만 쓴다. -> 개체 3개

  수강이라는 릴레이션 1개

 

3. 다중값 속성의 사상

다중값 속성의 개수에 따른 사상 방법

ex)

KA : 001라는 id를 가진

B : 홍길동이라는 이름을 가진 사람이

C : 축구, 야구, 바둑 세개의 취미를 가지고있다. -> R(001, 홍길동, 축구, 야구, 바둑) 

     3개를 초과하는 취미를 가진 경우 -> R(id, 취미)

                                                     RC(id, 취미) -> 복합키

 

 

[7단계]

속성의 개수를 알 수 없으면 [방법1], 속성의 개수가 제한적으로 정해지면 [방법2]를 사용

ex) 학번이 101번이라면

[방법]

학생(학번, 이름)

취미(학번, 취미이름)

 

학생 : 101, 홍길동

 

취미 :

101, 농구

101, 배구

101, 축구

-> 학번과 취미가 둘 다 같아야 중복!! -> 복합키

 

 

연습문제 풀이

우리는 궁긍적으로 이런걸 받아서 테이블을 만들어야 함

다음 내용 받아서 -> ER 그리고 -> 테이블( , , ) -> CREATE TABLE

 

더보기
(1) ER 다이어그램
(2) ER인데 IE 표기법으로 표기

 

(3) 테이블

(3) 후에 실제로 테이블 만들기

 

8. 다음은 고객과 주문에 관한 ER 다이어그램이다. 개체는 고객(Customer), 제품(Product), 주문(Invoice)으로 구성된다. Place 관계는 ‘주문한다’를, LineItem은 ‘주문 항목’을 의미한다. 그림에 해당하는 테이블을 작성하시오(변환된 테이블의 기본키는 밑줄 실선, 외래키는 밑줄 점선으로 표시한다. 기본키인 동시에 외래키일 경우에는 밑줄 실선으로 표시한다. 테이블 변환을 위하여 필요한 사항 중 설명되지 않은 것은 임의로 정하여 설계한다).

고객, 주문에 관한 ER 다이어그램

 

  

04. 실습

데이터 모델링. IE 표기법

마당서점의 ER 다이어그램

 


요약

Chapter 06. 데이터 모델링 요약

 

728x90
728x90