Sql oracle数据库查询的含义是什么:主键引用t_名称(col_名称)?

Sql oracle数据库查询的含义是什么:主键引用t_名称(col_名称)?,sql,database,oracle,Sql,Database,Oracle,我有3个表,前两个表很简单,但第三个表的含义是什么,因为我知道外键引用t\u name(col\u name)

我有3个表,前两个表很简单,但第三个表的含义是什么,因为我知道外键引用
t\u name(col\u name) 这不是特例。此处,表
issues
的主键
bid
引用表
books
的列
bid
。这仅仅意味着
发行的
bid
将只包含
书籍的
bid
中存在的那些值。它将充当表
问题
的主键,因此它将具有唯一的值,并且其值将限于
书籍
表中包含的值


因此,它只是意味着它是主键值,其值在表
books

中,它与任何其他
参考
语句相同。这意味着主键还引用了
Books(bid)

我可以想出两个理由来解释为什么会使用这种结构。首先,“问题”实体可以是“账簿”实体的子集。这将允许在
问题
中存储额外的问题特定列,而不会使
书籍
杂乱无章。它还允许外键访问
问题
书籍


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

这与PL/SQL或mysql有什么关系?查看这个@GoodbandShugh:mysql手册对Oracle问题没有真正的帮助(而且mysql会忽略上述外键约束)@在编辑问题之前,一个带有\u no\u名称的\u horse\u也用mysql进行了标记。我知道第一个和第二个没有主键引用表成员的中间部分意味着不需要具有唯一值,并且可以从问题表中的成员表复制值。是否正确?感谢您的帮助。
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)
);