看着从Java Persistence with Hibernate一个例子,有2个表:重复主键?
create table USERS (
USER_ID bigint not null primary key,
USERNAME varchar(15) not null unique,
NAME varchar(50) not null,
...
)
create table BILLING_DETAILS (
BILLING_DETAILS_ID bigint not null primary key,
ACCOUNT_NUMBER VARCHAR(10) not null unique,
ACCOUNT_NAME VARCHAR(50) not null,
ACCOUNT_TYPE VARCHAR(2) not null,
USER_ID bigint foreign key references USERS
)
书中提到,以下指示many-to-one
关系:
USER_ID bigint foreign key references USERS
其次,它说,下面的SQL语句显示one-to-one
协会:
USER_ID bigint unique foreign key references USERS
BILLING_DETAILS_ID bigint primary key foreign key references USERS
据我所知,第一条语句表示BILLING_DETAILS
表中的USER_ID
将是唯一的,并引用USERS
表的主键,即references USERS
。
第二个使BILLING_DETAILS_ID
为primary_key并引用USERS
的主键。
如果我们使用了这两个one-to-one
关系,那么我们会有重复的字段:USER_ID
和BILLING_DETAILS_ID
,因为它们实际上是相同的数据?
“主键”(即“billiing_details_id”)与唯一列之间存在差异。只有一列(或一组列)可以是主键。 –
@GordonLinoff,所以,执行两个SQL 1对1语句会导致重复的字段,但不同之处在于只有'BILLING_DETAILS_ID'将是主键? –
这些字段可能不是重复的。上面的代码没有指定如何填充值。如果您使主键自动递增,那么它们会非常相似(比如竞争条件可能会导致值的差异)。 –