我第一次创建了一个模拟数据库。我已经创建了由多对多关系组成的关系模型。在关系模型中,它有一个单独的链接/连接表。在创建数据库时,我是否也需要将此链接表创建为一个单独的表?或者我可以只把每个外键放在多对多的表中?
如果我需要一个单独的表,我如何通过语法将这些表链接在一起?
谢谢
发布于 2012-09-22 16:27:31
我们只能以一对多的方式构建外键。所以你需要这个交叉表。它是我们在将逻辑数据模型转换为物理数据模型时引入的一种附加结构。
交叉表通常只有两列,即您希望以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)
);
https://stackoverflow.com/questions/12544472
复制相似问题