2010-06-14 2 views
0

필자는 전화 청구 데이터를 추적하기 위해 Oracle 10g Express를 사용하여 Object Relational 데이터베이스를 구현해야하는 숙제를 받았습니다. 호출, 텍스트 및 데이터의 하위 클래스가있는 통신의 수퍼 클래스가 있습니다. 다양한 테이블에서 적절한 데이터를 찾을 수 있도록 이러한 테이블을 적절하게 채우는 데 걸리는 부분을 치고 있습니다.Object Relational 데이터베이스에 테이블을 올바르게 채우십시오.

내 유형 및 테이블은 같은 선언 : 나는 서브 클래스 중 하나에 insert 데이터를하려고하면 그 항목이 상위 클래스에 나타나지 않습니다

create type CommunicationType as object (
    -- column names here 
) not final; 
create type CallType under CommunicationType (
    -- column names here 
); 
create type TextType under CommunicationType (
    -- column names here 
); 
create type DataType under CommunicationType (
    -- column names here 
); 
create table Communications of CommunicationType (
    -- Primary and Foreign key constraints here 
); 
create table Calls of CallType; 
create table Texts of TextType; 
create table Datas of DataType; 

. 마찬가지로 insert을 수퍼 클래스에 추가하면 해당 하위 클래스에 표시되지 않습니다. 예를 들어 insert into Calls values (CallType(-- Values --));은 통신에 데이터를 표시하지 않습니다. insert into Communications values (CallType(-- Values --));도 전화에서 무엇이든 표시하지 않습니다.

내가 뭘 잘못하고 있니?

+1

무엇이 잘못 되었습니까? 당신은 SET 기반 세계에서 OOP를 생각하고 있어요 –

+0

@OMG 조랑말 : 나는 당신을 믿는다. :) 그렇다면 두 테이블에서 정보에 액세스 할 수 있어야한다는 오해입니까? 아니면 테이블 설정 방법을 오해할까요? – chaosTechnician

답변

1

네 개의 별도 테이블을 만들었습니다. 한 테이블에 행을 삽입하면 다른 테이블에서 행을 볼 필요가 없습니다. CallType, TextTypeDataType에 따라

귀하의 테이블 CommunicationType에서 자신의 구조와 동작을 상속하지만,이 데이터가 복제되는 것을 의미하지 않는다. 아마도 테이블 Communications이 필요 없을 것 같습니다.

< 옆는 개인적으로, 나는 순수한 관계형 모델을 사용하여 일을 모델링 완전히 그냥 객체 유형을 사용하여 포기하려는 Oracle 데이터베이스를 사용하고 있지만, 아마 그냥 날의 경우> - 그리고 당신을 도움이되지 않습니다 당신의 선생님이 당신이 "객체 관계형"데이터베이스를 구현할 것을 기대하기 때문에 ... :)

+0

'통신'테이블을 건너 뛰는 것이 좋은 방법 인 경우이를 처리 할 수 ​​있습니다. 따라서 모든 통신 (테이블 당 하나)에 대한 정보를 얻으려면 3 개의 쿼리가 필요합니까? – chaosTechnician

+0

3 개의 쿼리가 필요하지 않습니다. 단일 쿼리로 여러 테이블에서 데이터를 가져올 수 있습니다.이 경우 UNION을 사용합니다. –

+0

확인. 나는 그걸로 갈거야. 감사! – chaosTechnician

관련 문제