我正在为我的 Java EE 应用程序检查 Apache Derby 的一些新特性。IntelliJ 为创建简单的 DB 模式提供了有用的快捷方式。点击几下后,我有
create table "Names"
(
id int generated always as identity
constraint NAMES_PK
primary key
);
对我来说,这应该为 PK 创建一个适当的查找表、散列或映射。
如果我添加 PK 需要唯一的标准(?)
create unique index NAMES_ID_UINDEX
on "Names" (id);
所以我的问题是,这会改变 PK 查找的实现方式吗?文档对此并不清楚。这是德比 10.15.2.0。
我无法解析您的问题,但我会尽力回答。
您在一个句子中将数据库模型的逻辑和物理方面混为一谈。根据定义,主键唯一标识关系中的行——但这是一个逻辑结构。根据特定的 DBMS,PK 可能是纯粹的声明性的,因此引擎不会以任何方式强制执行,或者它可以由强制执行其属性(没有空值和唯一性)的东西支持,例如
NOT NULL
约束和唯一指数。后者是德比的情况,文档似乎对此很清楚:因此,单独创建唯一索引是多余的。某些 DBMS,但不是 Derby,甚至会阻止您创建与现有索引具有相同列列表的索引。
不会。您将拥有两个相同的索引,优化器将在适当的时候选择其中一个,并且效果相同。