Plsql 如何在Oracle 11g中使用嵌套表和创建的用户定义类型建立多对多关系?

Plsql 如何在Oracle 11g中使用嵌套表和创建的用户定义类型建立多对多关系?,plsql,oracle11g,many-to-many,user-defined-types,Plsql,Oracle11g,Many To Many,User Defined Types,我正在使用Oracle 11g。我正在为图书馆做一个简单的学生项目。我必须创建ORDB,所以我将类型创建为对象。我的图书类型和作者类型如下: CREATE Type AuthorT AS OBJECT( AuthorID NUMBER, AuthorName VARCHAR(100), PlaceID ref PlaceT -- collection of books ); CREATE TYPE BookT AS OBJECT

我正在使用Oracle 11g。我正在为图书馆做一个简单的学生项目。我必须创建ORDB,所以我将类型创建为对象。我的图书类型和作者类型如下:

CREATE Type AuthorT AS OBJECT(
        AuthorID NUMBER,
        AuthorName VARCHAR(100),
        PlaceID ref PlaceT
        -- collection of books
);


CREATE TYPE BookT AS OBJECT(
        BookID NUMBER,
        ISBN Varchar(100),
        BookName VARCHAR(200),
        PublishedDate Date,
        GenreID ref GenreT,
        PublisherID ref PublisherT
        -- collection of authors
    );
CREATE TYPE Author AS TABLE OF AuthorT;
CREATE TYPE Book AS TABLE OF BookT;
现在我必须从这些类型创建表。我接下来的问题是:我必须做以下几件事:

CREATE Type AuthorT AS OBJECT(
        AuthorID NUMBER,
        AuthorName VARCHAR(100),
        PlaceID ref PlaceT
        -- collection of books
);


CREATE TYPE BookT AS OBJECT(
        BookID NUMBER,
        ISBN Varchar(100),
        BookName VARCHAR(200),
        PublishedDate Date,
        GenreID ref GenreT,
        PublisherID ref PublisherT
        -- collection of authors
    );
CREATE TYPE Author AS TABLE OF AuthorT;
CREATE TYPE Book AS TABLE OF BookT;
但是,对我来说,这看起来像一个圆圈,作者有书,书有作者,所以我不能创建这些我想像嵌套表一样使用的表

我不确定这个问题是否清楚,但我希望有人能帮助我。我不会这样做,但我必须这样做,因为这是我的家庭作业。
欢迎任何帮助。谢谢。

在对象关系设计中,这是您希望使用Oracle ORDB所做的,您必须存储与哪个作者相关的书籍

这意味着您必须有一个将
BookId
AuthorId
关联的表:

CREATE TABLE BOOK_AUTHOR (
  BookId NUMBER,
  AuthorId NUMBER
);

这允许对有多个作者的书籍进行核算。

这似乎是一种纯粹面向对象的设计。在对象关系设计中,您会有一个表,其中包含BookT对象,另一个表包含AuthorT对象,另一个表表示书籍和作者之间的关系。分享和享受。是的,我知道我可以用一个联接表来实现这一点,但随后我在我的普通图书表中松开了嵌套表,其中包含BookT,而Author表中包含Author,这是我@BobJarvis的主要问题。