Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 제9장 객체-관계 데이터베이스 내포 릴레이션 복합형과 객체 지향성 복합형을 가진 질의 복합값과 복합 객체의 생성 객체 지향과 객체-관계 데이터베이스의 비교 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 객체-관계 데이터 모델 관계형 데이터 모델에 객체 지향성과 추가 데이터형을 다루기 위한 구조체를 포함시켜 확장시켰다. 튜플의 애트리뷰트에 내포 릴레이션과 같은 비원자 값을 포함해 복합형을 갖도록 한다. 모델링 능력은 확장시킨 반면, 특히 데이터에의 선언적 액세스같은 관계형 기본은 유지한다. 기존의 관계형 언어와의 양립성을 향상시킴 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 내포 릴레이션 동기 : 비원자 도메인을 허용하자(원자적≡나누어지지 않음) 비원자 도메인의 예 : 정수들의 집합 또는 튜플들의 집합 복합 데이터를 가진 어플리케이션에 대해 보다 직관적인 모델링을 허용하자. 직관적 정의: 원자(스칼라)값을 허용하는 곳에 릴레이션을 허용하자 - 릴레이션내에 릴레이션 관계형 모델의 수학적 기초를 유지한다. 제1정규형에 위배된다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 내포 릴레이션의 예 예 : 문서 검색 시스템 각 문서에는 다음을 가진다. 제목 저자들의 집합 입수한 날짜 및 키워드의 집합 비-1NF 문서 릴레이션 title author-list date Keyword-list Day month year salesplan {Smith, Jones} 1 April 79 {profit, strategy} status report {Jones, Frick} 17 June 85 {profit, personnel} doc Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 내포 릴레이션의 1NF 버전 doc의 1NF버전 flat-doc Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 내포 릴레이션의 4NF 분해 다음과 같은 다중값 종속을 가진다는 가정하에 flat-doc의 어색함을 제거한다: title →→ author title →→ keyword title → day month year 다음의 스키마를 사용해 flat-doc을 4NF로 분해한다: (title, author) (title, keyword) (title, day, month, year) Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 flat-doc의 4NF 분해 title author salesplan Smith salesplan Jones status report Jones status report Frick title keyword salesplan profit salesplan strategy status report profit status report personnel title day month year salesplan 1 April 89 status report 1 June 94 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 4NF 스키마에 가지는 문제점 4NF 설계는 사용자의 질의에 죠인을 포함하도록 한다. 4NF 릴레이션들의 조인으로 정의된 1NF 관계형 뷰 flat-doc: 사용자들이 죠인을 수행할 필요가 없음 그러나 튜플과 문서간의 1대1 대응을 잃게됨 여기서 내포 릴레이션 표현이 보다 더 자연스럽다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 복합형과 객체 지향성 관계형 모델에의 확장은 다음을 내포: 내포 릴레이션 복합형 세분화 (is-a 관계) 상속 객체 식별성 SQL 확장을 제공할 것이다. SQL-3 표준이 1997년 현재 개발중 SQL-3 초안인 XSQL 언어와 SQL의 Illustra 확장에 넓게 기초하여 설명 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 구조형과 집단형 새로운 형과 새로운 테이블을 정의한다. create type MyString char varying. create type MyDate (day integer, month char(10), year integer) create type Document (name MyString, author-list setof(MyString), date MyDate, keyword-list setof(MyString)) create table doc of type Document Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 구조형과 집단형 (계속) 일반적인 관계형 데이터베이스에서의 테이블 정의와는 달리, doc 테이블 정의에는 집합인 애트리뷰트와 MyDate 같은 구조적 애트리뷰트를 허용한다. E-R도의 복합 애트리뷰트와 다중값 애트리뷰트가 직접 표현되도록 한다. 위의 문장을 사용해 생성된 형은 데이터베이스에 저장된 스키마에 기록된다. 테이블을 직접 생성할 수 있다. create table doc (name MyString, author-list setof(MyString), date MyDate, keyword-list setof(MyString)) Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 형의 상속 사람을 위한 다음 형 정의를 고려해 보자. create type Person (name MyString, social-security integer) 상속을 이용해 student와 teacher 형을 정의한다. create type Student (degree MyString, department MyString) under Person create type Teacher (salary integer, department MyString) Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 형의 상속(계속) 조교에 관한 정보를 저장하고 두 부서의 존재간의 모순을 피하기 위해 as절을 사용한다. TeachingAssistant 형의 정의 create type TeachingAssistant under Student with (department as student-dept), Teacher with (department as teacher-dept) Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 테이블 계층에서의 상속 엔티티가 한번에 하나 이상의 테이블에 존재하도록 하여 객체에 여러 형을 갖도록 한다. people 테이블: create table people (name MyString, social-security integer) 그리고 students와 teachers 테이블을 다음과 같이 정의. create table students (degree MyString, department MyString) under people create table teachers (salary integer, department MyString) Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 테이블 상속 : 역할 테이블 상속은 역할을 모델링하는데 유용하다. 객체에 가장 특정한 형을 가지지 않고 여러 형을 가지도록 한다(형 상속과는 다름). 예를 들어, 하나의 객체가 students와 teachers 양쪽하에 있는 student-teachers 서브 테이블에 있지 않고 students와 teachers 서브 테이블에 동시에 있을 수 있다. 객체는 역할을 얻고 잃을 수 있다: 서브 테이블에 객체를 삽입/삭제함에 따름 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 테이블 상속: 일관성 요구 조건 서브 테이블과 수퍼 테이블상의 일관성 요구 조건 수퍼 테이블 people의 각 튜플은 각 students와 teachers 테이블의 기껏해야 하나의 튜플에 대응. students와 teachers의 각 튜플은 people의 정확히 한 튜플에 대응해야 함. 수퍼 테이블의 주 키 이외에 상속되는 애트리뷰트는 저장될 필요가 없으며, 주 키에 근거해 수퍼 키와의 죠인으로 유도될 수 있다. 형과 함께 다중 상속이 가능하다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 참조형 객체 지향 언어는 객체를 생성하고 참조하는 기능을 제공한다. Document형의 author-list 필드를 다음과 같이 재정의한다. author-list setof(ref(Person)) 이제 author-list는 Person 객체에 대한 참조 집합임. 테이블의 튜플들은 또한 그들에 대한 참조를 가질 수 있다. 테이블 people의 튜플에 대한 참조는 ref(people) 형을 갖는다. 주 키 또는 시스템이 생성한 튜플 식별자를 사용해 구현될 수 있다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 릴레이션 값 애트리뷰트 릴레이션명이 나타나는 어느곳에나 릴레이션을 평가하는 표현식이 나타나도록 함으로써, 확장된 SQL은 내포 릴레이션 구조의 장점을 취할 수 있다. 다음의 릴레이션 pdoc을 고려해 보자. create table pdoc ( name MyString, author-list setof(ref(people)), date MyDate, keyword-list setof(MyString)) Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 예제 질의 키워드중의 하나에 “database”를 가진 모든 문서를 찾아라. select name from pdoc where “database” in keyword-list 각 문서와 문서의 각 저자에 대해 “document-name, author-name”형의 쌍을 내포하는 릴레이션을 생성하라. select B.name, Y.name from pdoc as B, B.author-list as Y 각 문서의 이름과 저자의 수를 찾아라. select name, count(author-list) Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 경로 표현식 복합 애트리뷰트를 참조하기 위해 점 표기법이 참조와 함께 사용될 수있다. 앞의 people 테이블과 phd-student 테이블을 고려해 보자. create table phd-students (advisor ref(people)) under people 모든 박사과정 학생의 지도교수명을 찾아라. select students.advisor.name from phd-students pdoc 릴레이션내 문서들의 모든 저자명을 찾아라. select Y.name from pdoc.author-list as Y Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 비내포 내포 릴레이션을 제1정규형으로 변환 내포 릴레이션을 내포 릴레이션 또는 애트리뷰트로서 구조적형을 갖지 않는 하나의 보통 릴레이션으로 변환 doc 릴레이션을 비내포 하라(author-list와 keyword-list는 내포 릴레이션이고 name과 date는 내포되지 않음) select name, A as author, date.day, date.month, date.year, K as keyword from doc as B, B.author-list as A, B.keyword-list as K from절의 B는 doc에 범위를 한정하는 것으로 선언됨 A는 그 문서에 대한 author-list내의 저자로 한정 K는 문서의 keyword-list내의 키워드로 범위를 한정하는 것으로 선언됨 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 내포 1NF 릴레이션을 내포 릴레이션으로 변환하는 것. SQL내 그룹핑의 확장으로 수행될 수 있다. 릴레이션 flat-doc을 애트리뷰트 keyword에 대해 내포하라: select title, author, (day, month, year) as date, set(keyword) as keyword-list from flat-doc groupby title, author, date title author date keyword-list (day, month, year) salesplan Smith (1, April, 89) {profit, strategy} salesplan Jones (1, April, 90) {profit, strategy} status report Jones (17, June, 94) {profit, personnel} status report Frick (17, June, 95) {profit, personnel} Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 함수 주어진 문서에서 저자의 수를 반환하는 함수를 정의하라. create function author-count(one-doc Document) returns integer as select count(author-list) from one-doc 두명 이상의 저자를 가진 모든 문서명을 찾아라. select name from doc where author-count(doc) > 1 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 함수 (계속) 데이터베이스 시스템은 C 또는 C++와 같은 다른 언어로 작성된 함수의 사용을 허용한다. 장점: 많은 연산에 대해 보다 효율적이며 보다 표현력이 강하다. 단점 함수를 구현하는 코드가 데이터베이스 시스템내에 로드될 필요가 있다. 데이터베이스 구조의 우발적인 파손의 위험 부담 보안 위험 부담 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 복합 값과 복합 객체의 생성 doc 릴레이션으로 정의된 형의 튜플을 생성하라. (“salesplan”, set(“Smith”, “Jones”), (1, “April”, 89), set(“profit”, “strategy”)) 복합 애트리뷰트 date의 값은 괄호 내에 그의 애트리뷰트 day, month및 year를 나열해 생성한다. 집합 값 애트리뷰트 author-list와 keyword-list는 키워드 set 다음의 괄호 내에 그의 원소를 열거해 생성한다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 예제 질의 위의 튜플을 릴레이션 doc에 삽입하라. insert into doc values (“salesplan”, set(“Smith”, “Jones”), (1, “April”, 89), set(“profit”, “strategy”)) 질의에서 복합값을 사용할 수 있다. 문서명이 “salesplan”, “opportunities” 또는 “risks”중의 하나인 모든 문서명과 날짜를 찾아라. select name, date from doc where name in set(“salesplan”, “opportunities”, “risks”) Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 추가적인 개념 다중 집합값은 set을 multiset으로 대치해 생성할 수 있다. Constructor 함수를 사용해 새로운 객체를 생성한다. 형이 T인 객체의 constructor 함수는 T()이다. 형 T의 초기화되지 않은 새로운 객체를 생성해 그의 oid 필드를 채우고 객체를 반환한다. 객체의 필드는 초기화되어야 한다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 객체지향과 객체-관계 데이터이스의 비교 다양한 데이터베이스 시스템의 강점 요약 관계형 시스템: 단순한 데이터형, 질의, 높은 보호력 OODB에 근거한 영속 프로그래밍 언어: 복합 데이터형, 프로그래밍 언어와의 결합, 높은 성능 객체-관계 시스템: 복합 데이터형, 질의, 높은 보호력 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수