15. 객체 지향 데이타베이스 - ::DBLAB에 오신

Download Report

Transcript 15. 객체 지향 데이타베이스 - ::DBLAB에 오신

13. 객체
데이타베이스
© DBLAB, SNU
 새로운 데이타베이스 응용

전통적인 데이타베이스 응용들의 특성






통일성
레코드 중심
작은 데이타 아이템
원자 필드 (atomic field)
단기 트랜잭션
정적 스키마
© DBLAB, SNU
 새로운 데이타베이스 응용 (2)

새로운 응용들





컴퓨터 이용 설계(CAD, Computer-Aided Design)
컴퓨터 이용 소프트웨어 공학
(CASE, Computer-Aided Software Engineering)
멀티미디어(Multimedia) 데이타베이스
사무 정보 시스템(OIS, Office Information System)
하이퍼텍스트(hypertext) 데이타베이스 시스템
© DBLAB, SNU
 객체 지향 개념의 제안

기존 관계형 모델은 새로운 응용 영역에 부적합

새로운 데이타 모델과 질의어, 트랜잭션 모델 요구

객체 지향 언어의 개념에 기반한 객체 지향 데이타 모델
등장
© DBLAB, SNU
 객체 데이타 모델

객체 지향 개념






객체 및 객체 식별자
애트리뷰트와 메소드
클래스, 클래스 계층
상속
복합 객체
객체 데이타 모델

객체 지향 개념을 지원하는 데이타 모델
© DBLAB, SNU
 객체 데이타 모델(2)

객체 데이타베이스(object database)


객체 데이타베이스 관리 시스템(ODBMS, object DBMS)


객체 데이타 모델에 따라 객체의 상태(state)와
행태(behavior), 관계(relationship)가 정의되는 객체의 집합
객체 데이타 모델을 직접 지원하는 DBMS
객체 데이타베이스 시스템(ODBS, object DBS)

객체 데이타베이스를 정의하고 처리할 수 있는
데이타베이스 시스템
© DBLAB, SNU
▶ 객체와 객체 식별자

객체(Object)




유일한 식별, 내포된 성질을 가지고 다른 객체들과
상호작용 할 수 있는 실세계 개체의 추상적 표현
객체 = 개체(데이타) + 연산자
유일한 식별성(identity)
객체 식별자(OID: Object Identifier)




객체의 유일성 표현
관계 모델의 기본키와 달리 변경되지 않음(user-defined
value vs. system-defined value)
객체 탐색의 수단
다른 객체의 OID를 이용해 객체간 참조 관계 표현
© 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 객체의 애트리뷰트
© DBLAB, SNU
▶ 애트리뷰트와 메소드 (2)

객체 상태(Object State)
 어느 한 시점에서 객체의 애트리뷰트들의 값
 시간에 따라 변화

메소드


객체 상태를 처리하기 위해 수행되는
연산
객체 행태(object behavior)
메소드
1
 한 객체에 명세된 메소드 집합

캡슐화(encapsulation)
 객체의 내부 즉 애트리뷰트의 데이타 표현과
메소드 구현이 다른 객체에게 은닉된 상태
© DBLAB, SNU
데이타
메소드
3
메소드
2
▶ 클래스( Class)

동 일 한 구 조 ( 애 트 리 뷰 트) 와 행 태 ( 메 소 드 ) 를 가 진
객체들의 집합

같은 특성을 갖는 객체의 모형(template)

클래스 정의 : 구조와 행태(메소드)의 명세



클래스의 인스턴스가 객체
클래스와 객체는 instance-of 관계
객체 지향 데이타베이스의 질의의 대상
© DBLAB, SNU
 클래스의 예
차재병
박정숙
채진영
S_number
Name
Date_ of_birth
Dept
Grade
Address
Course_taken
Advisor
Sgrade
Mail
Student 인스턴스(객체)
© DBLAB, SNU
Student 클래스
인스턴스 변수
(애트리뷰트)
메소드
▶ 클래스 계층

클래스 계층(class hierarchy)



클래스들간의 세분화(specialization)에 따라 계층 형성
서브클래스(subclass), 슈퍼클래스(superclass)
구조
 트리(tree)
 격 자(lattice) :비 사 이클 방 향 그래 프 (DAG, Directed Acyclic
Graph)

일반화(generalization) 관계



슈퍼클래스는 서브클래스의 일반화 개념
서브클래스는 슈퍼클래스의 세분화 개념
서브클래스와 슈퍼 클래스는 ISA 관계
© DBLAB, SNU
 클래스 계층의 예
tree
Vehicle
Car
Domestic Car
© DBLAB, SNU
Truck
Import Car
▶ 상속(Inheritance)
: 클래스 계층 구조에 따라 상위 클래스의 애트리뷰트와
메소드를 상속받는 것

구조적 상속(structural inheritance)
 애트리뷰트(인스턴스 변수) 상속

행태적 상속(behavioral inheritance)
 메소드 상속
 코드 재사용(code reuse)을 지원



단일상속(single inheritance) : 트리
다중상속(multiple inheritance) : 격자
폴리모피즘(polymorphism)/오버로딩(overloading)
 하나의 이름을 둘 이상의 상이한 메소드가 사용하는 것
 적용 객체에 따라 상이한 응답
© DBLAB, SNU
 다중 상속
Person
rrno
name
addr
Student
sno
dept
year
PartTimeStudent
© DBLAB, SNU
lattice
Employee
eno
sal
dept
major
advisor
▶ 다중 상속

이름 충돌과 상속 범위

서브 클래스 우선
 슈퍼클래스와 같은 이름의 메소드, 애트리뷰트는 상속 하지 않음

슈퍼클래스들 사이의 우선 순위
 다중상속에서 슈퍼클래스들 사이에서 문제점
 슈퍼클래스들 사이의 우선 순위에 따라 상속
© DBLAB, SNU
▶ 복합 객체(Complex Object)
:애트리뷰트 값이 도메인으로 명세된 클래스의 인스턴스 객체 또는
객체 집합

애트리뷰트의 도메인

시스템이 정의한 기본 클래스(primitive class)
 애트리뷰트 값 : 도메인의 한 인스턴스

사용자 정의 클래스(user-defined class)
 애트리뷰트 값 : 해당 인스턴스의 OID

복합 객체




애트리뷰트 값으로 다른 객체를 참조
애트리뷰트의 도메인으로 사용자 정의 클래스 사용
클래스의 중첩 구조를 형성
클래스 구성 계층(class composition hierarchy) 형성
 Part of 관계
© DBLAB, SNU
 클래스 구성 계층의 예
VehicleEngine
Vehicle
ID
weight
engine
manufacturer
Car
DomesticCar
size
cylinder
Employee
Company
rrno
name
age
city
name
location
president
Truck
ForeignCar
DomesticAutoCo
ForeignAutoCo
슈퍼클래스/서브클래스 링크
애트리뷰트/도메인 링크
© DBLAB, SNU
 ODMG의 ODBMS

ODMG(Object Data Management Group)

Object Model 표준화를 위한 OMG(Object Management
Group)산하 소그룹

2000년 현재 ODMG 3.0 표준 채택

객체 모델(Object Model), 객체 정의어(ODL), 객체
질의어(OQL), 언어 바인딩(C++, Java, Smalltalk) 등 포함
© DBLAB, SNU
▶ ODMG 객체모델

객체 모델(Object Model)



객체질의어와 객체정의어의 기반 데이타모델
기본 개념 : 객체(object)와 리터럴(literal)
객체(Object)




객체 식별자(OID) : unique
이름(name) : optional, but unique
수명(lifetime) : 영속적(persistent) 또는 일시적(transient)
구조 : 객체 생성자에 의한 생성 방법
© DBLAB, SNU
▶ ODMG 객체모델 (2)

객체 타입

집단 객체 타입(collection object type)
 Set, Bag, List, Array, Dictionary

원자 객체 타입(atomic object type)
 사용자 정의 객체 타입(Class)

리터럴(literal)



식별자 없이 값만 존재
객체를 구성하는 요소로 사용
개별 참조가 불가
© DBLAB, SNU
▶ ODMG 객체모델 (3)

리터럴 타입




관계(relationship)




원자 리터럴 타입 : long, short, char, string
구조화 리터럴 타입 : date, time, timestamp, interval
집단 리터럴 타입 : Set, Bag, List, Array, Dictionary
어떤 객체에 대한 참조(reference)나 참조의 집합을 표현
ODMG에서는 이원 관계만 허용
역(inverse)관계 명세 가능
연산(메소드) : 객체에 적용하는 함수
© DBLAB, SNU
▶ ODL

ODL(Object Definition Language)





데이타베이스 스키마를 정의
객체의 명세(specification)를 정의하는 언어
서로 다른 ODBMS간에 데이타베이스 스키마를 쉽게
이식
객체는 interface와 class 정의로 명세
인터페이스(interface) 정의



객체타입의 연산 시그니쳐(signature)를 명세
다른 인터페이스나 클래스가 상속 가능
자체 인스턴스의 생성은 불가
© 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);
···
};
© DBLAB, SNU
▶ ODL (2)

Class 정의




Relationship



연산, 애트리뷰트, 관계 명세
행태 상속 및 상태(애트리뷰트, 관계) 상속 가능
객체 인스턴스 생성 가능
다른 객체의 참조 명세
일대일, 일대다, 다대다 관계로 구분
Superclass/subclass 관계

Extends로 명세
© DBLAB, SNU
 클래스 정의의 예
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;
}

Extent : 클래스에 속하는 객체들의 집합을 총칭
© DBLAB, SNU
 클래스 정의의 예

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 클래스의 서브클래스로 SeminarCourse 정의
class SeminarCourse extends Course
( extent SeminarCourses )
{ attribute integer maxAttendees; }
© DBLAB, SNU
▶ OQL(Object Query Language)



ODMG 객체 모델을 지원하는 객체 질의어
SQL을 기반으로 객체 개념 확장
예제
SELECT S.sno
FROM Students S
객체 집단
반복 변수
WHERE S.sname = ‘홍길동’
© DBLAB, SNU
▶ OQL (2)

예제
수강생 수가 20명 미만인 과목을 수강하는 학생의 이름,
소속학과명, 과목명을 검색하라.
SELECT student_name:S.sname,
결과 필드 이름 명명
FROM
department:S.dept.dname,
course_name:C.cname
Students S, S.take C
참조 연산: SQL의 JOIN과 비슷
WHERE
© DBLAB, SNU
C.noOfStudents() < 20
▶ OQL (3)

예제
SELECT
FROM
creditno: C,credit
AvgNum: AVG( SELECT P.C.noOfStudents()
FROM partition P )
그룹을 지칭하는 키워드
Courses C
GROUP BY C.credit
© DBLAB, SNU
▶ OQL (4)

예제
SELECT low, high,
avgNum: AVG( SELECT P.C.noOfStudents()
FROM partition P )
그룹을 지칭하는 키워드
FROM
Courses C
GROUP BY low: C.credit < 3, high: C.credit >= 3
low와 high는 boolean변수
© DBLAB, SNU
▶ OQL (5)

예제
( SELECT C.cname
FROM
Courses C
ORDER BY C.noOfStudents() DESC) [0:4]
학생수가 가장 많은 상위 5개 과목
© DBLAB, SNU