【问题标题】:How to create linking/joining table in Oracle database如何在 Oracle 数据库中创建链接/连接表
【发布时间】:2012-09-14 16:46:55
【问题描述】:

我是第一次创建模型数据库。我创建了由多对多关系组成的关系模型。在关系模型中,它有一个单独的链接/连接表。创建数据库时,我还需要将此链接表创建为单独的表吗?或者我可以将每个外键放在多对多表中吗?

如果我需要一个单独的表,如何通过语法将这些表链接在一起?

谢谢

【问题讨论】:

  • 你能展示一下关系模型吗?

标签: sql oracle database-design data-modeling intersection


【解决方案1】:

我们只能以一对多的方式构建外键。所以你需要这个交集表。这是我们在将逻辑数据模型转换为物理数据模型时引入的一种附加结构。

交集表通常只有两列,即要以 M:N 方式链接的两个表的引用键(也可能有一些元数据列来保存链接的属性)。它通常在两列上有一个复合主键,以避免冗余。它在每个被引用的表上都有一个外键,它必须在被引用的列上定义了主键。

语法很明显;此示例构建两个主表和一个仅定义键的交集。

create table m1 (
   id number not null
   , constraint m1_pk primary key (id) );


create table m2 (
   id number not null
   , constraint m2_pk primary key (id) );


create table intersection_t (
   m1_id number not null
   , m2_id number not null
   , constraint int_pk primary key (m1_id, m2_id)
   , constraint int_m1_fk foreign key (m1_id)
         references m1 (id)
   , constraint int_m2_fk foreign key (m2_id)
         references m2 (id)
 );

【讨论】:

    猜你喜欢
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    • 2022-10-16
    • 2020-05-27
    • 2015-02-27
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    相关资源
    最近更新 更多