< 데이터 모델링 ( 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차원 테이블 형태임