CS/데이터베이스

[ 데이터베이스 ] (4) 데이터 모델링

dltjdn 2022. 2. 28. 17:21

< 데이터 모델링 ( data modeling ) >

현실에 존재하는 데이터컴퓨터의 데이터 베이스로 옮기는 과정

핵심은 추상화 ( 꼭 필요하고 중요하다고 생각하는 것을 추출해 내는 작업 )!!

 

1. 개념적 데이터 모델링 ( concepture modeling ) = 설계

현실 세계의 중요 데이터 → 개념 세계로 옮겨 개념적 구조 (E-R) 만듦

 

2. 논리적 데이터 모델링 ( logical modeling ) = 변환 ( 기계적으로 이루어짐 )

개념 세계의 데이터 → 데이터 베이스에 저장하는 구조( 스키마 ) 로 표현

 

 

<데이터 모델 ( data model ) > 

데이터 모델링의 결과물을 표현하는 도구

 

개념적 데이터 모델

현실 세계를 개념적 모델링 → 데이터베이스의 개념적 구조로 표현하는 도구

ex ) 개체 - 관계 ( E-R ) 모델

 

논리적 데이터 모델

데이터베이스의 개념적 구조를 논리적 모델링 → 데이터베이스의 논리적 구조로 표현하는 도구

ex ) 관계 데이터 모델

 

 

< 개체 - 관계 (E-R) 모델 >

개체 - 관계 모델( E - R model, Entity-Relationship model )

개체와 개체 간의 관계를 이용해 현실 세계를 개념적 구조로 표현

핵심 요소 : 개체, 속성, 관계

 

개체 - 관계 다이어그램 ( E - R diagram )

개체 - 관계 모델을 이용해 현실 세계를 개념적으로 모델링한 결과물을 그림으로 표현한 것 

 

개체 ( Entity )

중요 데이터를 가지고 있고 다른 것과 구별되는 사람, 사물, 개념 , 사건 등  ex ) 서점에 필요한 개체 : 고객, 책

ER 다이어그램에서 사각형으로 표현

개체 타입 ( Entity Type )

  • 개체를 고유의 이름과 속성들로 정의한 것

개체 인스턴스 ( Entity Instance )

  • 개체를 구성하는 속성이 실제 값을 가짐으로써 실체화된 객체

개체 집합 ( Entity Set )

  • 특정 개체 타입에 대한 개체 인스턴스들을 모아놓은 것

 

 

속성 ( Attribute )

개체관계가 가지고 있는 고유의 특성

ER 다이어그램에서 타원으로 표현

 

속성의 분류 (1) - 속성 값의 개수

단일 값 속성( single-valued attribute ) 

  • 값을 하나만 가질 수 있는 속성 ex) 고객 개체의 아이디 

다중 값 속성 ( multi-valued attribute )

  • 값을 여러 개 가질 수 있는 속성 ex) 고객 개체의 연락처 속성
  • E-R 다이어 그램에서 이중타원으로 표현

 

속성의 분류 (2)  - 의미 분해 가능성

단순 속성 ( simple attribute )

  •  의미를 더는 분해할 수 없는 속성 ex) 고객 개체의 아이디, 책 개체의 이름 및 가격

복합 속성 ( composite attribue ) 

  • 의미를 분해할 수 있는 속성
  • ex) 고객 개체의 주소 속성 → 도, 시, 동, 우편번호 등으로 의미를 세분화 할 수 있다
  • ex) 고객 개체의 생년월일 속성 연, 월, 일 로 의미를 세분화할 수 있다

 

속성의 분류 (3) - 기존 속성 값에서 유도

유도 속성 ( derived attribute ) 

  • 다른 속성 값에서 유도돼 결정되는 속성
  • 값이 별도로 지정되지 않음
  • ex) 책 개체의 판매가격 속성 : 책 개체의 가격, 할인률 속성으로 계산됨
  • ex) 고객 개체의 나이 속성 : 고객 개체의 출생연도 속성으로 계산됨
  • E - R 다이어그램에서 점선 타원으로 표현

 

※ 속성의 분류는 상식이 아니라 응용 프로그램의 필요에 의해서 결정된다

응용개체에서 속성을 어떻게 쓰냐에 따라 달려있다 

예를 들어 복합 속성 예시로 든 주소, 생년월일 역시 응용 프로그램에 따라 단순 속성일 수도 있다

 

그 밖의 속성

널 속성 ( null attribute ) 

  • 널 값이 허용되는 속성

널 값 ( null )

  • 속성 값이 그 개체에 해당되지 않는 ( NA, Not Application ) 경우  ex) 병역(여학생)
  • 속성 값을 알 수 없는 ( unknown ) 경우 
  • ex) 그 값이 존재하지만 누락(missing)인 경우 → 이름 / 그 값의 존재 여부 모르는(not known) 경우 → 취미

키 속성 ( key attribute ) 

  • 개체 인스턴스를 식별하는데 사용되는 속성
  • 둘 이상의 속성들로 구성되기도
  • E-R 다이어그램에서 밑줄로 표현

 

 

관계 ( relationship ) 

개체 집합들 사이의 대응 관계 (mapping) 를 의미

ex) 고객 개체와 책 개체 간의 구매 관계 → 고객은 책을 구매함

관계도 속성 가진다

E-R 다이어그램에서 마름모로 표현

 

관계의 유형 (1) - 일대일 ( 1 : 1 ) 관계

  • 개체 A의 각 개체 인스턴스가 개체 B의 개체 인스턴스 하나와 관계를 맺을 수 있다
  • 개체 B의 각 개체 인스턴스도 개체 A의 개체 인스턴스 하나와 관계를 맺을 수 있다

관계의 유형 (2) - 일대다 ( 1 : n ) 관계

  • 개체 A의 각 개체 인스턴스가 개체 B의 개체 인스턴스 여러개와 관계를 맺을 수 있다
  • But 개체 B의 각 개체 인스턴스는 개체 A의 개체 인스턴스 하나와 관계를 맺을 수 있다

관계의 유형 (3) - 다대다 ( n : m ) 관계

  • 개체 A의 각 개체 인스턴스가 개체 B의 개체 인스턴스 여러개와 관계를 맺을 수 있다
  • 개체 B의 각 개체 인스턴스도 개체 A의 개체 인스턴스 여러개와 관계를 맺을 수 있다

 

관계의 참여 특성

필수적 참여 ( 전체 참여 ) → 굉장히 조건 까다로움!

  • 모든 개체 인스턴스가 관계에 반드시 참여해야 되는 것 의미  ex) 교수 - 학과
  • E-R 다이어그램에서 이중선으로 표현

선택적 참여 ( 부분 참여 )

  • 개체 인스턴스 중 일부만 관계에 참여해도 되는 것 의미  ex ) 학생 - 과목 ( 휴학 등 허용 )

 

 

관계의 종속성

약한 개체 ( week entity ) 

다른 개체의 존재 여부에 의존적인 개체

자기 자신의 속성으로만 키를 명세할 수 없는 개체 타입

부분 키 ( partial key) : 약한 개체집합 내에서 서로 구별할 수 있는 속성

 

강한 개체 ( strong entity ) 

다른 개체의 존재 여부를 결정하는 개체

 

》 강한 개체와 약한 개체는 일반적으로 일대다(1:n)의 관계

》 약한 개체는 강한 개체와의 관계에 필수적으로 참여함 ( 전체 참여 )

》 약한 개체는 강한 개체의 키를 포함해 키를 구성

》 E - R 다이어그램에서 약한 개체는 이중 사각형으로 표현, 약한 개체가 강한 개체와 맺는 관계는 이중 마름모로 표현

 

 

관계 인스턴스들이 유지해야 할 제약조건 

삽입, 삭제, 변경 등 연산 시 제약조건 검토해야함

  • 개체 집합 간 매핑 카디널리티

매핑 카디널리티 ( mapping cardinality ) 란?

두 개체 집합이 관계를 맺을 때, 각 개체 인스턴스가 연관성을 맺고 있는 상대 개체 집합 인스턴스 개수

매핑 카디널리티 기준으로 일대일 관계, 일대다관계, 다대다 관계로 나뉜다

  • 전체 참여
  • 관계의 종속성

 

 

< 논리적 데이터 모델 > 

E-R 다이어그램으로 표현된 개념적 구조데이터베이스에 저장할 형태로 표현한 논리적구조 (스키마)

사용자가 생각하는 데이터베이스의 구조!

 

관계 데이터 모델

  • 일반적으로 사용되는 논리적 데이터 모델
  • 데이터 베이스의 논리적 구조가 2차원 테이블 형태임