본문 바로가기

카테고리 없음

데이터베이스 3

데이터 모델의 개요

 

정보화 시스템 구축

- 현실 세계에서 일어나는 가선들을 전산화하기 위한 것

- 정보화 시스템 과정에서 구축된 DB 는 현실 게셰의 늑정 부분을 반영

- 너무 복잡하기 때문에 현실 세계를 그대로 반영하지는 못함

- 현실 세계를 개념화, 단순화하여 가시적으로 표현

 

[ 데이터 모델링(Data Modeling) ]

 

- 현실 세계의 업무적인 프로세서를 물리적으로 DB화 하기 위한 과정( 복잡한 현실 세계를 최대한 단순화)

- 실체와 관계를 줄심으로 처계적으로 표현하고 문서화하는 기법

- 정보 시스템의 중심을 데이터의 관점에서 접근하는 데이터 중심의 분석 방법

- 어떤 데이터가 존재하며 업무에서 필요로 하는 정보가 무엇인지를 분석하는 과정

- DBA 나 모델러 등의 모델링을 전적으로 하는 사람과 프로젝트에 참여한 모든 사람들은 데이터 모델링에 참여하거나 모델링을 숙지하고 이해할 필요가 있음

 

 

- 모델링은 전문으로 하는 DBA, 애플리케이션 개발자, 프로젝트에 참여한 모든 참여자, 기업이나 공공기관의 업무 정보화를 담당하는 사람들도 모델링에 대한 개념과 그에 따른 세부적인 내용에 대한 것을 어느 정도 알고 있어야 함

- 프로젝트 수행 중 의사소통을 원활하게 하면 시스템을 잘못 구축하는 리스크를 줄일 수 있음

- 데이터 모델은 현실 세계를 DB 로 구축하기 위한 중간 과정이며, DB 설계 과정에서 현실 세계 정보를 컴퓨터에 표현하기 위해서 단순화시키고 추상화하여 체계적으로 데이터의 구조를 표현하기 위해 사용되는 도구로써 보통 그래픽으로 구현됨

- 컴퓨터 상의 DB 를 추상화시킨 개념이기 때문에 이해하기 쉽게 할 뿐 아니라, 사용자들이 서로들 간에 의사소통을 원할하게 해줄 수 있는 도움의 역할을 제공

 

 

 

 

데이터 모델링의 주요 목적

- 업무 정보를 구성하는데 기초가 되는 정보를 일정한 표기법으로 표현함으로써 정보시스템 구축 대상이 되는 업무 내용을 정확하게 분석하는 것

- 분석된 모델을 가지고 실제 DB 를 갱성하여 개발 및 데이터 관리에 사용하기 위한 것

- 조직의 정보 요구에 대한 이해를 제공하고, 새로운 시스템이나 개선 시스템 개발에 기초를 제공하고 조직 내의 구성원간의 의사소통의 수단이 될 수 있음

 

 

데이터 모델의 구성 요소

 

D = <S, O, C>

구조 S : Structure

연산 O : Operation

제약조건 C : Constraint

 

[ 구조 ]

  • 데이터 정적 성질(static properties)로서 DB 에서 표현될 대상으로써의 엔티티 타입과 이들 간의 관계를 명세한 것

[ 연산 ]

  • 데이터의 동적 성질(dynamic properties)로서 연산은 엔티티 인스턴스에 적용 가능한 연산에 대한 명세
  • 엔티티 인스턴스를 처리하는 작업에 대한 명세 또는 조작 기법

[제약 조건]

  • DB 에 저장하는 데이터가 무결(데이터가 결점없이 정확하고 유효)하도록 하기 위해서 사용
  • 무결한 데이터가 저장될 수 있도록 데이터를 조작하는데 있어 한계를 지정하는 것

 

Entity(개체), Relation(관계), Attribute(속성)

- 데이터 모델링을 하기 위해선 엔티티, 관계, 속성에 대한 이해가 필요

- Entity : 업무가 관여하는 어떤 것

- Relation : 업무가 관여하는 어떤 것 간의 관계

- Attribute : 어떤 것이 가지는 성격

 

ex) A 는 키가 186 이고, 성격이 까칠함, B 는 키가 163 이고 세심하고 활달한 성격이며 둘은 친구이다.

개념 예시에서 해당하는 내용 관계형 모델링
어떤 것 A, B Entity
어떤 것의 관계 친구 Relation
어떤 것의 성격 A: 186, 까칠 | B: 163 세심/활달 Attribute

 

 

[ 엔티티(Entity) ]

- DB 에 자료로 표현하려는 것

- 사람이 생각하는 개념이나 정보단위 같은 현실 세계의 대상체

- 유형, 무형의 정보

- 서로 연관된 몇 개의 속성으로 구성

- 파일 시스템의 레코드에 대응하는 것으로 어떤 정보를 제공하는 역할을 수행

- 독립적으로 존재하거나 그 자체로써 구별이 가능

 

ex) 부서 엔티티, 사원 엔티티

 

[ 속성(Attribute) ]

- 데이터의 가장 작은 논리적 단위

- 하나의 엔티티는 한 개 이상의 속성으루 구성

- 각 속성은 엔티티의 특성, 상태 등을 기술

- 파일 구조상의 데이터의 항목 또는 필드에 해당

- 엔티티를 구성하는 항목이 될 수 있음

 

ex)

부서 엔티티 : 부서번호, 부서명, 위치

사원 엔티티 : 사원번호, 이름, 주소, 소속부서

 

[ 관계(Relation ship) ]

- 엔티티와 엔티티 or 엔티티와 속성 간의 연관성을 뜻함

- 일반적으로 동사형으로 표현

 

ex) 사원이 부서에 소속되어 있다.

 

 

개념적 데이터 모델 | 논리적 데이터 모델

 

 

[ 개념적 데이터 모델 ]

  • 현실 세계에 존재하는 데이터를 의미있는 엔티티와 엔티티 내의 공통된 속성과 엔티티들 사이의 관계를 정의하는 추상화 과정
  • 현실 세계를 추상화하여 개념적으로 표현하여 이해하기 쉽게 할 뿐 아니라 의사소통을 원활하게 해주는 과정을 의미
  • 정보 모델링이라고도 함(정보 모델링의 결과적 표현 == 개념적 데이터 모델)
  • 개체 관계 모델(E-R Model: Entity-Relationship Model)
    • 1976년 Peter Chen 에 의해 제안된 개체 관계 모델
    • 기술된 엔티티 타입과 이 엔티티 타입들 간의 관계를 이용하여 현실 세계를 표현하는 가장 대표적인 개념적 데이터 모델
    • 개체-관계 다이어그램(E-R Diagram) 
      • 개체 관계 모델을 통해서 도출된 산출물
      • 엔티티와 이들 간의 관계를 알기 쉽게 미리 약속된 도형을 사용하여 일목요연하게 표현

 

 

[ 개념적 데이터 모델링 ]

  • 현실 세계에 존재하는 엔티티를 인간이 이해할 수 있는 정보구조(Information Structure)로 표현하는 과정
  • 정보 모델링이라고도 함(정보 모델링의 과정적 표현 == 개념적 데이터 모델링)

 

[ 논리적 데이터 모델 ]

  • 개념적 데이터 모델은 DBMS 가 직접 이해할 수 없기 때문에 논리적 데이터 모델로의 변환이 필요
  • 데이터 모델링이라고도 함
  • 관계 데이터 모델, 계층 데이터 모델, 네트워크 데이터 모델 등이 있음

 


엔티티 | 엔티티 타입 | 속성 | 관계 타입

 

[ 엔티티 ]

  • 엔티티 타입을 구성하는 원소
  • 엔티티 인스턴스라고도 함

[ 엔티티 타입 ]

  • 정보가 저장될 수 있는 사람, 장소, 사물, 사건 등과 같이 독립적으로 존재하면서 고유하게 식별이 가능한 실세계의 엔티티
  • '사원'처럼 실체가 있는 것도 있지만 생각이나 개념과 같이 추상적인 것도 해당
  • 동일한 속성들을 가진 엔티티들의 틀
  • 엔티티들이 가지고 있는 속성 중 공통적으로 존재하고 있는 한 속성으로 선정된다.
  • 엔티티들은 엔티티 타입으로 분류데이터 모델의 개요

[ 엔티티 집합 ]

  • 선정된 엔티티 타입을 기준으로 동일한 엔티티 타입을 가진 엔티티들의 모임
  • 엔티티 타입에 대한 엔티티 인스턴스의 집합이라고도 설명
  • 각 엔티티 속성(attribute)으로 알려진 특성들로 정의되며, E-R 다이어그앰에서 엔티티 타입은 직사각형을 표시

 

 

 

[ 속성 ] 

  • 정보의 요소로써 관리되는 항목으로 엔티티의 성질, 분류, 수량, 상태, 특성 등을 구체적으로 나타내는 세부 항목

 

 

[ 속성 값 ]

  • 속성의 값들은 엔티티의 특성이나 상태가 현실화된 값

 

 

 

엔티티와 속성

  • ERD 에서 속성은 엔티티 집합을 나타내는 직사각형에 실선으로 연결된 타원형을 표현

 

 

속성의 유형

  • 단순 속성과 복합 속성
    • 단순 속성(simple attribute)
      • 더 이상 작은 구성원소로 분해할 수 없는 속성
      • 대부분의 엔티티가 갖는 속성들은 단순 속성으로 도출됨
    • 복합 속성(composite attrribute)
      • 몇 개의 기본적인 단순 속성으로 분해할 수 있는 속성
  • 단일 값 속성과 다중 값 속성
    • 단일 값 속성(single-valued attribute)
      • 각 엔티티에 대한 하나의 값만 갖는 것
      • 반드시 하나의 값만 가짐
    • 다중 값 속성(multi-valued attribute)
      • 한 엔티티에 대해서 여러 개의 값을 갖는 것
  • 유도 속성과 저장 속성
    • 유도 속성(dirvied attribute)
      • 속성의 값이 다른 속성이나 엔티티가 가지고 있는 값으로부터 유도되어 결정되는 경우
    • 저장 속성(stored attribute)
      • 유도 속성을 생성하는데 사용된 속성
      • ERD 에서 점선으로 표현
  • 널 속성
    • 널 속성(null attribute)
      • 널 값(null value)을 갖는 속성
      • 어느 특정 속성에 대한 값을 가지고 있지 않을 때 이를 명시적으로 표시하기 위해 사용
      • 특정 속성 값이 해당 엔티티에 해당하지 않는경우
      • 속성 값을 알 수 없는 경우
      • 값이 존재하지만 값이 누락된 경우
      • 값의 존재 여부를 알 수 없는 경우
남자 단일 값 속성 단순 속성
주민등록번호 단일 값 속성 복합 속성
이메일 다중 값 속성 복합 속성
지문 다중 값 속성 단순 속성

 

 

 

 

[ 관계 타입 ]

  • 엔티티 사이의 관계
  • E-R 모델에서 엔티티 사이의 연관성을 표현하는 개념
  • 두 개의 엔티티 타입 사이에 업무적인 연관성을 논리적으로 표현한 것
  • 이러한 관계를 정의할 때 동사구로 관계를 정의
  • 엔티티 집합(타입) 사이에 대응(correspondence), 즉 사상(mapping)되는 의미를 뜻 함

 

 

[ 관계 집합 ]

  • 한 관계 타입에 속하는 모든 관계 인스턴스(relationship instance)를 뜻함
  • ERD 에서 엔티티들 사이의 관계 타입은 마름모를 사용하여 표현한 후 그 관계에 연관된 엔티티에 선으로 연결하여 표시

 

 

 

관계의 유형

  • 관계에 참여하는 하나의 엔티티에 대해 다른 엔티티가 몇 개 참여하는지를 나타내는 것
  • 카디널리티(cardinality: 관계의 대응 엔티티 수) 라고도 함
    • 하나의  관계에 실제로 참여할 수 있는 인스턴스의 수를 의미
    • 두 개의 엔티티가 서로에게 관계되는 정도를 나타냄
    • 표현 방법
      • 일 대 일 (1 : 1)
      • 일 대 다 (1 : N)
      • 다 대 다 (N : M)

 

 

카디널리티 비율의 최소값과 최대값

  • 비율에 최소값과 최대값을 표시하여 관계의 유형을 좀 더 명확하게 나타낼 수 있음
  • ERD 에서 최소값과 최대값 관계 타입과 엔티티 타입을 연결하는 실선 위에 min/max 형태로 표기


엔티티의 키 | 강 엔티티 | 약 엔티티

 

엔티티의 키

 

[ 키(key) 속성 ]

  • 간단히 '키' 라고 함
  • 엔티티 인스턴스를 유일하게 식별하는 데 사용
  • 엔티티 속성 중에서 엔티티를 다른 엔티티와 구별할 수 있는 속성
  • ERD 에서 언더바를 통해 표현
  • 키가 필요한 예시
    • 회사에서 동명이인인 한 사람의 주소가 필요할 때, 이름으론 구분할 순 없지만 사원번호를 기준으로써 구분 할 수가 있는데, 이 때 사원 번호를 키로써 활용할 수 있음

 

 

[ 강한 엔티티 타입 ]

  • 엔티티 타입 내에서 자신의 키를 사용하여 고유하게 엔티티들을 식별할 수 있는 엔티티 타입
  • 독립 엔티티, 부모 엔티티, 정규 엔티티 타입이라고도 함
  • 독자적으로 존재

[ 약한 엔티티 타입 ]

  • 키를 형성하기엔 충분한 속성들을 갖지 못한 것
  • 자기 자신의 속성만으로는 키를 명세할 수 없는 엔티티(기본키로 설정할 수 있는 속성이 없음)
  • 종속 엔티티, 자식 엔티티라고도 함
  • 소유 엔티티 타입이 있어야 존재
  • 소유 엔티티 타입을 식별 엔티티 타입(identifying entity type)이라고도 부름
  • 강한 엔티티 타입의 기본키에서 파생된 엔티티로, 강한 엔티티 타입 없이는 존재할 수가 없음

[ 구별자 ]

  • 강한 엔티티 타입의 기본 키와 함께 약한 엔티티를 고유하게 식별할 수 있도록 해주는 속성입니다.

[ 부분 키(partial key) ]

  • 구별자는 강한 엔티티와 연관된 약한 엔티티 집합 내에서만 서로 구별할 수 있음
  • 약한 엔티티에서만 사용되며, 해당 엔티티 내에서 고유하게 식별될 수 있는 속성
  • 강한 엔티티의 기본 키 없이는 고유성을 가지지 못함(약한 엔티티 내부에서 고유성을 보장하는 속성이지만 강한 엔티티의 기본 키와 함께 사용해야 완전한 기본 키가 됨)
  • ERD 에서 점선 언더바로 표현
  • 식별 관계 타입은 이중 마름모로 표현

 

 

 

  • 전체 참여(Total Participation): 약한 엔티티가 강한 엔티티에 완전히 의존하는 경우. (예: 부양가족-사원 관계)
    • 이중 링크로 표현됨.
  • 부분 참여(Partial Participation): 약한 엔티티가 강한 엔티티에 일부만 의존하는 경우. (예: 학생-클럽 관계)
    • 단일 링크로 표현됨.

 

 

[ is a 관계 ]

  • 상위 엔티티와 하위 엔티티간의 관계
  • 같은 속성을 갖는 여러 엔티티들을 하나의 상위 엔티티로 결합할 수 있고, 특정 엔티티는 서로 구별되는 하위 엔티티들로 나누어질 수 있음
  • 하위 엔티티가 상위 엔티티의 속성과 특성을 물려받는 구조