<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) ; ?
答案 0 :(得分:1)
这不是特例。此处,表bid
的主键issues
引用了表bid
的列books
。这仅表示bid
的{{1}}只包含issues
bid
中存在的值。它将作为表books
的主键,因此它将具有唯一值,并且它的值将仅限于issues
表中包含的值。
因此,它只是表示它是表books
中值的主键值。
答案 1 :(得分:0)
它与任何其他references
语句相同。这就是主键也引用了Books(bid)
。
我可以想到为什么会使用这种类型的构造的两个原因。首先,“问题”实体可以是“书”实体的子集。这样就可以将其他特定问题的列存储在issues
中,而不会使books
混乱。它还允许外键issues
或books
。
第二个原因是这是实现垂直分区的一种方法。当表有很多列时会发生这种情况。出于性能原因,您希望将它们分成不同的存储区域。这类似于列式数据库所做的,但它具有额外主键的开销。