0

我有一个家庭作业,要求我使用 Oracle 10g Express 实现一个对象关系数据库来跟踪电话计费数据。我有一个通信超类,其中包含呼叫、文本和数据的子类。我在正确填充这些表时遇到了麻烦,以便我可以在各种表中找到适当的数据。

我的类型和表声明如下:

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 -- ));在 Communications 中不显示任何数据。insert into Communications values (CallType( -- Values -- ));通话中也不显示任何内容。

我究竟做错了什么?

4

1 回答 1

1

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

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

< 旁白 >就个人而言,如果我使用的是 Oracle 数据库,我会完全放弃使用对象类型,而只是使用纯关系模型来建模,但这可能只是我个人的 - 并且对你没有多大帮助,因为你的老师似乎希望您实现“对象关系”数据库... :)

于 2010-06-15T00:44:22.807 回答