본문 바로가기

데이터베이스기초

[데이타베이스기초 8장] 데이타 모델링

데이타의 세계

  • 데이타베이스는 계속적으로 변하는 현실 세계 표현
  • 데이타 모델 = 설계 과정에서 컴퓨터에 저장할 데이타의 구조를 논리적으로 표현하기 위해 사용하는 지능적 도구
  • 데이타는 세 계의 상이한 세계

1. 현실 세계

  • 인간이 오관을 통해 감지할 수 있는 개체(entity)로 되어 있음
  •  -> 개념적 모델링 -> 개념 세계(E-R 다이어그램)

2. 개념 세계

  • 현실 세계에 존재하는 실체의 의미로부터 얻은 개념으로 표현
  • -> 논리적 모델링 -> 컴퓨터 세계

3. 컴퓨터 세계

  • 이 개념 세계를 컴퓨터가 처리할 수 있는 데이타로 표현

[ 3가지 모델링 ]

  • 개념적 모델링: 개체와 개체들 간의 관계에서 ER다이어그램을 만드는 과정(인간이 이해하기 쉽도록!!)
  • 논리적 모델링: ER다이어그램을 사용하여 관계 스키마 모델을 만드는 과정(컴퓨터 세계에 맞도록!!)
  • 물리적 모델링: 관계 스키마 모델의 물리적 구조를 정의하고 구현하는 과정

개념적 데이터 모델

1. 개념적 데이터 모델은 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정이다.

2. 개념적 데이터 모델은 속성들로 기술된 개체 타입과 이 개체 타입들 간의 관계를 이용하여 현실 세계를 표현한다.

3. 개념적 데이터 모델은 현실 세계에 존재하는 개체를 인간이 이해할 수 있는 정보 구조로 표현하기 떄문에 정보 모델이라고도 한다.

대표적인 개념적 데이터 모델로는 E-R모델이 있다.

 

논리적 데이터 모델

1. 논리적 데이터 모델은 개념적 모델링 과정에서 얻은 개념적 구조를 컴퓨터가 이해하고 처리할 수 있는 컴퓨터 세계의 환경에 맞도록 변환하는 과정이다.

2. 논리적 데이터 모델은 필드로 기술된 데이터 타입과 이 데이터 타입들 간의 관계를 이용하여 현실 세계를 표현한다.

3. 단순히 데이터 모델이라고 하면 논리적 데이터 모델을 의미한다.

4. 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용한다.

5. 논리적 데이터 모델은 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분한다.

개념적 모델링은 현실에 있는 개체를 그냥 e-r 다이어그램으로 개체와 관계를 추상적으로 표현화한 과정이다. 논리적 모델링은 데이타 모델이 있는 것이다. -> 물리적 모델링은 실제로 저장 장치에 저장할 형태로 표현하는 것이다.

데이타 모델(data model: D)

                        D = <S, O, C>

S : 구조(structure)

  • 데이타의 정적 성질(static properties)
  • 개체 타입과 이들 간의 관계를 명세
  • 개체 타입의 예시로는 학생, 교수, 과목, 사람 -> 단독으로 존재하면서 의미 나타냄
  • 관계는 단독으로 의미 표현 x, 개체 간의 연관을 통해 의미 표현하는 개체 타입의 특수 형태
  • 관계의 예시로는 교수와 학생 개체 타입 간의 "지도"

O : 연산(operation)

  • 데이타의 동적 성질(dynamic properties)
  • 개체 인스턴스(instance)를 처리하는 작업에 대한 명세    
  • 데이타의 조작 기법

C : 제약 조건(constraints)

  • 데이타의 논리적 제약(logical constraints)
  • 개체 인스턴스의 존재 조건
  •    :구조(S)로부터 파생
  •    :의미상 제약(어느 특정 물리적 저장 구조에 표현 x)
  • 데이타 조작의 한계를 표현하는 규정

개체 타입

개체 (entity)

  • 단독으로 존재할 수 있으며 다른 것과 구별되는 객체(object)

개체 타입

  • 이름과 애트리뷰트들로 정의됨
  • 애트리뷰트는 개체의 특성을 정의하는 속성임
  • 개체 집합: 한 개체 타입에 대한 개체 인스턴스들의 집합, 값들의 집합

애트리뷰트의 유형

  • 단순 애트리뷰트와 복합 애트리뷰트
  • 단일 값 애트리뷰트와 다중 값 애트리뷰트
  • 유도 애트리뷰트와 저장 애트리뷰트
  • 널 애트리뷰트

단순 애트리뷰트와 복합 애트리뷰트

  • 단순 애트리뷰트(simple attribute) : 더 이상 작은 구성원소로 분해할 수 없는 애트리뷰트
  • 복합 애트리뷰트(composite attribute)는 몇 개의 기본적인 단순 애트리뷰트로 분해할 수 있는 애트리뷰트

하나의 애트리뷰트 값이 세분화되는 것이다. 애트리뷰트값이 여러 개인 게 아니라 !!

단일 값 애트리뷰트와 다중 값 애트리뷰트
단일 값 애트리뷰트(single-valued attribute)
  • 대부분의 애트리뷰트들은 특정 개체에 대해 하나의 값을 가짐
  • “학생” 개체 타입의 name(이름) 애트리뷰트 : 각 개체에 대해 하나의 값만 가짐
다중 값 애트리뷰트(multivalued attribute)
  • 한 개체에 대해서 몇 개의 값을 가지고 있을 수 있음
  • “학생” 개체 타입에 hobby(취미) 애트리뷰트 : 학생에 따라서는 두 개 이상의 취미를 가질 수 있음
  • 현실적으로 다중 값 애트리뷰트로 처리하기 위해서 값의 최대 수 제한 가능

유도 애트리뷰트와 저장 애트리뷰트

유도 애트리뷰트(derived attribute)
  • 애트리뷰트의 값이 다른 애트리뷰트나 개체가 가지고 있는 값으로부터 유도되어 결정되는 경우
저장 애트리뷰트(stored attribute)
  • 유도 애트리뷰트를 생성하는데 사용된 애트리뷰트
과목별 평균 성적을 표현하는 “과목-성적” 개체 타입의 “평균 성적” 애트리뷰트인 경우
  • “평균 성적” 애트리뷰트의 값은 등록 개체 타입의 “성적” 애트리뷰트 값을 평균한 결과로 결정
  • “평균 성적” 애트리뷰트 : 유도 애트리뷰트
  • 이를 위해 사용된 “성적” 애트리뷰트 : 저장 애트리뷰트

널 애트리뷰트

  • 널 값(null value)을 갖는 애트리뷰트
  • 널 값은 어떤 개체 인스턴스가 어느 특정 애트리뷰트에 대한 값을 가지고 있지 않을 때 이를 명시적으로 표시하기 위해 사용

널 값을 갖는 경우

  • 그 애트리뷰트 값이 그 개체에 “해당되지 않는”(not applicable) 경우
  • 그 애트리뷰트 값을 “알 수 없는”(unknown) 경우
       ->  그 값이 존재하지만 값이 “누락”(missing)인 경우
       ->  그 값이 존재하고 있는지 조차 알 수 없어 “모르는”(not known) 경우

 

관계 타입

  • 개체 집합(타입)들 사이의 대응(correspondence), 즉 사상(mapping)을 의미

 

관계 타입의 유형

  • 사상 원소 수(mapping cardinality): 관계 타입의 원소 수 제약 조건
  • 정적인 관계
  • 1 : 1 (one to one: 일 대 일)
  • 1 : n (one to many: 일 대 다)
  • n : 1 (many to one: 다 대 일)
  • n : m (many to many: 다 대 다)
  • 사상의 함수성: 사상 f와 g가 모두 함수적 -> 1:1 / 둘 중 하나만 함수적 -> 1:n / 둘 다 함수적 x -> m:n

관계 타입의 특성

관계 타입의 참여 제약조건(participation constraint)은 뭐가 있을까요???

전체 참여

  • A-B 관계에서 개체 집합 A의 모든 개체가 A-B 관계에 참여
  • ex) 교수 학과 관계

부분 참여

  • A-B 관계에서 개체 집합 A의 일부 개체만 A-B 관계에 참여
  • ex) 학생과목 관계에서 학생(휴학생 제외) 일부만 참여
존재 종속(existence dependence)
  • 어떤 개체 b의 존재가 개체 a의 존재에 종속됨
  • b는 a에 존재 종속
  • a: 주 개체(dominant entity)  b: 종속 개체(subordinate entity)

 

E-R 모델

  • 개체 – 관계 모델(Entity-Relationship model): 개념적 데이타 모델(conceptual data model)
  • 현실 세계의 개념적 표현
  • 개체 타입(집합)과 관계 타입(집합)을 기본 개념으로 현실 세계를 개념적으로 표현하는 방법
  • 개체 집합(entity set): 한 개체 타입에 속하는 모든 개체 인스턴스(entity instance)
  • 관계 집합(relationship set): 한 관계 타입에 속하는 모든 관계 인스턴스(relationship instance)

 

특징
  • 다 대 다(m : n) 관계 표현
  • 다원 관계(n-ary relationship) 표현: 두개 이상의 개체 타입이 하나의 관계에 관련 가능
  • 다중 관계(multiple relationship) 표현: 두 개체 타입 사이에 둘 이상의 관계가 존재 가능
  • 관계 타입도 속성(attribute)을 가질 수 있음

키 애트리뷰트

  • 한 개체 집합 내에서 각 개체마다 상이한 값을 갖는 애트리뷰트나 애트리뷰트 집합
  • (key)

        -> 개체 타입 내의 모든 개체 인스턴스들을 유일하게 식별

        -> 동일한 키 값을 갖는 두 개의 개체 인스턴스는 없음( 유일성)
  • E-R 다이어그램 상에서 밑줄로 표시

약한 개체 타입

  • 자기자신의 애트리뷰트만으로는 키를 명세할 수 없는 개체 타입   <-> 강한 개체 타입(strong entity type)
  • 주 개체(dominant entity) – 강한 개체 타입,
  • 종속 개체 (subordinate entity) – 약한 개체 타입
  • 구별자(discriminator) : 강한 개체와 연관된 약한 개체 집합 내에서만 이들을 서로 구별할 수 있는 애트리뷰트 = 부분 키(partial key) -> 이것은 밑줄이 아니라 점선으로 표시한다. (ex) 사원-부양가족 관계에서 부양가족의 이름
  • 식별 관계 타입(identifying relationship type) : 약한 개체를 강한 개체에 연관시켜 개체를 유일하게 식별하게 하는 관계
  • 전체 참여 개체는 정말 특수한 것 빼고는 그냥 그리지 x

약한 개체의 예시임. 대출은 주개체인 강한 개체이고, 상환은 그에 종속되는 종속 개체인 약한 개체 -> 관계도 식별 관계 타입으로 그려주고, 대출이란 개체를 구분해주는 키는 대출번호이므로 밑줄 그었고, 그에 따른 약한 개체 상환을 구분해주는 부분 키는 상환번호이므로 점선을 그음. 약한개체와 강한 개체에서 약한 개체는 모두 참여해야 되므로 전체 참여로 선을 그었음

논리적 데이터 모델

  • 개념적 구조(E_R 다이어그램)를 데이타베이스(물리적 구조)로 구현하기 위한 중간 단계로 논리적 개념인 레코드(개체) 타입과 관계로 표현
  • 종류로는 대표적으로 관계 데이타 모델, 네트워크 데이타 모델, 계층 데이타 모델이 있는데 "관계"를 나타내는 방법에서 차이가 난다
  • 관계 데이타 모델은 관계를 테이블 형태의 릴레이션으로, 네트워크 데이타 모델은 네트워크 형태로, 계층 데이타 모델은 트리 형태로 !!

*  개념적 데이타 모델(conceptual data model) ??

  • 개체-관계 데이타 모델(E-R 다이어그램)
  • 현실 세계를 추상적 개념인 개체 타입과 관계 타입으로 표현

논리적 데이타 모델의 종류

  • 네트워크 데이타 모델 (network data model)
  • 계층 데이타 모델 (hierarchical data model)
  • 관계 데이타 모델 (relational data model)
  • 객체지향 데이타 모델 (object-oriented data model) : 객체 데이타 모델(object data Model)
  • 객체-관계 데이타 모델 (object-relational data model) : 확장 관계 데이타 모델(extended relational data model)

관계 데이타 모델

데이타베이스
  • 릴레이션(relation)-테이블(table) 의 집합
  • 개체 릴레이션, 관계 릴레이션 : 개체와 관계 모두 테이블로 표현한다
릴레이션 스키마(relation schema)
  • 개체와 관계성을 모두  릴레이션(테이블)으로 정의
  • 테이블 명과 애트리뷰트 명만을 포함하는 테이블임(겉표지)
  • 릴레이션 인스턴스는 실제 이 테이블에 들어가는 튜플들의 모음

데이타 구조도

  • 논리적 모델인 네트워크 데이타 모델과 계층 데이타 모델을 표현하기 위한 개념적 모델임
  • 논리적 모델 중 관계 데이타 모델은 테이블로 표현했었잖아~~

자료구조도: 레코드 타입 간의 관계를 도형으로 설명 / e-r 다이어그램과 유사하게 논리적 모델인 네트워크와 계층 데이타 모델을 표현하기 위한 개념적 구조도임

구성 요소

  • 사각형 노드 : 레코드 타입 (개체 타입)
  • 링크(link; arc, ) : 레코드 타입 간의 일대다 (1:n) 관계
  • 레이블 : 관계 이름

스키마 다이어그램

  • 데이타베이스 스키마를 데이타 구조도로 표현

- 스키마의 도형적 표현

  • (tree) 형태 :   계층 데이타 모델
  • 그래프(graph) 형태 : 네트워크 데이타 모델

네트워크 데이타 모델

  • 데이타베이스의 논리적 구조를 표현한 데이타 구조도 형태가 네트워크(그래프)
  • 스키마 다이어그램이 network(그래프)
  • 허용되는 레코드 타입, 관계성을 명세
  • owner-member관계
  • 두 레코드 타입간의 1:n 관계(→)

계층 데이타 모델

  • 데이타 베이스의 논리적 구조를 표현한 데이타 구조도가 트리 형태
  • no cycle
  • 루트 레코드, 자식 레코드, 레벨
  • 자식-부모(parent-child)관계
    1:n 관계의 두 레코드 타입

실습

  • 개념적 모델링: 현실 개체와 관계 -> E-R 다이어그램으로 표현
  • 논리적 모델링: E-R 다이어그램 -> 관계 데이타 모델
  • 물리적 모델링: 관계 데이타 모델 -> livesql로 실제 DB 내부의 테이블 생성

 

퀴즈(pdf)

  • 개념적 설계는 DBMS와 독립적이지만, 논리적 설계는 DBMS와 연관이 있는 것으로 볼 수 있습니다.

① 개념적 설계 단계 – 목표 DBMS에 독립적인 개념적 스키마 설계

② 논리적 설계 단계 - 목표 DBMS가 처리할 수 있는 논리적 스키마 설계

③ 물리적 설계 단계 - 목표 DBMS에 적합한 물리적 스키마 설계

④ 구현 단계 – 목표 DBMS에서 SQL 문을 실행하여 데이터베이스 생성

  • 구현 단계 : 데이터베이스 설계 단계 중 DDL로 스키마를 작성하고 목표 DBMS에서 실행하여 데이터베이스를 생성하는 단계
  • 요구 사항 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계 → 구현

~~ 제시하고 e-r 다이어그램으로 바꾸시오(개념적 모델링)

e-r 다이어그램을 릴레이션 스키마로 바꾸시오(논리적 모델링)

• 한빛 항공사에 회원으로 가입하려면 회원아이디, 비밀번호, 성명, 신용카드 정보를 입력해야 한다. • 회원의 신용카드 정보는 여러 개를 저장할 수 있는데, 세부적으로는 신용카드번호, 유효기간을 저장할 있다. • 한빛 항공사에서는 보유한 비행기에 대해 비행기번호, 출발날짜, 출발시간 정보를 저장하고 있다

• 한빛 항공사에서는 좌석에 대해 좌석번호, 등급 정보를 저장하고 있다. • 회원은 좌석을 예약하는데, 회원 한 명은 좌석을 하나만 예약할 수 있고, 한 좌석은 회원 한 명만 예 약할 수 있다. • 비행기에는 좌석이 존재하는데, 비행기 하나에는 좌석이 여러 개 존재할 수 있고 한 좌석은 반드시 하 나의 비행기에만 존재해야 한다. 그리고 좌석은 비행기가 없으면 의미가 없다.