這兩個我很混淆。他們是相同還是不同?有些書或人說他們是一樣的,有些則說他們不一樣。我試過但沒有找到任何真實的答案。
請大家解決它。外鍵和引用鍵有什麼區別?
回答
「引用鍵」在美國英語中不是關係建模或SQL實現中的正常技術術語。
外鍵「引用」某個其他表中的鍵;這可能是混淆來自何處嗎?
你真的不叫東西參考關鍵 ...他們是同樣的事情......你可能會看到這個詞引用 SQLite中使用,例如:你可以使用如下語法啓動數據庫的作者和書籍。這可以讓你證明一個作者可以有很多書。這告訴books.author_id
(定義幾行了)分貝引用author.id
CREATE TABLE 'author' (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
firstname varchar(255)
lastname varchar(255)
);
CREATE TABLE 'books' (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
author_id INTEGER,
title varchar(255),
published date,
FOREIGN KEY(author_id) REFERENCES author(id)
);
也許你正在使用的術語「參考鍵」有點鬆散?
一行中的外鍵值被稱爲「引用」包含相應鍵值的行。請注意,前面句子中的「reference」一詞是一個動詞,所以我們可以說我們有一個引用的外鍵值和一個引用的鍵值。
雖然它是被引用的關鍵值而不是表鍵約束,但我可以鬆散地說,我們可以說「引用鍵」是指構成可能被引用的值的行。然後我會看到「引用鍵」可能會成爲「引用鍵」,但不會相信它的起源。
我假設你正在談論使用,在不使用的FOREIGN KEY
關鍵字REFERENCES
,例如。
author_id INTEGER REFERENCES author(id)
...而不是...
author_id INTEGER,
FOREIGN KEY(author_id) REFERENCES author(id)
答案是,這僅僅是同一事物的簡寫語法。當兩者之間發生變化時,主要關心的應該是可讀性。
外鍵「引用」某個其他表中的鍵。其他表中的該鍵稱爲引用鍵。如果您在phpmyadmin上使用圖形功能,您可能會聽到很多關於此的信息。
有2種方式申報的外鍵(S):
如果外鍵是一個屬性:
參考()如果外鍵的列表屬性
外鍵()參考文獻
兩個關鍵字「FOREIGN KEY」和「REFERENCES」關鍵字之間唯一且最重要的區別是雖然它們都使數據成爲父表的子數據,但「FOREIGN KEY」用於創建表級約束,而REFERENCES關鍵字只能用於創建列級約束。列級約束只能在創建表時創建。但是可以使用ALTER TABLE命令添加表級約束。
外鍵必須表示主鍵。 簡單地使用REFERENCES約束時,引用的鍵不一定是主鍵。
- 1. 檢查和外鍵有什麼區別?
- 2. cassandra中的行鍵,主鍵和索引有什麼區別?
- 3. 主鍵和身份有什麼區別?
- 4. 只有主鍵和主鍵約束有什麼區別?
- 5. 主鍵和聚集索引有什麼區別?
- 6. 鍵盤加速器和快捷鍵有什麼區別?
- 7. 主鍵和代理鍵有什麼區別?
- 8. 候選鍵和複合鍵有什麼區別?
- 9. 單鍵和鍵路徑有什麼區別?
- 10. 指定json的鍵有沒有引號有什麼區別?
- 11. `overload`關鍵字有什麼區別嗎?
- 12. 使用索引查詢時1複合索引鍵和單獨索引鍵有什麼區別
- 13. 主鍵,唯一鍵和外鍵約束以及索引之間的區別是什麼?
- 14. 對象和引用有什麼區別?
- 15. __weak和__block引用有什麼區別?
- 16. 約束符號與外鍵索引名稱 - >有什麼區別?
- 17. 要解除鍵盤使用`resignFirstResponder`和`endEditing`有什麼區別?
- 18. 使用box關鍵字和Box :: new之間有什麼區別?
- 19. 使用synchronized關鍵字和鎖之間有什麼區別
- 20. Rails中外鍵約束和引用之間的區別
- 21. dict.keys()中的關鍵字與關鍵字有什麼區別?
- 22. 實體框架中的逆向屬性和外鍵有什麼區別?
- 23. 外鍵級聯選項和創建觸發器有什麼區別?
- 24. 傳遞引用和引用引用有什麼區別?
- 25. 在Google App Engine中,實體鍵和鍵名稱有什麼區別?
- 26. oracle sql中的join關鍵字和inner join關鍵字有什麼區別?
- 27. 散列和索引有什麼區別?
- 28. 索引和分片有什麼區別
- 29. 「throw」關鍵字和「Write-Error-ErrorAction Stop」之間有什麼區別?
- 30. C#中的覆蓋和新關鍵字有什麼區別?
雖然第一個將不啓用外鍵,第二個不會啓用。第二種方式不再使用了嗎? – schwiz 2014-10-13 22:38:41
如果您嘗試使用逆向工程從MySQL Workbench中的數據庫創建圖表,這也很重要。如果您在創建數據庫時使用了fir選項,該工具將無法在圖元素之間創建連接。 – 2016-12-14 10:59:39