2016-04-25 45 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

相关问题