2016-04-25 59 views
3

我必須管理藝術家和專輯表。MySql - 基於多對多數據透視表值的唯一密鑰

| artists  | | albums  | | album_artist | 
+--------------+ +--------------+ +--------------+ 
| id   | | id   | | id   | 
| artist  | | album  | | album_id  | 
| created_at | | created_at | | artist_id | 
| updated_at | | updated_at | +--------------+ 
+--------------+ +--------------+ 

記住,這是一個許多一對多的關係,我需要找到一種方式來獲得專輯,藝術家(S)對獨特的,因爲專輯可能具有相同的名稱還沒有屬於不同的藝術家(2Pac的「Greatest Hits」專輯和Notorious BIG的「Greatest Hits」)。 有沒有一種已知的方式/模式來解決這個問題?

謝謝。

+0

你得到了一對唯一的ID ...'album_artist'表中的'id'列 –

回答

3

我已經完成了它,在album_id,artist_id上創建了一個唯一的約束。

這將有可能爲不同的藝術家製作專輯。由於藝術家ID將區分。在你的遷移中。

$table->unique(['album_id', 'artist_id']); 

在傳統的數據庫設計,這就是所謂的composite key,這是兩列或多列,這使得表中是唯一,在大多數pivot table這將是兩個foreign keys