13. 객체 데이타베이스

32
© DBLAB, SNU 13. 13. 객객 객객객객객객 객객 객객객객객객

Upload: glenda

Post on 14-Jan-2016

79 views

Category:

Documents


5 download

DESCRIPTION

13. 객체 데이타베이스.  새로운 데이타베이스 응용. 전통적인 데이타베이스 응용들의 특성 통일성 레코드 중심 작은 데이타 아이템 원자 필드 (atomic field) 단기 트랜잭션 정적 스키마.  새로운 데이타베이스 응용 (2). 새로운 응용들 컴퓨터 이용 설계 (CAD, Computer-Aided Design) 컴퓨터 이용 소프트웨어 공학 (CASE, Computer-Aided Software Engineering) 멀티미디어 (Multimedia) 데이타베이스 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 13.  객체 데이타베이스

© DBLAB, SNU

13. 13. 객체 객체 데이타베이스데이타베이스

Page 2: 13.  객체 데이타베이스

© DBLAB, SNU

새로운 데이타베이스 응용새로운 데이타베이스 응용

전통적인 데이타베이스 응용들의 특성전통적인 데이타베이스 응용들의 특성

통일성 레코드 중심 작은 데이타 아이템 원자 필드 (atomic field) 단기 트랜잭션 정적 스키마

Page 3: 13.  객체 데이타베이스

© DBLAB, SNU

새로운 데이타베이스 응용 새로운 데이타베이스 응용 (2)(2)

새로운 응용들새로운 응용들

컴퓨터 이용 설계 (CAD, Computer-Aided Design) 컴퓨터 이용 소프트웨어 공학

(CASE, Computer-Aided Software Engineering) 멀티미디어 (Multimedia) 데이타베이스 사무 정보 시스템 (OIS, Office Information System) 하이퍼텍스트 (hypertext) 데이타베이스 시스템

Page 4: 13.  객체 데이타베이스

© DBLAB, SNU

객체 지향 개념의 제안객체 지향 개념의 제안

기존 관계형 모델은 새로운 응용 영역에 부적합기존 관계형 모델은 새로운 응용 영역에 부적합

새로운 데이타 모델과 질의어새로운 데이타 모델과 질의어 , , 트랜잭션 모델 요구트랜잭션 모델 요구

객체 지향 언어의 개념에 기반한 객체 지향 데이타 모델 객체 지향 언어의 개념에 기반한 객체 지향 데이타 모델 등장등장

Page 5: 13.  객체 데이타베이스

© DBLAB, SNU

객체 데이타 모델객체 데이타 모델 객체 지향 개념객체 지향 개념

객체 및 객체 식별자 애트리뷰트와 메소드 클래스 , 클래스 계층 상속 복합 객체

객체 데이타 모델객체 데이타 모델 객체 지향 개념을 지원하는 데이타 모델

Page 6: 13.  객체 데이타베이스

© DBLAB, SNU

객체 데이타 모델객체 데이타 모델 (2)(2) 객체 데이타베이스객체 데이타베이스 (object database)(object database)

객체 데이타 모델에 따라 객체의 상태 (state) 와 행태(behavior), 관계 (relationship) 가 정의되는 객체의 집합

객체 데이타베이스 관리 시스템객체 데이타베이스 관리 시스템 (ODBMS, object (ODBMS, object DBMS)DBMS) 객체 데이타 모델을 직접 지원하는 DBMS

객체 데이타베이스 시스템객체 데이타베이스 시스템 (ODBS, object DBS)(ODBS, object DBS) 객체 데이타베이스를 정의하고 처리할 수 있는

데이타베이스 시스템

Page 7: 13.  객체 데이타베이스

© DBLAB, SNU

▶▶ 객체와 객체 식별자객체와 객체 식별자 객체객체 (Object)(Object)

유일한 식별 , 내포된 성질을 가지고 다른 객체들과 상호작용 할 수 있는 실세계 개체의 추상적 표현

객체 = 개체 ( 데이타 ) + 연산자 유일한 식별성 (identity)

객체 식별자객체 식별자 (OID: Object Identifier)(OID: Object Identifier) 객체의 유일성 표현 관 계 모 델 의 기 본 키 와 달 리 변 경 되 지 않 음 (user-

defined value vs. system-defined value) 객체 탐색의 수단 다른 객체의 OID 를 이용해 객체간 참조 관계 표현

Page 8: 13.  객체 데이타베이스

© DBLAB, SNU

▶▶ 애트리뷰트와 메소드애트리뷰트와 메소드 애트리뷰트애트리뷰트

인스턴스 변수 (instance variable) : 객체의 상태를 기술

객체 구조 (object structure) : 한 객체의 애트리뷰트 집합

유일한 이름과 도메인으로서의 데이타 타입을 가짐

Student 객체의 애트리뷰트

S_number

Name

Date_of_birth

Dept

Grade

Address

Courses-taken

Advisor

123-45-6789

홍길동10/21/62

컴퓨터공학3.1

관악구 신림동 56-1

PL; DB; DS; OS;

이 일 로

Student

Page 9: 13.  객체 데이타베이스

© DBLAB, SNU

▶ ▶ 애트리뷰트와 메소드 애트리뷰트와 메소드 (2)(2) 객체 상태객체 상태 (Object State)(Object State)

어느 한 시점에서 객체의 애트리뷰트들의 값 시간에 따라 변화

메소드메소드 객체 상태를 처리하기 위해 수행되는

연산 객체 행태 (object behavior)

한 객체에 명세된 메소드 집합 캡슐화 (encapsulation)

객체의 내부 즉 애트리뷰트의 데이타 표현과 메소드 구현이 다른 객체에게 은닉된 상태

데이타

메소드 1

메소드 3

메소드 2

Page 10: 13.  객체 데이타베이스

© DBLAB, SNU

▶ ▶ 클래스클래스 ( Class)( Class)

동일한 구조동일한 구조 (( 애트리뷰트애트리뷰트 )) 와 행태와 행태 (( 메소드메소드 )) 를 가진 를 가진 객체들의 집합객체들의 집합

같은 특성을 갖는 객체의 모형같은 특성을 갖는 객체의 모형 (template)(template)

클래스 정의 클래스 정의 : : 구조와 행태구조와 행태 (( 메소드메소드 )) 의 명세의 명세 클래스의 인스턴스가 객체 클래스와 객체는 instance-of 관계

객체 지향 데이타베이스의 질의의 대상객체 지향 데이타베이스의 질의의 대상

Page 11: 13.  객체 데이타베이스

© DBLAB, SNU

클래스의 예클래스의 예

인스턴스 변수

( 애트리뷰트 )

차재병

박정숙

채진영

S_numberNameDate_ of_birthDeptGradeAddressCourse_takenAdvisor

SgradeMail

Student 클래스Student 인스턴스 (객체 )

채진영

메소드

Page 12: 13.  객체 데이타베이스

© DBLAB, SNU

▶ ▶ 클래스 계층클래스 계층 클래스 계층클래스 계층 (class hierarchy)(class hierarchy)

클래스들간의 세분화 (specialization) 에 따라 계층 형성

서브클래스 (subclass), 슈퍼클래스 (superclass) 구조

트리 (tree) 격자 (lattice) : 비사이클 방향 그래프 (DAG, Directed Acyclic

Graph)

일반화일반화 (generalization) (generalization) 관계관계 슈퍼클래스는 서브클래스의 일반화 개념 서브클래스는 슈퍼클래스의 세분화 개념 서브클래스와 슈퍼 클래스는 ISA 관계

Page 13: 13.  객체 데이타베이스

© DBLAB, SNU

클래스 계층의 예클래스 계층의 예

Vehicle

Car Truck

Domestic Car Import Car

tree

Page 14: 13.  객체 데이타베이스

© DBLAB, SNU

▶ ▶ 상속상속 (Inheritance)(Inheritance)

: 클래스 계층 구조에 따라 상위 클래스의 애트리뷰트와 메소드를 상속받는 것

구조적 상속 (structural inheritance) 애트리뷰트 ( 인스턴스 변수 ) 상속

행태적 상속 (behavioral inheritance) 메소드 상속 코드 재사용 (code reuse) 을 지원

단일상속 (single inheritance) : 트리 다중상속 (multiple inheritance) : 격자

폴 리 모 피 즘폴 리 모 피 즘 (polymorphism)/(polymorphism)/ 오 버 로 딩오 버 로 딩(overloading)(overloading) 하나의 이름을 둘 이상의 상이한 메소드가 사용하는 것 적용 객체에 따라 상이한 응답

Page 15: 13.  객체 데이타베이스

© DBLAB, SNU

다중 상속다중 상속

rrno nameaddr

sno dept

year

enosal

dept

major advisor

Person

Student Employee

PartTimeStudent

lattice

Page 16: 13.  객체 데이타베이스

© DBLAB, SNU

▶ ▶ 다중 상속 다중 상속

이름 충돌과 상속 범위이름 충돌과 상속 범위

서브 클래스 우선 슈퍼클래스와 같은 이름의 메소드 , 애트리뷰트는 상속 하지

않음

슈퍼클래스들 사이의 우선 순위 다중상속에서 슈퍼클래스들 사이에서 문제점 슈퍼클래스들 사이의 우선 순위에 따라 상속

Page 17: 13.  객체 데이타베이스

© DBLAB, SNU

▶ ▶ 복합 객체복합 객체 (Complex Object)(Complex Object)

: 애트리뷰트 값이 도메인으로 명세된 클래스의 인스턴스 객체 또는 객체 집합

애트리뷰트의 도메인애트리뷰트의 도메인 시스템이 정의한 기본 클래스 (primitive class)

애트리뷰트 값 : 도메인의 한 인스턴스 사용자 정의 클래스 (user-defined class)

애트리뷰트 값 : 해당 인스턴스의 OID

복합 객체복합 객체 애트리뷰트 값으로 다른 객체를 참조 애트리뷰트의 도메인으로 사용자 정의 클래스 사용 클래스의 중첩 구조를 형성 클래스 구성 계층 (class composition hierarchy) 형성

Part of 관계

Page 18: 13.  객체 데이타베이스

© DBLAB, SNU

Vehicle

IDweightenginemanufacturer

클래스 구성 계층의 예클래스 구성 계층의 예

Car Truck

DomesticCar ForeignCar DomesticAutoCo ForeignAutoCo

슈퍼클래스 / 서브클래스 링크애트리뷰트 / 도메인 링크

VehicleEngine

sizecylinder

Company

namelocationpresident

Employeerrnonameagecity

Page 19: 13.  객체 데이타베이스

© DBLAB, SNU

ODMGODMG 의 의 ODBMSODBMS

ODMG(Object Data Management Group)ODMG(Object Data Management Group)

Object Model 표준화를 위한 OMG(Object Management Group) 산하 소그룹

2000 년 현재 ODMG 3.0 표준 채택

객체 모델 (Object Model), 객체 정의어 (ODL), 객체 질의어 (OQL), 언어 바인딩 (C++, Java, Smalltalk) 등 포함

Page 20: 13.  객체 데이타베이스

© DBLAB, SNU

▶ ▶ ODMG ODMG 객체모델객체모델

객체 모델객체 모델 (Object Model)(Object Model) 객체질의어와 객체정의어의 기반 데이타모델 기본 개념 : 객체 (object) 와 리터럴 (literal)

객체객체 (Object)(Object) 객체 식별자 (OID) : unique 이름 (name) : optional, but unique 수명 (lifetime) : 영속적 (persistent) 또는 일시적

(transient) 구조 : 객체 생성자에 의한 생성 방법

Page 21: 13.  객체 데이타베이스

© DBLAB, SNU

▶ ▶ ODMG ODMG 객체모델 객체모델 (2)(2)

객체 타입객체 타입 집단 객체 타입 (collection object type)

Set, Bag, List, Array, Dictionary 원자 객체 타입 (atomic object type)

사용자 정의 객체 타입 (Class)

리터럴리터럴 (literal)(literal) 식별자 없이 값만 존재 객체를 구성하는 요소로 사용 개별 참조가 불가

Page 22: 13.  객체 데이타베이스

© DBLAB, SNU

▶ ▶ ODMG ODMG 객체모델 객체모델 (3)(3)

리터럴 타입리터럴 타입 원자 리터럴 타입 : long, short, char, string 구조화 리터럴 타입 : date, time, timestamp, interval 집단 리터럴 타입 : Set, Bag, List, Array, Dictionary

관계관계 (relationship)(relationship) 어떤 객체에 대한 참조 (reference) 나 참조의 집합을

표현 ODMG 에서는 이원 관계만 허용 역 (inverse) 관계 명세 가능

연산연산 (( 메소드메소드 ) : ) : 객체에 적용하는 함수객체에 적용하는 함수

Page 23: 13.  객체 데이타베이스

© DBLAB, SNU

▶ ▶ ODLODL

ODL(Object Definition Language)ODL(Object Definition Language) 데이타베이스 스키마를 정의 객체의 명세 (specification) 를 정의하는 언어 서로 다른 ODBMS 간에 데이타베이스 스키마를 쉽게

이식 객체는 interface 와 class 정의로 명세

인터페이스인터페이스 (interface) (interface) 정의정의 객체타입의 연산 시그니쳐 (signature) 를 명세 다른 인터페이스나 클래스가 상속 가능 자체 인스턴스의 생성은 불가

Page 24: 13.  객체 데이타베이스

© DBLAB, SNU

인터페이스 정의의 예인터페이스 정의의 예

interface Object { ··· boolean same-as(in Object Other-Object); Object copy(); void delete(); ···};

interface Time : Object { ··· unsigned short hours(); unsigned short minutes(); unsigned short seconds(); unsigned short milliseconds(); ··· boolean equal(in Time Other-Time); boolean greater(in Time Other-Time); ···};

Page 25: 13.  객체 데이타베이스

© DBLAB, SNU

▶ ▶ ODL (2)ODL (2)

Class Class 정의정의 연산 , 애트리뷰트 , 관계 명세 행태 상속 및 상태 ( 애트리뷰트 , 관계 ) 상속 가능 객체 인스턴스 생성 가능

RelationshipRelationship 다른 객체의 참조 명세 일대일 , 일대다 , 다대다 관계로 구분

Superclass/subclass Superclass/subclass 관계관계 Extends 로 명세

Page 26: 13.  객체 데이타베이스

© DBLAB, SNU

클래스 정의의 예클래스 정의의 예

Extent : Extent : 클래스에 속하는 객체들의 집합을 총칭클래스에 속하는 객체들의 집합을 총칭

class Student

( extent Students

key sno )

{ struct Department { string dname, string location };

attribute integer sno;

attribute string sname;

attribute Department dept;

relationship Set<Course> take inverse Course::enrol;

}

Page 27: 13.  객체 데이타베이스

© DBLAB, SNU

클래스 정의의 예클래스 정의의 예 Course Course 클래스의 정의클래스의 정의

class Course ( extent Courses key cno )

{ attribute string cno; attribute string cname; attribute string professor; attribute integer credit; relationship Set<Student> enrol inverse Student::take;

float noOfStudents(); }

Course Course 클래스의 서브클래스로 클래스의 서브클래스로 SeminarCourse SeminarCourse 정의정의class SeminarCourse extends Course

( extent SeminarCourses ){ attribute integer maxAttendees; }

Page 28: 13.  객체 데이타베이스

© DBLAB, SNU

▶ ▶ OQL(Object Query Language)OQL(Object Query Language)

ODMG ODMG 객체 모델을 지원하는 객체 질의어객체 모델을 지원하는 객체 질의어 SQLSQL 을 기반으로 객체 개념 확장을 기반으로 객체 개념 확장

예제예제SELECTSELECT S.sno

FROMFROM Students S

WHEREWHERE S.sname = ‘ 홍길동’

객체 집단 반복 변수

Page 29: 13.  객체 데이타베이스

© DBLAB, SNU

▶ ▶ OQL (2)OQL (2)

예제예제 수강생 수가 20 명 미만인 과목을 수강하는 학생의

이름 , 소속학과명 , 과목명을 검색하라 .

SELECTSELECT student_name:S.sname,

department:S.dept.dname,course_name:C.cname

FROMFROM Students S, S.take C

WHEREWHERE C.noOfStudents() < 20

참조 연산 : SQL 의 JOIN 과 비슷

결과 필드 이름 명명

Page 30: 13.  객체 데이타베이스

© DBLAB, SNU

▶ ▶ OQL (3)OQL (3)

예제예제

SELECTSELECT creditno: C,credit AvgNum: AVG( SELECT AVG( SELECT

P.C.noOfStudents()

FROM FROM partitionpartition P )

FROMFROM Courses C

GROUP BY GROUP BY C.credit

그룹을 지칭하는 키워드

Page 31: 13.  객체 데이타베이스

© DBLAB, SNU

▶ ▶ OQL (4)OQL (4)

예제예제

SELECT SELECT low, high, avgNum: AVG( SELECT AVG( SELECT

P.C.noOfStudents()

FROM FROM partitionpartition P )

FROMFROM Courses C

GROUP BY GROUP BY low: C.credit < 3, high: C.credit >= 3low: C.credit < 3, high: C.credit >= 3

그룹을 지칭하는 키워드

low 와 high 는 boolean 변수

Page 32: 13.  객체 데이타베이스

© DBLAB, SNU

▶ ▶ OQL (5)OQL (5)

예제예제 ( SELECT SELECT C.cname

FROMFROM Courses C

ORDER BY ORDER BY C.noOfStudents() DESCDESC) [0:4]학생수가 가장 많은 상위 5 개 과목