我實際上想要在Oracle的ERD中實現兩個表之間的強制一對一關係。這兩張表格是州長和州長。一個州長只能管理一個州,一個州必須有一個且只有一個省長。我想在Oracle中實現它。我寫了如下查詢一對一關係約束
create table gov
(gid number(3) ,name varchar2(100),
constraint gov_pk primary key (gid)
);
create table state
(
sid number(3) ,
name varchar2(100),
gid number(3),
constraint state_pk primary key (sid),
constraint gov_state_fk foreign key (gid) references gov(gid),
constraint state_uk unique(gid,name)
);
但這似乎並不奏效。我找不到任何替代方法。請幫我解決一下這個。我會感謝你。請讓我知道爲什麼沒有建立一對一的關係。
你可能想要一個唯一的關鍵只是在狀態表中的gid –
該模型沒有多大意義。你可能有一個「狀態」表,這可能是固定的(在大多數情況下,至少在一定的時間內)。你還想要什麼 - 一張總督表,上面有個人資料,如出生日期和姓名?如果一個人不再是總督,你會從桌面上刪除它們嗎?如果不是,那麼它不是一對一的關係 - 一方面你可能有「零或一個」。如果你真的需要永遠保持一對一,爲什麼你需要兩張桌子?在State表中寫下所有的Governor屬性。 – mathguy
謝謝@mathguy您的回覆。它確實幫助我消除了很多混亂。但是,我仍然想問,如果我從表中刪除一個管理員,爲什麼它不是一對一的關係? –