2010-06-14 1 views
0

J'ai une tâche qui nécessite que j'utilise Oracle 10g Express pour implémenter une base de données Object Relational pour suivre les données de facturation du téléphone. J'ai une super classe de communications avec des sous-classes d'appel, de texte et de données. Je suis un hic avec remplir correctement ces tables afin que je puisse trouver les données appropriées dans les différentes tables.Remplissage correct des tables dans une base de données Object Relational

Mes types et les tableaux sont déclarés comme tels:

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; 

Lorsque je tente de insert données dans l'une des sous-classes, son entrée ne figure pas dans la superclasse. De même, si insert dans la superclasse, il n'apparaît pas dans la sous-classe appropriée. Par exemple, insert into Calls values (CallType(-- Values --)); n'affiche aucune donnée dans Communications. Le insert into Communications values (CallType(-- Values --)); ne montre rien non plus dans les appels.

Qu'est-ce que je fais mal?

+1

Qu'est-ce qui ne va pas? Vous pensez OOP dans un monde basé sur SET –

+0

@OMG Poneys: Je vous crois. :) Alors, est-ce que j'ai mal compris que je devrais être capable d'accéder à l'information à partir des deux tableaux ou suis-je horriblement mal comprendre * comment * mettre en place les tables? – chaosTechnician

Répondre

1

Vous avez créé quatre tables distinctes. Si vous insérez une ligne dans une table, il n'y a aucune raison de s'attendre à voir votre ligne dans une autre table.

Vos tables basées sur CallType, TextType et DataType héritent de leur structure et le comportement de CommunicationType, mais cela ne signifie pas que les données sont répliquées. Je suppose que vous n'avez probablement pas besoin du tableau Communications.

< aside> Personnellement, si j'utilise la base de données Oracle Je Renoncer à l'aide des types d'objets modèle entièrement et juste la chose en utilisant un modèle purement relationnel, mais c'est probablement juste moi - et ne vous aide pas beaucoup puisque votre professeur semble s'attendre à ce que vous implémentiez une base de données "Object Relational" ... :)

+0

Si ignorer la table 'Communications' est la voie à suivre, je peux gérer cela. Donc, il faudrait 3 requêtes pour obtenir des informations sur toutes les communications (une par table)? – chaosTechnician

+0

Vous n'avez pas besoin de 3 requêtes - une seule requête peut extraire des données de plusieurs tables, dans ce cas en utilisant UNION. –

+0

Ok. Je vais aller avec ça. Merci! – chaosTechnician

Questions connexes