• 검색 결과가 없습니다.

객체 데이터베이스 설계 객체 데이터베이스 설계

N/A
N/A
Protected

Academic year: 2021

Share "객체 데이터베이스 설계 객체 데이터베이스 설계"

Copied!
34
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

객체 데이터베이스 설계

객체 데이터베이스 설계

(2)

  새로운 데이데이터베이스 응용 새로운 데이데이터베이스 응용

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

통일성 (uniformity)- 같은 데이터 아이템에 같은 크기

레코드 중심 (record-oriented)- 고정 길이의 레코드

원자 필드 (atomic field)- 레코드는 원자 값으로 구성

단기 트랜잭션 (short transaction)- 짧은 실행 시간

정적 스키마 (static schema)- 변경이 없거나 단순

(3)

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

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

컴퓨터 이용 설계 (CAD, Computer-Aided Design)

 CAD 데이터베이스 , design components, versions

컴퓨터 이용 소프트웨어 공학

(CASE, Computer-Aided Software Engineering)

 CASE 데이터베이스 , source code, definitions and uses

멀티미디어 (Multimedia) 데이터베이스

 image, spatial data, audio/video data, geographical data

사무 정보 시스템 (OIS, Office Information System)

 schedule, documents, document contents

하이퍼텍스트 (hypertext) 데이터베이스 시스템

 world wide web, link-based document retrieval and query

(4)

  객체 지향 개념의 배경 객체 지향 개념의 배경

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

새로운 데이터 모델과 질의어 새로운 데이터 모델과 질의어 , , 트랜잭션 모델 트랜잭션 모델 (transaction (transaction model)

model) 을 요구 을 요구

객체 지향 프로그래밍 언어의 개념에 기반한 객체 지향 데 객체 지향 프로그래밍 언어의 개념에 기반한 객체 지향 데 이터 모델 등장

이터 모델 등장

C++, Java, Smalltalk

(5)

  객체 데이터 모델 객체 데이터 모델

객체 지향 개념 객체 지향 개념 (object-oriented concepts) (object-oriented concepts)

객체 및 객체 식별자 (object and object identifier)

애트리뷰트와 메소드 (attributes and method)

클래스 , 클래스 계층 (class and class hierarchy)

상속 (inheritance)

복합 객체 (complex object)

객체 데이터 모델 객체 데이터 모델 (ODM: object data model) (ODM: object data model)

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

(6)

  객체 데이터 모델 객체 데이터 모델 (2) (2)

객체 데이터베이스 객체 데이터베이스 (object database) (object database)

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

객체 데이터베이스 관리 시스템 객체 데이터베이스 관리 시스템 (ODBMS, object DBMS) (ODBMS, object DBMS)

객체 데이터 모델을 직접 지원하는 DBMS

객체 데이터베이스 시스템 객체 데이터베이스 시스템 (ODBS, object DBS) (ODBS, object DBS)

객체 데이터베이스를 정의하고 처리할 수 있는 데이터베이스 시스템

(7)

객체와 객체 식별자 객체와 객체 식별자

객체 객체 (Object) (Object)

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

개체는 구성요소와 관계성으로 정의

객체 = entity( 데이터 ) + 연산자

유일한 식별성 (identity)

객체 식별자 객체 식별자 (OID: Object IDentifier) (OID: Object IDentifier)

객체의 유일성 표현

관계 모델의 기본 키와 달리 변경할 수 없음 (user-defined value vs. system-defined value)

객체 탐색의 수단

다른 객체의 OID 를 이용해 객체간 참조 관계를 표현

(8)

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

애트리뷰트 애트리뷰트

인스턴스 변수 (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

(9)

애트리뷰트와 메소드 애트리뷰트와 메소드 (2) (2)

객체 상태 객체 상태 (Object State) (Object State)

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

메소드 메소드 (method) (method)

객체 상태를 처리하기 위해 수행되는 연산

객체 행태 (object behavior)

 한 객체에 명세된 메소드 집합

캡슐화 (encapsulation)

 객체의 내부 즉 애트리뷰트의 데이터 표현과

메소드 구현이 다른 객체에게 은닉된 상태

데이터

메소드 1

메소드

3

메소드

2

(10)

클래스 클래스 ( Class)(1) ( Class)(1)

동일한 속성동일한 속성 (attributes(

attributes

)) 과 행위과 행위 (methods, operations)(methods, operations) 포함하고 있는 객체

포함하고 있는 객체 (object)(object) 들의 집합들의 집합

똑같은 특성을 갖는 객체똑같은 특성을 갖는 객체 (( 인스턴스인스턴스 )) 의 모형의 모형 (template)(template)

클래스 정의클래스 정의

속성 (attributes) 과 행위 (methods) 의 명세

클래스의 한 인스턴스 (instance) 가 객체 (object)

클래스와 객체는 instance-of 관계

한 클래스의 모든 인스턴스들을 그 클래스의 익스텐트한 클래스의 모든 인스턴스들을 그 클래스의 익스텐트 (extent)(extent)

클래스는 객체 데이터베이스의 클래스는 객체 데이터베이스의 질의의 대상질의의 대상

(11)

  클래스의 예 클래스의 예

인스턴스 변수 ( 애트리뷰트 ) 차재병

박정숙 채진영

S_number Name

Date_ of_birth Dept

Grade Address

Course_taken Advisor

Sgrade() Mail()

Student 클래스 Student 인스턴스 ( 객

체 ) 채진영

메소드

(12)

클래스 클래스 ( Class)(2) ( Class)(2)

메타 클래스 메타 클래스 (meta-class) (meta-class)

특수 논리적 클래스 (logical class)

클래스 자체를 객체로 취급할 필요가 있을 때 메타클래스의 인스턴스로 간주

객체 생성 시 메시지 전달을 받는 객체 역할

 객체만 메시지를 전달 받을 수 있음

클래스 애트리뷰트 (class attribute)

 그 클래스의 모든 인스턴스들이 공용하는 요약 정보 등을 표현

클래스 메소드 (class method)

(13)

클래스 계층 클래스 계층

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

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

서브클래스 (subclass) 와 슈퍼클래스 (superclass)

구조

 트리 (tree)

 격자 (lattice) : 비사이클 방향 그래프 (DAG, Directed Acyclic Graph)

일반화 일반화 (generalization) (generalization) 관계 관계

슈퍼클래스는 서브클래스의 일반화 개념

서브클래스는 슈퍼클래스의 세분화 개념

서브클래스와 슈퍼 클래스는 ISA 관계

(14)

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

Vehicle

Car Truck

Domestic Car Import Car

tree structure

(15)

상속 상속 (Inheritance) (Inheritance)

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

를 상속받는 것

구조 상속 (structural inheritance)

 애트리뷰트 ( 인스턴스 변수 ) 상속

행태 상속 (behavioral inheritance)

 메소드 상속

 코드 재사용 (code reuse) 을 지원

단일 상속 (single inheritance) : tree

다중 상속 (multiple inheritance) : lattice

폴 리 모 피 즘폴 리 모 피 즘 (polymorphism)/(polymorphism)/ 오 버 로 딩오 버 로 딩 (overloading)

(overloading)

(16)

  다중 상속 다중 상속 (multiple inheritance) : (multiple inheritance) : DAG DAG

rrno name

addr

sno dept year

eno sal dept

major advisor

Person

Student Employee

PartTimeStudent

lattice

(17)

다중 상속 다중 상속 (multiple inheritance) (multiple inheritance)

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

서브클래스 우선

 서브클래스에서 정의된 같은 이름의 메소드 , 애트리뷰트는 상속 하 지 않음

슈퍼클래스들 사이의 우선 순위

 다중 상속에서 슈퍼클래스들 충돌에서 발생하는 문제점

 슈퍼클래스들 사이에 명세된 우선 순위에 따라 상속

(18)

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

애트리뷰트 값애트리뷰트 값 : : 도메인으로 명세된 클래스의 인스턴스도메인으로 명세된 클래스의 인스턴스

애트리뷰트의 도메인애트리뷰트의 도메인

시스템이 정의한 기본 클래스 (primitive class)

 정수 , 스트링 : 인스턴스 ( 객체 ) 의 oid 가 없음

 애트리뷰트 값 : 정수 값 또는 스트링 값

사용자 정의 클래스 (user-defined class)

 애트리뷰트 값 : 저장되는 값은 해당 인스턴스의 OID

복합 객체복합 객체

애트리뷰트 값으로 다른 객체의 oid 를 사용 : 객체 참조

애트리뷰트의 도메인으로 사용자 정의 클래스가 사용됨

클래스의 중첩 구조를 형성

 중첩 관계 모델 (nested relational model)

클래스 구성 계층 (class composition hierarchy) 형성

 part-of 관계

 클래스 간의 상속과는 관계가 없음

(19)

Vehicle

ID weight engine

manufacturer

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

Car Truck

DomesticCar ForeignCar DomesticAutoCo ForeignAutoCo

슈퍼클래스 / 서브클래스 링크

VehicleEngine

size

cylinder

Company

name location president

Employee

rrno name age city

(20)

  ODMG ODMG ODBMS ODBMS

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

ODBMS 의 기술 표준화를 위한 국제 산업체 컨소시엄 OMG(Object Management Group) 산하 소그룹

1993/1997/2000 년에 ODMG 1.0/2.0/3.0 표준

ODBMS 를 위한 ODMG 구조의 주요 구성 요소

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

표준화 표준화 (standardization) (standardization)

이식성 (portability) – capability to execute applications on different system with minimal modifications.

상호 운영성 (interoperability) – ability of applications to access multiple distinct systems.

(21)

ODMG ODMG 객체모델 객체모델

객체 모델객체 모델 (Object Model)(Object Model)

객체 질의어 (OQL) 와 객체 정의어 (ODL) 의 기반이 되는 데 이터 모델

기본 개념 : 객체 (object) 와 리터럴 (literal)

객체객체 (Object) (Object)

- 4 개의 특성을 명세

1. 객체 식별자 (OID) : unique

2. 이름 (name) : optional, but unique

3. 수명 (lifetime) : 영속적 (persistent) 또는 일시적 (transient)

객체가 DB 에 저장되느냐 아니면 프로그램 실행 동안만 존재

4. 구조 (structure) : 객체 생성자 (constructor) 에 의해 생성

(22)

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

객체 타입 객체 타입

집단 객체 타입 (collection object type)

 Set, Bag, List, Array, Dictionary

 Dictionary 는 <key, value> 쌍의 집합

원자 객체 타입 (atomic object type)

 사용자 정의 객체 타입을 의미

 ODL 의 키워드 class 를 사용하여 정의

리터럴 리터럴 (literal) (literal)

식별자 (oid) 없이 값만 존재

객체를 구성하는 요소로 사용

개별 참조는 불가

(23)

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

리터럴리터럴

( (

literal)

literal)

타입타입

원자 리터럴 (atomic literal) 타입

 long, short, char, string

구조화 리터럴 (structured literal) 타입

 system-defined structure: date, time, timestamp, interval

 user-defined structure: struct 키워드를 사용

집단 리터럴 (collection literal) 타입

 Set, Bag, List, Array, Dictionary

클래스 정의클래스 정의

애트리뷰트 (attribute)

관계 (relationship)

 어떤 객체에 대한 참조 (reference) 나 참조의 집합을 표현

 ODMG 에서는 이원 관계 (binary relationship) 만 허용

 역 관계 (inverse relationship) 명세 가능

(24)

ODL ODL

ODL(Object Definition Language) ODL(Object Definition Language)

ODMG 데이터베이스 스키마를 정의

객체의 명세 (specification) 를 정의하는 언어

서로 다른 ODBMS 간에 데이터베이스 스키마를 쉽게 이식 (portability)

객체 타입은 interface 와 class 정의로 명세

인터페이스 인터페이스 (interface) (interface) 정의 정의

객체 타입의 추상적 행태 , 즉 연산 시그니쳐 (signature) 를 명세

다른 인터페이스나 클래스가 상속 가능

자체 인스턴스의 생성은 불가

(25)

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

interface Object { ···

boolean same-as(in object other-object);

//in 은 매개변수 애트리뷰트로 out, inout 도 있음 object copy();

void delete();

···

};

interface Time : Object { //Object interface 를 상속 ···

unsigned short hours();

unsigned short minutes();

unsigned short seconds();

unsigned short milliseconds();

···

boolean equal(in Time other-time);

boolean greater(in Time other-time);

(26)

ODL (2) ODL (2)

Class Class 정의 정의

애트리뷰트 , 관계 , 연산을 명세

객체 인스턴스 생성 가능

클래스에 속하는 인스턴스 집합 이름 앞에 extent 로 명세

Relationship Relationship

다른 객체의 참조 명세

일대일 (1:1), 일대다 (1:n), 다대다 (n:m) 관계로 구분

클래스 계층 클래스 계층 (superclass/subclass) (superclass/subclass) 관계 관계

extends 로 superclass/subclass 를 명세

상태 ( 애트리뷰트 , 관계 )(state inheritance) 상속 및 행 태 상속 (behavior inheritance) 이 가능

(27)

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

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;

}

(28)

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

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; }

(29)

익스텐트의 익스텐트의 set/subset relationship set/subset relationship

슈퍼클래스와 서브클래스 익스텐트 간의 관계는 set/subset 관 계가 유지

class Course

( extent Courses key cno )

{ attribute string cno;

……….

}

class SeminarCourse extends Course ( extent SeminarCourses )

{ attribute integer maxAttendees; }

익스텐트 SeminarCourses 에 속하는 객체 집합은 반드시 익스 텐트 Courses 에 속하는 객체 집합의 부분집합이 됨 .

(30)

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

ODMG ODMG 객체 모델을 지원하는 객체 질의어 객체 모델을 지원하는 객체 질의어

SQL SQL 을 기반으로 객체 개념을 확장 을 기반으로 객체 개념을 확장

예제 예제

SELECT

SELECT S.sno

FROM FROM Students S

WHERE WHERE S.sname = ‘ 홍길동’

* From 절의 Students 는 Student 클래스의 extent 로 객체 집단을 표시

* 질의의 대상은 클래스의 객체 집단인 extent 임

* extent 의 객체는 반복 변수 (iterator variable) 로 반복적으로 접근

객체 집단 반복 변

(31)

OQL (2) OQL (2)

예제예제

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

(student_name), 소속학과명 (department), 과목명 (course_na me) 을 검색하라 .

SELECT student_name: S.sname, SELECT

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

FROM FROM Students S, S.take C

WHERE WHERE C.noOfStudents() < 20

S.take C 는 현재 바인딩된 S 가 수강 (take) 하는 Course(C) 를 바인딩

참조 연산 : SQL 의 JOIN 과 비

결과 필드 이름

(32)

OQL (3) OQL (3)

예제 예제

SELECT

SELECT

creditno: C.credit

avgNum: AVG( SELECT

AVG( SELECT

P.C.noOfStudents()

FROM

FROM

partition

partition

P )

FROM

FROM

Courses C

GROUP BY C.credit

GROUP BY

* partition 은 GROUP BY 결과로 만들어진 그룹들을 나타냄

* p 는 반복 변수

(33)

OQL (4) OQL (4)

예제 예제

SELECT

SELECT low, high,

avgNum:

AVG( SELECT P.C.noOfStudents() AVG( SELECT FROM FROM partition partition P )

FROM FROM

Courses C

GROUP BY GROUP BY

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

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

* 2 개의 투플을 결과로 생성

* GROUP BY 는 low, high 두 그룹을 생성하고 partition 이 이들을 표현

*SELECT 절의 low 와 high 는 불리언 변수가 되어

noOfStudent() 가 실행하는 그룹에 따라 True 나 False 를 출

(34)

OQL (5) OQL (5)

예제 예제

( SELECT C.cname

SELECT

FROM

FROM

Courses C

ORDER BY C.noOfStudents()

ORDER BY

DESC ) [0:4]

DESC

* ORDER BY * ORDER BY 절로 내림차 순으로 정렬된 원소는 절로 내림차 순으로 정렬된 원소는

인덱스 인덱스 0, 1, 2, .. 0, 1, 2, .. 등으로 접근 등으로 접근

* * 인덱스 인덱스 0 0 에서 에서 4 4 까지 상위 까지 상위 5 5 개의 과목 이름만 검색 개의 과목 이름만 검색

참조

관련 문서

 인자로 들어온 콜백 함수를 계속해서 호출하여 배열의 요소들을 왼쪽에서 오른쪽 방향으로 나아가면서 하나의 값으로 줄임. – 콜백 함수: 어떻게 배열의 원소들을

 시스템내의 객체, 객체사이의 관계, 그리고 객체의 각 클래스의 특 징을 나타내는 속성이나 조작을 표시함에 의하여 시스템의 정적구조 를

문자열 name과 같은 이름을 가진 인수 값을 배열 형태로 가져 옴 checkbox, multiple list 등에

• 어떤 객체가 다른 객체에게 어떤 일을 수행하도록 명령하기 위해서 우리는 그 객체에 메시지를

◈ 어떤 데이터 언어가 relational calculus가 표현할 수 있는 모든 질의 를 표현할 수 있을 때 relationally complete 하다고 함

(i.e., how conceptual records and fields are represented at the internal level) – Structure of the stored database : change. (i.e., change in the

 Class는 스스로 객체 생성 방법을 가지고 있어야 한다... 더 이상

 애트리뷰트 합성 방법