이전에 질문 드렸던 데이터 재사용에서
아래 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에 추가할 수 있나요?
|