oracle数据库查询的含义是什么:主键引用t_name(col_name)?

时间:2015-07-09 11:22:44

标签: sql database oracle

<sidebar> templates

我有3个表,前两个表很简单但是第三个表的含义是什么,因为我知道外键引用create table books ( bid number(5) primary key, name varchar2(30) ); create table members ( mid number(5) primary key, name varchar2(30) ); create table issues ( bid number(5) primary key references books(bid), mid number(5) references members (mid) ); 但主键引用的含义是什么t_name(col_name)和col_name引用t_name(col_name) ; ?

2 个答案:

答案 0 :(得分:1)

这不是特例。此处,表bid的主键issues引用了表bid的列books。这仅表示bid的{​​{1}}只包含issues bid中存在的值。它将作为表books的主键,因此它将具有唯一值,并且它的值将仅限于issues表中包含的值。

因此,它只是表示它是表books中值的主键值。

答案 1 :(得分:0)

它与任何其他references语句相同。这就是主键也引用了Books(bid)

我可以想到为什么会使用这种类型的构造的两个原因。首先,“问题”实体可以是“书”实体的子集。这样就可以将其他特定问题的列存储在issues中,而不会使books混乱。它还允许外键issuesbooks

第二个原因是这是实现垂直分区的一种方法。当表有很多列时会发生这种情况。出于性能原因,您希望将它们分成不同的存储区域。这类似于列式数据库所做的,但它具有额外主键的开销。