簡體   English   中英

當主鍵在不同的表中時,可以引用兩個外鍵嗎?

[英]Is it ok to reference two foreign keys when the primary key is in a different table?

作者( AuthorID , AuthorName, Address, TelephoneNo, PublisherCode )

圖書(書名、名稱、發行日期、價格、作者ID

出版商(出版商ID ,姓名,地址,作者ID

PK = 粗體

FK = 斜體

我正在嘗試編寫一個查詢

將說明書籍及其各種出版商並按 PublisherID 分組

我大致了解了檢索此信息,但我想知道將 FK 引用到另一個 FK 是否可以。

例如book.AuthorID = publisher.AuthorID作為 PK AuthorID 不在查詢的任何一個表中。

SELECT b.name. p.name
FROM Books b
INNER JOIN Publisher p ON b.authorID = p.publisherID
GROUP BY publisherID

我認為“FK 到另一個 FK”是指獲得 PublisherCode (book(authorID) -> Author(PublisherCode) -> Publisher)。

我不會這樣做,因為Publisher是書的屬性,而不是作者的屬性,因此您應該將 PublisherID 引用存儲在您的 Book 表中

Book (BookID, Name, ReleaseDate, Price, AuthorID, PublisherID)

此外,如果您將 PublisherID 存儲在 Book 表中,它將只允許一個出版商,因為您需要的查詢是顯示每本書的“各種出版商”,您應該使用另一個表來表示該交互

BookXPublisher (BookFK, PublisherFK)

這個表只有兩個外鍵,會像這樣存儲數據

(1 , 1) BookID:1 && PublisherID:1
(1 , 2) BookID:1 && PublisherID:2
(3 , 1) BookID:3 && PublisherID:1

您可以為 BookXAuthor 添加另一個表以達到相同目的

考慮到這一點,您的查詢將是

SELECT b.name. p.name
FROM Books b
INNER JOIN BookXPublisher bxp ON b.BookID = bxp.BookFK
INNER JOIN Publisher p ON p.PublisherID = bxp.PublisherFK

你的表是這樣的:
書(書名,名稱,發行日期,價格)
出版商(出版商ID ,名稱,地址)
BookXPublisher ( BookFK , PublisherFK )

此外,使用GROUP BY您可以計算一個作者 oa 出版商出版了多少本書

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM