2017-09-17 37 views
0

所以我有3個表:我應該使用外鍵連接這3個表嗎?

Table: Albums 
Columns: Id, Name, Description, Author, Folderpath, Thumbnail, Upvotes, Downvotes 

Table: AlbumsConnection 
Columns: Id, AlbumId, AlbumImagesId 

Table: AlbumImages 
Columns: Id, InAlbum, Imagepath 

到目前爲止,我一直在使用這些表實際上並沒有使用外鍵。我應該在這裏使用外鍵?我知道我必須爲專輯連接添加2個外鍵,每個表有1個外鍵,每個外鍵都會引用其他2個表的主鍵(這是ID)。那是對的嗎?

+0

「我應該在這裏使用外鍵?」是的外鍵強制數據的完整性......「我明白,我不得不將兩個外鍵添加到AlbumsConnection,每個表有1個,每個外鍵將引用另外兩個表的主鍵(這是ID) 。 那是對的嗎?」是的,幾乎聽起來是正確的...並確保這些表是用InnoDB引擎創建的......但問題主要是基於意見的 –

+0

你是什麼意思,並確保表是用InnoDB創建的引擎''?我使用phpMyAdmin來創建我的數據庫和表格。它使用那個引擎嗎? – Bobimaru

+0

只有innoDB引擎支持外鍵。 「它使用那個引擎?」不知道在MySQL服務器中設置了defualt,但是我確定你可以在創建表時選擇Innodb引擎作爲選項。 –

回答

2

外鍵有助於確保數據庫的關係完整性。沒有要求明確地聲明它們,但這是一個好主意,特別是如果你正在學習使用數據庫。

外鍵讓我們的數據庫知道一個表中的列與另一個表中的列有關。我不認爲MySQL的優化器明確使用這些信息,儘管它確實在外鍵列上創建了索引(與大多數其他數據庫不同)。

此外,聲明的外鍵關係可以幫助您處理對數據庫的更改。這將防止將無效專輯插入到聯結表中。如果您刪除了一個相冊,它可以讓您控制刪除和更新的處理方式(通過cascading限制)。

相關問題