mysql - 具有相同唯一列的表的主键或外键

标签 mysql sql database database-design

请参阅下面的指示性架构。

表 2 包含不同格式的影片。例如。 2D、3D、4D 等

其格式如各列所示,最后一列是表 1 中的胶片 ID 号。

由于表 1 中的电影 ID 列是表 1 的主键,因此我相信表 2 中的电影 ID 列是外键。然而,这使得表 2 中没有主键。

在这种情况下,最好的做法是让表 2 没有主键,还是将两个胶片 ID 设置为两个表的主键,或者我应该在表 2 中创建另一列,以允许“胶片格式 ID”是我的表 2 主键吗?

视觉引用:

table 1                   table 2                                           
-------|-------           -------|-------|-------|-------
Film   |film ID           Film ID|  3D   |  4D   |  2D
        ^primary key      ^foreign key

最佳答案

在我看来,许多电影都有多种格式,因此将 filmid 作为第二个表中的 PK 是错误的。此外,该设计没有标准化并且存在很大缺陷。您应该有第三个胶片类型表,它是一个查找表。然后第二个表应仅包含 filmid 和 filmtypeid,您可以在这两个字段的组合上创建主键。这称为联结表。

关于mysql - 具有相同唯一列的表的主键或外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41899489/

相关文章:

php - 时间戳下拉列表-从数据库检索图像(基于时间戳where子句查询)-php/mysql

java - Callablestatement 错误:索引::1 处缺少 IN 或 OUT 参数

mysql - SQL (MySQL) - 如何在内连接中使用嵌套查询中指定的名称

php - 如何在 codeigniter 中对列中的数据进行切片并根据它进行排序?

php - 如何使用 PHP 一次性在 SQL 中运行多个插入查询?

具有多个多对多关系的数据库设计

database - 导出时生成的 postgreSQL 转储文件为空

java - SQLiteOpenHelper-如何从 CustomListview 设置 onclick 项目详细信息

javascript - SELECT Count 从 mysql 到 Google Geo Chart

sql - 如何提高使用 OUTER APPLY 的查询性能