0
A
回答
2
一組列,其包括在一個表的外鍵必須是指等效的一組列的表中的任一與主鍵或唯一鍵約束。
您肯定可以在同一個表中引用相同的PK或UK的2個或更多個FK。這建立了兒童記錄與多於一個父記錄相關的關係 - 例如,代表生物學孩子的記錄可能會有FK記錄給他們的父親以及他們的母親。
請注意,一個獨特的索引不足以達到此目的;需要一個唯一的約束,否則你會得到「ORA-02270:這個列表沒有匹配的唯一或主鍵」。
0
「如果有上指的是相同的主鍵相同的表中的兩個外鍵? 」
任意數量的子表可以參考父表。在某些情況下,子表可能在同一個父項上擁有多個外鍵。例如,任何形式的體育比賽都有相同類型的對手 - 球員,球隊等等。因此,一場比賽我將擁有該實體的兩個實例,所以子表將具有兩列,其中外鍵引用相同的主鍵。
create table player (
player_id number not null primary key
, name varchar2(30) not null unique
);
create table match (
match_id number not null primary key
, player_1 number not null
, player_2 number not null
, match_played date not null
, result varchar2(10)
, constraint match_player1_fk foreign key (player_1) references player
, constraint match_player2_fk foreign key (player_2) references player
);
外鍵可以引用唯一約束而不是主鍵。但這不是標準做法。按照慣例使用外鍵來執行候選密鑰 - 業務密鑰 - 並且這些並不總是適合用作外鍵。
例如在我的例子中,PLAYER.NAME
是一個唯一的鍵:每個玩家必須有一個獨特的名字。但是,使用NAME
作爲MATCH
上的外鍵是不合適的,因爲人們可以更改其名稱。使用合成主鍵PLAYER_ID
更爲方便,因爲它在PLAYER
記錄的生命週期內不會改變。
相關問題
- 1. 主鍵是否總是聚集?
- 2. 外鍵是否總是引用另一個表中的唯一鍵?
- 3. 休眠外鍵是主鍵
- 4. 休眠:外鍵是主鍵
- 5. MySQL外鍵 - 總是一個好主意?
- 6. 外鍵引用的主鍵可以是mysql中的varchar(255)嗎?
- 7. 外鍵的字段類型是否可以與引用的主鍵不同?
- 8. 主鍵是否自動索引?
- 9. 主鍵是否自動成爲索引?
- 10. MySQL查詢外鍵引用主鍵
- 11. 對外鍵的兩個主鍵引用
- 12. SQL:外鍵引用複合主鍵
- 13. 外鍵也是主鍵的一部分
- 14. Oracle Sql:外鍵也是主鍵語法
- 15. 休眠 - @IdClass @ManyToOne - 主鍵也是外鍵
- 16. 當fk列是pk的子集時,主鍵索引是否會用作外鍵的索引?
- 17. SQLite多列主鍵是否需要額外的索引?
- 18. 引用了一個外鍵是與父表的另一個關鍵主鍵
- 19. 主鍵也是索引嗎?
- 20. 在主鍵+外鍵上創建多重索引是否有性能優勢?
- 21. 主鍵和外鍵是否在同一張表中
- 22. WebSQL是否支持主鍵?
- 23. sfGuardUser表是否有主鍵?
- 24. 標識主鍵是否總是非羣集?
- 25. 外鍵是否有大小?
- 26. JPA是否需要外鍵
- 27. 聚集索引的外鍵VS主鍵
- 28. 外鍵和主鍵Postgres和索引
- 29. 是否使用單個主鍵或複合主鍵?
- 30. 用主鍵替換外鍵
你可以給我們一個你真的需要這個表的例子嗎? –