© DBLAB, SNU
13. 13. 객체 객체 데이타베이스데이타베이스
© DBLAB, SNU
새로운 데이타베이스 응용새로운 데이타베이스 응용
전통적인 데이타베이스 응용들의 특성전통적인 데이타베이스 응용들의 특성
통일성 레코드 중심 작은 데이타 아이템 원자 필드 (atomic field) 단기 트랜잭션 정적 스키마
© DBLAB, SNU
새로운 데이타베이스 응용 새로운 데이타베이스 응용 (2)(2)
새로운 응용들새로운 응용들
컴퓨터 이용 설계 (CAD, Computer-Aided Design) 컴퓨터 이용 소프트웨어 공학
(CASE, Computer-Aided Software Engineering) 멀티미디어 (Multimedia) 데이타베이스 사무 정보 시스템 (OIS, Office Information System) 하이퍼텍스트 (hypertext) 데이타베이스 시스템
© DBLAB, SNU
객체 지향 개념의 제안객체 지향 개념의 제안
기존 관계형 모델은 새로운 응용 영역에 부적합기존 관계형 모델은 새로운 응용 영역에 부적합
새로운 데이타 모델과 질의어새로운 데이타 모델과 질의어 , , 트랜잭션 모델 요구트랜잭션 모델 요구
객체 지향 언어의 개념에 기반한 객체 지향 데이타 모델 객체 지향 언어의 개념에 기반한 객체 지향 데이타 모델 등장등장
© DBLAB, SNU
객체 데이타 모델객체 데이타 모델 객체 지향 개념객체 지향 개념
객체 및 객체 식별자 애트리뷰트와 메소드 클래스 , 클래스 계층 상속 복합 객체
객체 데이타 모델객체 데이타 모델 객체 지향 개념을 지원하는 데이타 모델
© DBLAB, SNU
객체 데이타 모델객체 데이타 모델 (2)(2) 객체 데이타베이스객체 데이타베이스 (object database)(object database)
객체 데이타 모델에 따라 객체의 상태 (state) 와 행태(behavior), 관계 (relationship) 가 정의되는 객체의 집합
객체 데이타베이스 관리 시스템객체 데이타베이스 관리 시스템 (ODBMS, object (ODBMS, object DBMS)DBMS) 객체 데이타 모델을 직접 지원하는 DBMS
객체 데이타베이스 시스템객체 데이타베이스 시스템 (ODBS, object DBS)(ODBS, object DBS) 객체 데이타베이스를 정의하고 처리할 수 있는
데이타베이스 시스템
© DBLAB, SNU
▶▶ 객체와 객체 식별자객체와 객체 식별자 객체객체 (Object)(Object)
유일한 식별 , 내포된 성질을 가지고 다른 객체들과 상호작용 할 수 있는 실세계 개체의 추상적 표현
객체 = 개체 ( 데이타 ) + 연산자 유일한 식별성 (identity)
객체 식별자객체 식별자 (OID: Object Identifier)(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)(2) 객체 상태객체 상태 (Object State)(Object State)
어느 한 시점에서 객체의 애트리뷰트들의 값 시간에 따라 변화
메소드메소드 객체 상태를 처리하기 위해 수행되는
연산 객체 행태 (object behavior)
한 객체에 명세된 메소드 집합 캡슐화 (encapsulation)
객체의 내부 즉 애트리뷰트의 데이타 표현과 메소드 구현이 다른 객체에게 은닉된 상태
데이타
메소드 1
메소드 3
메소드 2
© DBLAB, SNU
▶ ▶ 클래스클래스 ( Class)( Class)
동일한 구조동일한 구조 (( 애트리뷰트애트리뷰트 )) 와 행태와 행태 (( 메소드메소드 )) 를 가진 를 가진 객체들의 집합객체들의 집합
같은 특성을 갖는 객체의 모형같은 특성을 갖는 객체의 모형 (template)(template)
클래스 정의 클래스 정의 : : 구조와 행태구조와 행태 (( 메소드메소드 )) 의 명세의 명세 클래스의 인스턴스가 객체 클래스와 객체는 instance-of 관계
객체 지향 데이타베이스의 질의의 대상객체 지향 데이타베이스의 질의의 대상
© DBLAB, SNU
클래스의 예클래스의 예
인스턴스 변수
( 애트리뷰트 )
차재병
박정숙
채진영
S_numberNameDate_ of_birthDeptGradeAddressCourse_takenAdvisor
SgradeMail
Student 클래스Student 인스턴스 (객체 )
채진영
메소드
© DBLAB, SNU
▶ ▶ 클래스 계층클래스 계층 클래스 계층클래스 계층 (class hierarchy)(class hierarchy)
클래스들간의 세분화 (specialization) 에 따라 계층 형성
서브클래스 (subclass), 슈퍼클래스 (superclass) 구조
트리 (tree) 격자 (lattice) : 비사이클 방향 그래프 (DAG, Directed Acyclic
Graph)
일반화일반화 (generalization) (generalization) 관계관계 슈퍼클래스는 서브클래스의 일반화 개념 서브클래스는 슈퍼클래스의 세분화 개념 서브클래스와 슈퍼 클래스는 ISA 관계
© DBLAB, SNU
클래스 계층의 예클래스 계층의 예
Vehicle
Car Truck
Domestic Car Import Car
tree
© DBLAB, SNU
▶ ▶ 상속상속 (Inheritance)(Inheritance)
: 클래스 계층 구조에 따라 상위 클래스의 애트리뷰트와 메소드를 상속받는 것
구조적 상속 (structural inheritance) 애트리뷰트 ( 인스턴스 변수 ) 상속
행태적 상속 (behavioral inheritance) 메소드 상속 코드 재사용 (code reuse) 을 지원
단일상속 (single inheritance) : 트리 다중상속 (multiple inheritance) : 격자
폴 리 모 피 즘폴 리 모 피 즘 (polymorphism)/(polymorphism)/ 오 버 로 딩오 버 로 딩(overloading)(overloading) 하나의 이름을 둘 이상의 상이한 메소드가 사용하는 것 적용 객체에 따라 상이한 응답
© DBLAB, SNU
다중 상속다중 상속
rrno nameaddr
sno dept
year
enosal
dept
major advisor
Person
Student Employee
PartTimeStudent
lattice
© DBLAB, SNU
▶ ▶ 다중 상속 다중 상속
이름 충돌과 상속 범위이름 충돌과 상속 범위
서브 클래스 우선 슈퍼클래스와 같은 이름의 메소드 , 애트리뷰트는 상속 하지
않음
슈퍼클래스들 사이의 우선 순위 다중상속에서 슈퍼클래스들 사이에서 문제점 슈퍼클래스들 사이의 우선 순위에 따라 상속
© DBLAB, SNU
▶ ▶ 복합 객체복합 객체 (Complex Object)(Complex Object)
: 애트리뷰트 값이 도메인으로 명세된 클래스의 인스턴스 객체 또는 객체 집합
애트리뷰트의 도메인애트리뷰트의 도메인 시스템이 정의한 기본 클래스 (primitive class)
애트리뷰트 값 : 도메인의 한 인스턴스 사용자 정의 클래스 (user-defined class)
애트리뷰트 값 : 해당 인스턴스의 OID
복합 객체복합 객체 애트리뷰트 값으로 다른 객체를 참조 애트리뷰트의 도메인으로 사용자 정의 클래스 사용 클래스의 중첩 구조를 형성 클래스 구성 계층 (class composition hierarchy) 형성
Part of 관계
© DBLAB, SNU
Vehicle
IDweightenginemanufacturer
클래스 구성 계층의 예클래스 구성 계층의 예
Car Truck
DomesticCar ForeignCar DomesticAutoCo ForeignAutoCo
슈퍼클래스 / 서브클래스 링크애트리뷰트 / 도메인 링크
VehicleEngine
sizecylinder
Company
namelocationpresident
Employeerrnonameagecity
© 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) 등 포함
© DBLAB, SNU
▶ ▶ ODMG ODMG 객체모델객체모델
객체 모델객체 모델 (Object Model)(Object Model) 객체질의어와 객체정의어의 기반 데이타모델 기본 개념 : 객체 (object) 와 리터럴 (literal)
객체객체 (Object)(Object) 객체 식별자 (OID) : unique 이름 (name) : optional, but unique 수명 (lifetime) : 영속적 (persistent) 또는 일시적
(transient) 구조 : 객체 생성자에 의한 생성 방법
© DBLAB, SNU
▶ ▶ ODMG ODMG 객체모델 객체모델 (2)(2)
객체 타입객체 타입 집단 객체 타입 (collection object type)
Set, Bag, List, Array, Dictionary 원자 객체 타입 (atomic object type)
사용자 정의 객체 타입 (Class)
리터럴리터럴 (literal)(literal) 식별자 없이 값만 존재 객체를 구성하는 요소로 사용 개별 참조가 불가
© DBLAB, SNU
▶ ▶ ODMG ODMG 객체모델 객체모델 (3)(3)
리터럴 타입리터럴 타입 원자 리터럴 타입 : long, short, char, string 구조화 리터럴 타입 : date, time, timestamp, interval 집단 리터럴 타입 : Set, Bag, List, Array, Dictionary
관계관계 (relationship)(relationship) 어떤 객체에 대한 참조 (reference) 나 참조의 집합을
표현 ODMG 에서는 이원 관계만 허용 역 (inverse) 관계 명세 가능
연산연산 (( 메소드메소드 ) : ) : 객체에 적용하는 함수객체에 적용하는 함수
© DBLAB, SNU
▶ ▶ ODLODL
ODL(Object Definition Language)ODL(Object Definition Language) 데이타베이스 스키마를 정의 객체의 명세 (specification) 를 정의하는 언어 서로 다른 ODBMS 간에 데이타베이스 스키마를 쉽게
이식 객체는 interface 와 class 정의로 명세
인터페이스인터페이스 (interface) (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)ODL (2)
Class Class 정의정의 연산 , 애트리뷰트 , 관계 명세 행태 상속 및 상태 ( 애트리뷰트 , 관계 ) 상속 가능 객체 인스턴스 생성 가능
RelationshipRelationship 다른 객체의 참조 명세 일대일 , 일대다 , 다대다 관계로 구분
Superclass/subclass Superclass/subclass 관계관계 Extends 로 명세
© 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;
}
© 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; }
© DBLAB, SNU
▶ ▶ OQL(Object Query Language)OQL(Object Query Language)
ODMG ODMG 객체 모델을 지원하는 객체 질의어객체 모델을 지원하는 객체 질의어 SQLSQL 을 기반으로 객체 개념 확장을 기반으로 객체 개념 확장
예제예제SELECTSELECT S.sno
FROMFROM Students S
WHEREWHERE S.sname = ‘ 홍길동’
객체 집단 반복 변수
© 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 과 비슷
결과 필드 이름 명명
© 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
그룹을 지칭하는 키워드
© 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 변수
© DBLAB, SNU
▶ ▶ OQL (5)OQL (5)
예제예제 ( SELECT SELECT C.cname
FROMFROM Courses C
ORDER BY ORDER BY C.noOfStudents() DESCDESC) [0:4]학생수가 가장 많은 상위 5 개 과목