database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
ㆍCUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
CUBRID Q&A 583 게시물 읽기
No. 583
Q.OID 사용
작성자
김선우
작성일
2007-10-01 12:18
조회수
3,289

이전에 질문 드렸던 데이터 재사용에서

 

아래 2번 질문과 관련하여 CUBRID OID사용에 대해 질문드립니다.

 

관계형 구조로 하는 방법은 알겠습니다. 하지만 목적이 객체형으로 구현하는 것이라면 아래 예제의 경우 어떻게 해야 하나요?

 

Object와 property: Researcher (id, name), Professor (title), Student (), Project (name, participants)

 

1)Professor와 Student는 Researcher의 subtype이다.

CREATE CLASS researcher (id STRING, name STRING)

CREATE CLASS student UNDER researcher (title STRING)

CREATE CLASS professor UNDER researcher

 

2)Professor와 Student는 복수의 project에 참여할 수 있다.

CREATE CLASS project (name STRING, participants SEQUENCE(STRING))

 

3)이 상황에서, Steve (학생), Kathy (교수)라는 사람이 A102 프로젝트에 참여하고 있었는데, Peter (학생), Kathy로 참여자가 바꾸게 되면 SQL문을 어떻게 써주면 되나요? (단, student와 professor CLASS에 이미 steve, kathy, peter가 인스턴스로 더해져 있고 모두 unique하다는 전제.)

 

4)또 하나는 subtype에 아무리 instance를 더해도 supertype (여기서는 researcher)에는 보이지 않는데, 원래 그런가요? 그렇다면, 위의 예에서 researcher를 “Abstract Supertype”, 즉 생성은 되고 instance를 안 생기는 객체로 정의할 수 있나요? (이유는 실수로 상위객체에 instance를 생성했을 경우, 하위객체에 같은 값을 갖는 인스턴스를 생성하려고 하면 충돌이 나므로, 아예 상위객체는 인스턴스를 못 갖게 하는 방법도 있지 않을까 해서입니다.)

 

 

 

 

 

-----------------------------------------------------------------------------------

 

>안녕하세요

>2. 관계형구조를 가진다면 말씀하신 방법으로 구현을 하시면 됩니다. 물론 오브젝트 개념을 이용하여 프로젝트 정보에서 학생의 키가 아닌 학생을 참조하고(OID) 학생의 OID 를 프로젝트에서 참조하는 형태로 할 수도 있읍니다. 그러나 1 번에서도 말씀드렸듯이 알고계시는 관계형 구조로 구현하셔도 무리없이 잘 사용하실 수 있읍니다.

>

>>질문드립니다.

>>

>>2. 이미 있는 데이터를 재활용하고자 하면 어떻게 해야 하나요?

>>예: 스티브라는 학생이 프로젝트 A에도 참여하고, 나중에 생긴 프로젝트 B에도 참여를 한다면 ID(referential key)를 추가하지 않고, 스티브 정보를 프로젝트 B에 추가할 수 있나요?

 

이 글에 대한 댓글이 총 1건 있습니다.

안녕하세요.

일단 문의하신 내용에 대하여 알려드립니다.

1. project 에서 set of string 으로 이름을 그냥 가지고 있는 것을 전제하고(id 여도 상관없겠죠)

   일단 참여자 정보 삭제 : update project set participants - {\'Steve\'} where name = \'A102\'

   다른 참여자 정보 추가 : update project set participants + {\'Peter\'} where name = \'A102\'

2. 말씀드린것처럼 상속은 스키마만 상속이 됩니다. 데이터는 별개로 저장이 됩니다. 따라서 super 와 sub 는 별개의 테이블인 것처럼 관리가 됩니다. 다만 상속이 되어있으므로 상속관계에서 검색,삭제 등의 기능을 추가적으로 지원하고 super 에서 필드 삭제시 sub 에서 상속받은 필드가 삭제되는 등의 기능이 있읍니다.

 

>이전에 질문 드렸던 데이터 재사용에서

>

>아래 2번 질문과 관련하여 CUBRID OID사용에 대해 질문드립니다.

>

>관계형 구조로 하는 방법은 알겠습니다. 하지만 목적이 객체형으로 구현하는 것이라면 아래 예제의 경우 어떻게 해야 하나요?

>

>Object와 property: Researcher (id, name), Professor (title), Student (), Project (name, participants)

>

>1)Professor와 Student는 Researcher의 subtype이다.

>CREATE CLASS researcher (id STRING, name STRING)

>CREATE CLASS student UNDER researcher (title STRING)

>CREATE CLASS professor UNDER researcher

>

>2)Professor와 Student는 복수의 project에 참여할 수 있다.

>CREATE CLASS project (name STRING, participants SEQUENCE(STRING))

>

>3)이 상황에서, Steve (학생), Kathy (교수)라는 사람이 A102 프로젝트에 참여하고 있었는데, Peter (학생), Kathy로 참여자가 바꾸게 되면 SQL문을 어떻게 써주면 되나요? (단, student와 professor CLASS에 이미 steve, kathy, peter가 인스턴스로 더해져 있고 모두 unique하다는 전제.)

>

>4)또 하나는 subtype에 아무리 instance를 더해도 supertype (여기서는 researcher)에는 보이지 않는데, 원래 그런가요? 그렇다면, 위의 예에서 researcher를 “Abstract Supertype”, 즉 생성은 되고 instance를 안 생기는 객체로 정의할 수 있나요? (이유는 실수로 상위객체에 instance를 생성했을 경우, 하위객체에 같은 값을 갖는 인스턴스를 생성하려고 하면 충돌이 나므로, 아예 상위객체는 인스턴스를 못 갖게 하는 방법도 있지 않을까 해서입니다.)

>

>

>

>

>

>-----------------------------------------------------------------------------------

>

>>안녕하세요

>>2. 관계형구조를 가진다면 말씀하신 방법으로 구현을 하시면 됩니다. 물론 오브젝트 개념을 이용하여 프로젝트 정보에서 학생의 키가 아닌 학생을 참조하고(OID) 학생의 OID 를 프로젝트에서 참조하는 형태로 할 수도 있읍니다. 그러나 1 번에서도 말씀드렸듯이 알고계시는 관계형 구조로 구현하셔도 무리없이 잘 사용하실 수 있읍니다.

>>

>>>질문드립니다.

>>>

>>>2. 이미 있는 데이터를 재활용하고자 하면 어떻게 해야 하나요?

>>>예: 스티브라는 학생이 프로젝트 A에도 참여하고, 나중에 생긴 프로젝트 B에도 참여를 한다면 ID(referential key)를 추가하지 않고, 스티브 정보를 프로젝트 B에 추가할 수 있나요?

 

남재우님이 2007-10-01 13:08에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
586Q.인스턴스 메소드 호출하기 [1]
InoS
2007-10-01
3252
585Q.DB 파일 사이즈 [2]
김주희
2007-10-01
3276
584Q.트랜잭션 설정 [1]
김주희
2007-10-01
3231
583Q.OID 사용 [1]
김선우
2007-10-01
3289
582Q.NOTNULL 제약조건 해제 관련 재문의 [2]
안성민
2007-10-01
3339
581Q.상속과 분할의 차이점이 있나요? [1]
초짜
2007-10-01
2749
580Q.예약어 목록만 볼수있나요? [1]
초짜
2007-10-01
3064
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.023초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다