데이타베이스 시스템 연구실 Database Systems Lab.
2. 데이터 모델에 의한 정보 표현
이 장의 주요 내용
요구 사항의 발견과 명세
ER 모델을 위한 주요 개념들
개체 (Entities)
애트리뷰트 (Attributes) 관계성(Relationships)
ER 다이어그램을 이용한 BigHit Video 대여 사업에 관한 데이터 모
델링
데이타베이스 설계의 단계
실세계
데 이 타 베 이 스 요 구 사 항 들 요
구 사 항들 의 수 집 과 분석
개 념 적 설 계
논 리 적 설 계
(
데 이 터 모 델 사상)
물 리 적 설 계 개
념 스 키 마
(E-R
다 이 어 그 램 으 로 표 현 됨)
논 리 적( 개 념) 스 키 마
(
특 정DBMS
의 데 이 터 모 델 로 표 현 됨)
내 부 스 키 마
(
같 은DBMS
에 대 한)
기 능 적 분 석
응용 프 로 그램 설 계
트랜 잭 션 구 현
응 용 프 로 그 램 들 기
능 적 요 구 사 항 들
고 수 준 의 트 랜 잭 션 명 세
요구사항의 발견과 명세
정보 시스템 개발의 1단계 발견(discovery)
사용자의 요구사항들을 결정하는 과정
응용에 대한 요구사항 발견 과정
프로그램이 필요한 조직의 구성원과 면담 문서를 모으고 컴퓨터 시스템을 분석
문서 예) BigHit Video에서 고객 등록 신청서, 대여 영수증, 직원 근무 일지, 가게 운영 시간표, 비디오 구매 주문 등
최종 시스템에 포함되어야 할 객체와 동작을 기술
사용자들이 사용하는 어휘 결정하여 데이터 모델에 이러한 전문 용어를 적용
사용자와 개발자 사이의 의사 소통을 쉽게 해줌
개념적 데이터 모델
데이터 모델
정보들의 구조를 기술하기 위해 사용되는 도구 데이타베이스의 정보 내용을 명세화
개념적 데이타 모델
많은 사람들이 데이터를 인식하는 방식에 대한 개념을 제공 데이타베이스의 초기 명세서로 사용
예) 개체-관계 모델(entity-relationship model)
개념적 스키마 (Conceptual schema)
개념적 데이터 모델을 이용하여 모델링 한 정보의 구조와 의미 사용자와 정보 시스템 설계자들 사이의 의사 소통 수단을 제공
사용자 : 어떤 정보가 시스템에 저장될지 이해할 수 있음
개발자 : 실제 시스템을 구축하는데 어떤 작업이 필요한지를 이해할 수 있음
개체-관계 모델링
E-R model : Entity-Relationship model
데이터를 개체, 애트리뷰트, 관계성으로 기술하는 고수준의 개념적 데이터 모델
응용 시스템의 데이터 요구사항 명세
데이터의 특성 명세에 초점
데이타베이스 스키마를 표현하는 ER 다이어그램을 가짐
ER 모델의 개념들 : 개체
개체 (Entity)
단독으로 존재하며 다른 것과 구분되는 객체 실제 세계에서의 어떠한 사물을 지칭
예1) 실제로 존재하는 객체 : 사람, 자동차, 집…
예 2) 개념적으로 존재하는 객체 : 회사, 직업, 대학의 강좌..
개체 클래스 (Entity Class)
유사한 개체들의 구조에 대한 정의
같은 애트리뷰트들을 가진 개체들의 집합 개체 타입(Entity type)이라고도 함
개체 클래스의 예
BigHit Video의 개체 클래스에 대한 이름과 설명
개체 클래스 설 명
Customer 비디오 가게 고객
Videotape 대여해 줄 비디오 테이프
Employee 하나 이상의 가게에서 일하는 직원 PayStatement 직원에게 지불한 임금에 대한 기록 TimeCard 가게에서 직원이 일한 시간 기록 Store BigHit 비디오의 체인점
Rental 고객이 특정 기간과 가격에 따라 비디오 테이프를 대여 PurchaseOrder 비디오테이프의 구매 요청
Supplier BigHit 비디오에 비디오테이프를 공급하는 곳
ER 모델의 개념들 : 애트리뷰트
각 개체 클래스는 특성을 나타내는 애트리뷰트를 가짐 애트리뷰트 (Attribute)
개체를 기술하는 속성
예) EMPLOYEE는 Name, SSN, Address, Sex, BirthDate 애트리뷰트들을 가짐
각 개체들은 그 구조를 정의한 개체 클래스의 애트리뷰트에 대한 값을 가짐
예) 한 개의 EMPLOYEE 개체는 Name=‘John Smith’, SSN=‘123456789’, Address=‘731, Fondren, Houston, TX’, Sex=‘M’, BirthDate=’09-JAN-55’
애트리뷰트 값 집합 (Attribute Domain)
각 개체에서 해당 애트리뷰트가 가질 수 있는 값들의 집합 기본적인 데이터 형을 이용해 명시
예) integer, string, boolean, float, enumerated type..
ER 모델의 개념들 : 애트리뷰트의 유형–1/2
단순 (simple) vs. 복합(composite)
단순 애트리뷰트
더 이상 나눌 수 없는 애트리뷰트
원자 애트리뷰트라고도 함
• 예) EMPLOYEE의 SSN 또는 Sex
복합 애트리뷰트
독립적인 의미를 가지는 애트리뷰트들의 집합으로 구성 address
street city state zipcode
street_number street_name apartment_number
ER 모델의 개념들 : 애트리뷰트의 유형–2/2
단일 값 (single-valued) vs. 다중 값 (multi-valued)
단일 값 애트리뷰트
대부분의 애트리뷰트는 특정한 개체에 대해 단일 값을 가짐
• 예) 사람의 Age
다중 값 애트리뷰트
한 개체에서 애트리뷰트가 여러 값을 가짐
• 예) Customer의 otherUsers 애트리뷰트, 학생의 College_degree
저장된 (stored) vs. 유도된 (derived) 애트리뷰트
유도된 애트리뷰트
다른 애트리뷰트나 개체가 가지고 있는 값으로부터 유도된 또는 계산되어 나온 애트리뷰트 값을 가짐
• 예) Person 개체의 Birthday 애트리뷰트로부터 유도된 age 애트리뷰트
• 예) Customer의 numberRentals 애트리뷰트 : 대여된 비디오의 숫자를 세는 것으로부 터 유도됨
애트리뷰트 예
BigHit Video의 애트리뷰트에 대한 이름과 설명
단일값 (single- valued)
다중값
(multi-valued)
복합
(composite) 애트리뷰트
애트리뷰트 타입 값의 도메인 설명
title string 제한없음 비디오테이프의 제목
lastName string 30 문자 사람의 성 firstName string 30 문자 사람의 이름
rating string 5 문자 영화의 평가 등급
ssn string 10 자리 숫자 사회 보장 번호
accountId number 4 바이트 정수 고객 번호 number
Rentals
number 4 바이트 정수 한 고객이 대여 횟수 otherUsers Set 30 문자로 된 문자열
집합
이 계정을 같이 사용하는 사람들의 이름
dateAcquired Date 월, 일, 년 비디오 테이프를 구한 날짜 address Compoiste 30 문자로 된 두 개
문자열,
2 문자로 된 하나의 문자열, 9 자리 숫자로 된 하나의 문자열
거리, 도시, 주, zip 코드로 구성된 주소
애트리뷰트에 대한 제약 조건
키 (Key) Not Null
애트리뷰트가 null값을 가지면 안된다는 제약 조건
Derived
선언된 애트리뷰트는 직접 저장된 것이 아니라, 다른 어떤 정보로부터
유도된 또는 계산되어 나온 값이라는 의미
키 애트리뷰트
한 클래스의 각 개체들은 그 키에 대하여 유일한 값을 가져야 함
예) Employees의 ssn, Department의 name
대부분의 개체 클래스들은 그 클래스의 키를 구성하는 애트리뷰트 를 하나 이상 가지고 있음
예) Customer의 키 : {lastName, firstName, address}로 구성
각 개체를 유일하게 식별하는데 사용
애트리뷰트가 Null일 경우의 의미
각 개체는 애트리뷰트에 대한 값을 가지지만, 그 값은 Null이 될 수 도 있음
Null값은 비어 있는 필드로 표현 Null 일 경우의 의미
적용되지 않음(not applicable) : 이 개체에는 애트리뷰트를 적용할 수 없으므 로 값을 가져서는 안된다
예) 결혼하지 않은 사람의 배우자 애트리뷰트
기록되지 않음(missing) : 애트리뷰트 값이 존재하지만 지정되지 않았다
예) 어떤 사람의 몸무게 애트리뷰트
알 수 없음(unknown) : 애트리뷰트 값이 없거나 혹은 적용할 수 없다
예) 전화번호 : 전화가 없거나 전화번호를 기록하지 않음
개체 클래스, 애트리뷰트, 제약조건의 예
클래스 애트리뷰트 제약조건이나 추가 설명
Customer accountId key
lastName not null firstName
address otherUsers
numberRentals derived Videotape videotapeId key
title not null
genre PayStatement datePaid
hoursWorked amountPaid
Customer 클래스의 개체
개체는 개체 클래스의 인스턴스이며, 각 개체는 애트리뷰트 값으로
구분
Videotape 클래스의 개체
ER 모델의 개념들 : 관계성 – 1/2
각 개체는 다른 개체들과 관계성(relationship)를 가짐
예) 고객은 비디오를대여한다
.
관계성 타입 (relationship type)
개체 타입과 개체 타입간에 성립할 수 있는 관계를 총체적으로 정의한 것
예) A customer may rent a video tape
관계성 인스턴스
특정 개체가 다른 특정 개체와 실제적으로 관계를 가지는 것을 표현
예) Jane Block rents Annie Hall
ER 모델의 개념들 : 관계성 – 2/2
각 객체는 관계성에서 특정한 역할 (role) 을 수행
역할의 이름은 관계성 내의 특정 개체의 기능 표현
예) 관계성이 “결혼”이면, 한 사람의 역할은 “남편”, 다른 한 사람의 역할은 “아 내”
관계성은 종종 그들 자신만의 애트리뷰트를 가짐
예1) 결혼 관계성 타입은 weddingDate 애트리뷰트를 가짐
예2) Rents관계성 타입은 dateDue, dateRented, cost 애트리뷰트를 가짐
관계성에서 제약 조건
관계 타입은 대응되는 관계 집합에 참여하고 있는 개체들의 가능한 조합을 제한하는 제약 조건을 가짐
2진 관계성 제약 조건의 종류
카디널리티 비율 (cardinality ratio) 제약 조건 참여 (participation) 제약조건
카디널리티 비율과 참여 제약 조건들을 묶어 구조적 제약 조건 (structural constraint)라고 함 : (min, max)
2진 관계성 타입
두 개체 클래스를 연결
카디널리티 비율 제약 조건
한 개체가 얼마나 많은 다른 개체와 관련될 수 있는지, 그리고 역으로 관 련될 수 있는지에 대한 제약
관계성의 개수를 규정 관계성의 각 역할에 적용
카디널리티 비율 제약 조건의 타입들
일대일 (one-to-one) 각 역할에서 하나의 개체는 기껏해야 하나의 관계성을 가짐
최대 한 개의 관계된 객체를 가짐
일대다 (one-to-many)
하나의 역할을 담당하는 한 개체는 여러 관계성을 가지지만, 상편 역할을 담당 하는 개체는 기껏해야 한 개의 관계성을 가짐
다대일 (many-to-one)
일대다와 같지만 반대의 경우
다대다 (many-to-Many)
각 역할에서 하나의 개체는 여러 관계성을 가짐
카디널리티 비율 예제
101 123 145 90987 99787 Videotape (videotapeId) Rents
101 102 103 104 Customer (accountId)
101 123 145 90987 99787
Videotape (videotapeId) Previous lyRented
101 102 103 104
Cus tom er (accountId)
그림 2-2 일대다 관계성 타입 Rents를 통해 관 련된 개체들
그림 2-3 다대다 관계성 타입
PreviouslyRented를 통해 관련된 개체들
참여 제약 조건
한 개체의 존재가 관계성 타입을 통해 연관되어 있는 다른 개체에 의존하 는지의 여부를 명시
최소 카디널리티 제약 조건이라고도 함
참여 제약 조건의 유형
전체 참여 (total participation)
하나 또는 그 이상
예) 모든 Video는 반드시 LocatedIn에 의해서 한 Store와 연관되어야 함
부분 참여 (partial participation)
선택적 참여
예) Employee의 부분 집합은 managers를 통해 Store와 연관되어야 함
더 높은 차수의 관계성
회사는 다중 관계 또는 고차원 관계를 가질 수 있음 관계성 타입의 차수(degree)
관계성 타입의 한 인스턴스에 의해 연결된 개체 클래스의 개수 예) 삼원(ternary) 관계성
한 비디오 가게가 어떤 공급자를 통해 비디오테이프를 구입
상점
(storedId) 비디오
(videoId)
3 4 12 13
548 604
1145 3087 3723 PurchasedFrom
ER 다이어그램
ER 모델을 그래프 방식으로 표현한 것
개체 클래스 : 직사각형 ( ) 애트리뷰트 : 타원 ( )
관계성 : 다이아몬드와 선 ( , )
어떤 특정 인스턴스를 기술하지 않음 주요 예제
BigHit Video 대여 사업에 관한 데이터 모델링
ER 모델의 에러 발견과 수정을 통한 데이터 모델링 절차를 다룸
ER 다이어그램으로 표현한 예 – 1/2
Customer와 Videotape 클래스, Rents 관계성 타입
1
lastName firstName accountId
numberRentals balance
otherUsers
관계성 타입
개체 클래스 애트리
뷰트
키 애트 리뷰트
유도 애
트리뷰트 복합 애트
리뷰트 다중값 애
트리뷰트
카디널리 티 제약조
건 Customer
address
zipcode
state city
street
M Videotape Rents
dateRente d
cost dateDue
videotapeId title genre
date Acquired
length
rating
ER 다이어그램으로 표현한 예 – 2/2
데이터 사전(Data dictionary)
클래스와 타입들의 설명, 애트리뷰트들에 대한 제약 조건 명세
표 2.1, 표 2.2, 표 2.3 (TP 8page, TP12page, TP 16page)
ER 다이어그램에서 표현하지 않고 텍스트 형태로 저장
카디널리티 기호의 위치
기호의 의미를 잘 이해하기 위해 다이어그램을 읽어가며 문장을 생성
예) 일대다 관계성 타입의 경우
왼쪽 → 오른쪽
• 한 고객이 여러 개의 비디오테이프를 대여할 수 있다
오른쪽 → 왼쪽
• 한 비디오테이프는 한 고객에 의해서 대여될 수 있다
비디오 대여 모델링 예 :대여를 관계 타입으로
비디오 대여를 표현하는 방법
1. 대여를 관계 타입으로 모델링 2. 대여를 개체 클래스로 모델링
대여를 관계 타입으로 모델링
고객과 비디오의 관계는 고객이 비디오를 대여할 때 생성됨 비디오가 반납될 때, 이 관계는 제거됨
Customer Rents Video
dateDue
dateRented
cost
1 M
비디오 대여 모델링 예 :대여를 개체 클래스로 1/2
대여를 개체 클래스로 모델링
Has 관계 타입
관계 타입의 의미가 명확할 때 사용
본 모델링의 문제점
대여 개체가 가진 속성값만을 기반으로 대여 개체를 구별하지 못함
예) 고객은 동시에 두 개의 비디오를 대여할 수 있음(같은 대여 일자, 같은 비용, 같은 반납 일자)
해결 방법 : 각각이 관계되어 있는 비디오에 따라서 두 대여를 구별
Customer Has Rental
dateDue
dateRented
cost
1 Has Video
M 1 1
비디오 대여 모델링 예 : 대여를 개체 클래스로 2/2
약한 개체 클래스
자신의 키 애트리뷰트가 없는 개체 클래스
예) Rental 약한 개체 클래스
도형에서 이중선으로 되어 있음
식별 관계 타입
관계 타입 Has를 이중선으로 표현
대여는 비디오와의 관계에 의해 식별됨을 의미 항상 대-1임
Rental 개체의 키 : VideoId
Customer Has Rental
dateDue cost
1 Has Video
M 1 1
약한 개체 클래스
식별 관계 클래스 소유자 개체 클래스
관계성 타입에서 역할
역할은 두 개체 클래스가 하나 이상의 관계 타입과 연결되거나, 하 나의 관계 타입이 개체 클래스 자신과 연결된 상황에서 중요
한 사람은 1명 또는 2명의 부모의 자식일 수 있다.
한 사람은 0명 또는 그 이상의 자식의 부모일 수 있다.
한 사람은 남편의 처일 수 있다.
한 사람은 처의 남편일 수 있다.
그림 2-6 IsMarriedTo 와 IsChildOf 관계성 타입
Person
Is Child
Of M
1…2
parent child
ssn
Is Married
To
1
1 wife
husband
IsParentOf
대체 관계성 타입 이름 역할 이름
최소/최대 카디널리티 제약
ER 다이어그램에서 사용되는 기호
BigHit Video에 위한 ER 모델
M Videotape
Customer 1 1 1
Rental
1 1
Located In
Store 1
M
Employee
M M
M
1 1
M 1
1
M
M M
1 Suppli er
M 1
1
M PurchaseOrder Has
Or der s id
worker
manag er has
Has Has
TimeCard
PayStatement
Has
dateR ented
Has
Has Has
PreviousRental
Manag es WorksIn
대여의 과거 정보를 기록하기 – 1/2
BigHit이 사업에 관한 과거 정보를 기록하기를 원할 경우
가장 자주 대여되는 비디오는 무엇인가?
특정 고객이 대여하는 비디오 타입의 경향이 어떤 것인가?
⇒ 개체 클래스 PreviousRental : 과거의 고객과 비디오의 대여 사실을 기록
Customer Has PreviousRental
dateReturned
dateRented
cost
M Has Videotape
M 1 1
구별자(부분 키)
대여의 과거 정보를 기록하기 – 2/2
PreviousRental 약한 개체 클래스
관련된 비디오는 PreviousRental을 유일하게 식별하지 못함 구별자 (discriminator) 또는 부분 키
이전 대여를 식별하는 키에 다른 속성을 추가
점선 밑줄로 표현
PreviousRental 개체의 키 : {videoId, dateRented}
발생할 수 있는 문제점들
비디오는 같은 날 두 번 대여될 수 없음
해결 방법 : dateRented를 dataTimeRented로 변경
ER 도형에서는 비디오테이프가 반납된 후, Rental이 PreviousRental로 변환 을 표현할 수 없음
직원 역할과 카디널리티
TP 34 page에서
직원이 관리자나 종업원이 될 수 있음
직원은 하나 이상의 상점에서 종업원으로 일할 수 있음 직원은 오직 하나의 상점의 관리자만 될 수 있음
발생할 수 있는 문제점
사업상 한 사람이 하나 이상의 상점을 관리할 경우
상점 관리자가 해고되어 일정기간 동안 관리자가 없을 경우
Employee
WorksIn
Manages
Store
M M
1 1
worker
manager
직원 역할과 카디널리티 : 해결 방안
상점 관리자가 없거나, 직원이 하나 이상의 상점을 관리 할 수 있도록 Manages 관계 타입의 카디널리티를 변경
Employee
WorksIn
Manages
Store
M M
1 M
worker
manager
구매 주문
PurchaseOrder
비디오 공급자로부터 비디오를 주문하는 것을 나타냄 개체 클래스 PurchaseOrder 설계 방법들
구매 주문서는 단일 공급자와 적어도 하나의 비디오테이프를 가질 것을 요구 함
방법 1 : 약한 클래스로 정의
다른 개체들과 관계되지 않으면 존재할 수 없다
키 : date, supplierId, item들의 조합으로 구성
방법 2 : 강한 개체 클래스로 정의
인공적인 키인 id를 생성
더 간단한 방법임
Supplier Has PurchaseOrder Orders Videotape
id
1 M 1
<PurchaseOrder를 강한 개체로 정의할 때>
구매주문의 문제점 – 1/2
전형적인 구매 주문서의 내용
구매될 품목에 대한 목록
품목에 대한 식별 번호(카탈로그 번호)
수량
문제점
예) 비디오테이프 “Lady and the Tramp”를 25개 주문을 위해 이전 그림의 다 이어그램을 사용할 경우, 25개의 개체가 생성되는 것을 요구
하나의 비디오테이프에 대해 25개를 주문한 것이라기보다는 25개 비디오 품목 들에 대한 주문이 됨.
이전 ER 다이어그램의 Videotape 개체 클래스의 의미가 혼동되어 발생
구매주문의 문제점 해결 방법– 2/2
Movie 클래스 추가 : 한 종류의 비디오 작품을 표현 Videotape : 영화의 사본을 의미
PurchaseOrderDetail : 단일 영화의 몇 개 수량의 구매를 표현
movieId
Supplier
PurchaseOrder 1 quantity
M date
Id
title Movie
Orders M
1 Buys
From
PurchaseOrder Detail Has
M
1
unitCost lineNumber
Videotape Is
Copy Of
date Acquired
1 M
genre
videoId
직원, 근무시간 카드, 지불 명세서 -1/2
PayStatement 약한 개체 클래스
많은 직원들이 같은 날에 급료를 받기 때문에, 관련된 직원에 의해 식별 되지만, 그 직원에 대해 유일하지 않음
키 : {직원의 ssn, datePaid}
Employee TimeCard
endTime
Has Has Store
startTime
Has PayStatement
amount datePaid
1 M M 1
1
M
식별자
식별자
date
직원, 근무시간 카드, 지불 명세서 - 2/2
TimeCard 약한 개체 클래스
한 명의 직원이 한 상점에서 일한 날짜와 시작 시간, 끝나는 시간을 기록 키 : {직원의 ssn, date, startTime}
한 직원이 같은 날에 서로 다른 상점에서 일할 수 있기 때문