看着從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'將是主鍵? –
這些字段可能不是重複的。上面的代碼沒有指定如何填充值。如果您使主鍵自動遞增,那麼它們會非常相似(比如競爭條件可能會導致值的差異)。 –