oracle对象中的关系?
如何在oracle对象中建立1到n和n到n的关系?除非“oracle对象”是某种类型的产品(大写字母有助于区分普通单词和产品名称),否则您可以使用与在任何其他DBMS中相同的方法进行此操作 对于1:n关系:oracle对象中的关系?,oracle,object,Oracle,Object,如何在oracle对象中建立1到n和n到n的关系?除非“oracle对象”是某种类型的产品(大写字母有助于区分普通单词和产品名称),否则您可以使用与在任何其他DBMS中相同的方法进行此操作 对于1:n关系: CREATE TABLE Master ( PK_Column <sometype> NOT NULL PRIMARY KEY, ... ); CREATE TABLE Detail ( FK_Column <sometype> N
CREATE TABLE Master
(
PK_Column <sometype> NOT NULL PRIMARY KEY,
...
);
CREATE TABLE Detail
(
FK_Column <sometype> NOT NULL REFERENCES Master,
OtherColumn <anothertype> NOT NULL,
PRIMARY KEY (FK_Column, OtherColumn),
...
);
CREATE TABLE TableN
(
N_Identifier <sometype> NOT NULL PRIMARY KEY,
...
);
CREATE TABLE TableM
(
M_Identifier <anothertype> NOT NULL PRIMARY KEY,
...
);
CREATE TABLE CrossRef
(
N_Identifier <sometype> NOT NULL REFERENCES TableN,
M_Identifier <anothertype> NOT NULL REFERENCES TableM,
PRIMARY KEY (N_Identifier, M_Identifier),
...
);
createtablemaster
(
PK_列不为空主键,
...
);
创建表详细信息
(
FK_列不为空引用主节点,
OtherColumn不为空,
主键(FK_列、其他列),
...
);
对于n:m关系:
CREATE TABLE Master
(
PK_Column <sometype> NOT NULL PRIMARY KEY,
...
);
CREATE TABLE Detail
(
FK_Column <sometype> NOT NULL REFERENCES Master,
OtherColumn <anothertype> NOT NULL,
PRIMARY KEY (FK_Column, OtherColumn),
...
);
CREATE TABLE TableN
(
N_Identifier <sometype> NOT NULL PRIMARY KEY,
...
);
CREATE TABLE TableM
(
M_Identifier <anothertype> NOT NULL PRIMARY KEY,
...
);
CREATE TABLE CrossRef
(
N_Identifier <sometype> NOT NULL REFERENCES TableN,
M_Identifier <anothertype> NOT NULL REFERENCES TableM,
PRIMARY KEY (N_Identifier, M_Identifier),
...
);
创建表格表格
(
N_标识符不为空主键,
...
);
创建表格表格
(
M_标识符不为空主键,
...
);
创建表交叉引用
(
N_标识符非空引用表N,
M_标识符非空引用表M,
主键(N_标识符、M_标识符),
...
);
SQL语法或多或少与DBMS无关(它应该关闭SQL标准语法)。除非“Oracle对象”是某种产品(大写字母有助于区分普通单词和产品名称),否则您的操作方式与在任何其他DBMS中的操作方式相同 对于1:n关系:
CREATE TABLE Master
(
PK_Column <sometype> NOT NULL PRIMARY KEY,
...
);
CREATE TABLE Detail
(
FK_Column <sometype> NOT NULL REFERENCES Master,
OtherColumn <anothertype> NOT NULL,
PRIMARY KEY (FK_Column, OtherColumn),
...
);
CREATE TABLE TableN
(
N_Identifier <sometype> NOT NULL PRIMARY KEY,
...
);
CREATE TABLE TableM
(
M_Identifier <anothertype> NOT NULL PRIMARY KEY,
...
);
CREATE TABLE CrossRef
(
N_Identifier <sometype> NOT NULL REFERENCES TableN,
M_Identifier <anothertype> NOT NULL REFERENCES TableM,
PRIMARY KEY (N_Identifier, M_Identifier),
...
);
createtablemaster
(
PK_列不为空主键,
...
);
创建表详细信息
(
FK_列不为空引用主节点,
OtherColumn不为空,
主键(FK_列、其他列),
...
);
对于n:m关系:
CREATE TABLE Master
(
PK_Column <sometype> NOT NULL PRIMARY KEY,
...
);
CREATE TABLE Detail
(
FK_Column <sometype> NOT NULL REFERENCES Master,
OtherColumn <anothertype> NOT NULL,
PRIMARY KEY (FK_Column, OtherColumn),
...
);
CREATE TABLE TableN
(
N_Identifier <sometype> NOT NULL PRIMARY KEY,
...
);
CREATE TABLE TableM
(
M_Identifier <anothertype> NOT NULL PRIMARY KEY,
...
);
CREATE TABLE CrossRef
(
N_Identifier <sometype> NOT NULL REFERENCES TableN,
M_Identifier <anothertype> NOT NULL REFERENCES TableM,
PRIMARY KEY (N_Identifier, M_Identifier),
...
);
创建表格表格
(
N_标识符不为空主键,
...
);
创建表格表格
(
M_标识符不为空主键,
...
);
创建表交叉引用
(
N_标识符非空引用表N,
M_标识符非空引用表M,
主键(N_标识符、M_标识符),
...
);
SQL语法或多或少与DBMS无关(它应该关闭SQL标准语法)。[EDIT]我相信问题是指OLE的Oracle对象(OO40)[/EDIT]
在此示例中,考虑Orror和LynIn项目之间的一对多关系。(一个订单可能有零个、一个或多个行_项,而一个行_项正好与一个订单关联。)我们跳过了所有建模步骤,得到了定义可能是什么样子的shell
一种选择是使用参考:create type order_typ as object
( id integer
, ...
);
create table order_obj_table of order_type;
create table line_item
( order_ref ref order_typ scope is order_obj_table
, ...
);
另一种选择是使用嵌套表(称为集合类型):
[编辑]
增编:
托尼·安德鲁斯(相当合理地)问人们为什么要使用“嵌套表”。Tony指出,生成的数据库结构将“更难访问”,这意味着(我认为)所需的查询结构是“非标准”SQL
坦白地说,我想不出使用嵌套表的好理由,但我必须至少承认OO4O确实提供了对嵌套表的支持
为什么会选择使用OO4O呢?它(表面上)提供了针对Oracle数据库的改进性能,这得益于本机驱动程序,避免了ODBC或OLE带来的开销。这也是一项专门针对Oracle的技术,针对OO4O接口编写应用程序意味着该应用程序将基本上绑定到Oracle数据库,如果不要求该应用程序支持多个(可互换的)数据库引擎,这可能是可以的
有关OO4O的更多信息和示例,请访问Oracle网站:
[/EDIT][EDIT]我相信这个问题是指OLE的Oracle对象(OO40)[/EDIT]
在此示例中,考虑Orror和LynIn项目之间的一对多关系。(一个订单可能有零个、一个或多个行_项,而一个行_项正好与一个订单关联。)我们跳过了所有建模步骤,得到了定义可能是什么样子的shell
一种选择是使用参考:create type order_typ as object
( id integer
, ...
);
create table order_obj_table of order_type;
create table line_item
( order_ref ref order_typ scope is order_obj_table
, ...
);
另一种选择是使用嵌套表(称为集合类型):
[编辑]
增编:
托尼·安德鲁斯(相当合理地)问人们为什么要使用“嵌套表”。Tony指出,生成的数据库结构将“更难访问”,这意味着(我认为)所需的查询结构是“非标准”SQL
坦白地说,我想不出使用嵌套表的好理由,但我必须至少承认OO4O确实提供了对嵌套表的支持
为什么会选择使用OO4O呢?它(表面上)提供了针对Oracle数据库的改进性能,这得益于本机驱动程序,避免了ODBC或OLE带来的开销。这也是一项专门针对Oracle的技术,针对OO4O接口编写应用程序意味着该应用程序将基本上绑定到Oracle数据库,如果不要求该应用程序支持多个(可互换的)数据库引擎,这可能是可以的
有关OO4O的更多信息和示例,请访问Oracle网站:
[/EDIT]很好,但是你能用第二种方法发送一个例子吗?为什么要这样做?嵌套表在实践中并不是一个好主意-它们像普通表一样存储在封底下,但其方式会使它们更难访问。很好,但是您可以使用第二种方法发送一个示例吗?为什么要这样做?嵌套表在实践中不是一个好主意-它们像普通表一样存储在封面下,但其存储方式使它们更难访问。很好的示例:很好的示例: