【发布时间】:2011-07-29 22:26:54
【问题描述】:
以下是我拥有的对象类型。基本上我有一个人表和一个子表作为人表的嵌套表。
我有一个与子表(嵌套)有 M:N 关系的 School 表。所以我正在创建一个中间表来插入 child_school 数据。
如何创建中间表并插入数据?
create type school_t as object(
sid number(5,2),
name varchar(20))
/
create type child_t as object(
cid number(5,2),
name varchar(20))
/
create type childtable_t as table of child_t
/
create type person_t as object(
pid number(5,2),
name varchar(20),
child childtable_t)
/
create table person_tab of person_t(
pid primary key
)nested table child store as child_table
/
create table school_tab of school_t
/
--有一些问题。以下不起作用。
create type school_child_t as object(
cid ref person_t,
sid ref school_t)
/
create table school_child_tab of school_child_t(
cid references person_tab,
sid references school_tab
)
/
--这就是我想做的事情
create table school_child_tab(
cid number(5,2) references childtable_t,
sid number(5,2) references school_tab
)
/
cid 引用应该是嵌套表中的 cid。问题是指它。
【问题讨论】:
-
为什么 PERSON 有一个 CHILDTABLE_T 的嵌套表?事实上,您的整个数据模型似乎有点混乱。也许您应该解释您要建模的内容,而不是要求我们解释您的代码?
-
@APC:这是我尝试将弱实体理解为实体表并从外部引用它。我添加了一张图片,以便您了解。
-
但是为什么一个人可以有多个孩子呢?如果 CHILD 是 PERSON 的子类型,那么这是 1:1 关系,而不是 !:M。如果 PERSON 的意思是 TEACHER 或 PARENT,那么你的模型在其他方面是错误的。
-
是的,我认为你是正确的。应该是 1:1。谢谢!
标签: sql oracle nested-table