正确填充对象关系数据库中的表

时间:2010-06-14 18:45:04

标签: sql oracle10g object-relational-model

我有一项家庭作业,要求我使用Oracle 10g Express实现对象关系数据库来跟踪电话计费数据。我有一个通信的超类,包括Call,Text和Data的子类。我正在填写这些表格,以便我可以在各个表格中找到适当的数据。

我的类型和表格声明如下:

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进入超类,它不会出现在相应的子类中。例如,insert into Calls values (CallType( -- Values -- ));未在通讯中显示任何数据。 insert into Communications values (CallType( -- Values -- ));也没有在通话中显示任何内容。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您已创建了四个单独的表。如果在一个表中插入一行,则没有理由期望在另一个表中看到您的行。

基于CallTypeTextTypeDataType的表格会从CommunicationType继承其结构和行为,但这并不意味着数据会被复制。我怀疑你可能根本不需要表Communications

<除了> 就个人而言,如果我正在使用Oracle数据库,我会完全放弃使用对象类型,只使用纯粹的Relational模型对事物进行建模,但这可能只是我 - 并且对你没有多大帮助你的老师似乎希望你实现一个“对象关系”数据库......:)