將單個表拆分爲多個時,通常情況下外鍵引用的是來自不同行的主鍵?
例如
源表中的數據是
跨行的fk pk關係
id1 id2 name1 name2
10 1 a10 b1
9 8 a11 b2
8 3 a12 b3
3 9 a14 b4
1 10 a15 b5
所以,當我創建主鍵表作爲
create table pk_table (id1 integer primary key , name1 varchar2(20))
和
create table fk_table (id2 integer, name2 varchar2(20) foreign key(id2) references pk_table(id1))
所以,當我分裂數據外鍵表按表格:
pk_table數據是:
id1 name1
10 a10
9 a11
8 a12
3 a14
1 a15
鍵和外鍵數據是
id2 name2
1 b1
8 b2
3 b3
9 b4
10 b5
所以,你見過這些情況下,我們沒有FK指同一行PK源表格?
編輯:更新表中的數據,使之更加有效。
請仔細閱讀Korth的書「數據庫系統概念」。還可以在接下來的幾天閱讀您在數據庫中發現和理解的任何內容。這不是一個真正的問題。請確定你的問題是什麼。 – Rachcha 2013-04-04 13:36:57
'1,b1'絕對**應該存在於'fk_table'中。如果原始表中的記錄不存在,您還沒有正確轉換記錄。如果沒有,10,a10連接到了什麼?另外,在創建表'fk_table'時,您仍然應該將'id2'識別爲主鍵,因爲它是該表的主鍵。 – mcalex 2013-04-04 13:39:24
如果FK沒有引用任何PK,那麼它不是FK本身。 – Santhosh 2013-04-04 13:42:57