MySql - 基于多对多透视表值的唯一键

时间:2016-04-25 22:34:53

标签: php mysql laravel relational-database

我必须管理艺术家和专辑表。

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

请记住,这是一个多对多的关系,我确实需要找到一种方法来使专辑 - 艺术家(s)对唯一,因为专辑可能具有相同的名称但属于不同的艺术家(fe 2Pac的“Greatest Hits”专辑和Notorious BIG的“Greatest Hits”。 是否有已知的方法/模式来解决这个问题?

谢谢。

1 个答案:

答案 0 :(得分:3)

之前我已经完成了,在album_id上创建了一个唯一的约束,artist_id。

这样就可以为不同的艺术家提供专辑。因为艺术家的身份将与众不同。在您的迁移中。

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

在传统的数据库设计中,这称为composite key,它是两列或更多列,这使得表格独一无二,在大多数pivot table中,这将是两个foreign keys。< / p>