mysql - 当我需要创建新表并使用外键将其连接到其他表时?

标签 mysql sql

<分区>

我有这张表:

idFilmAward   Name
--------------------------------
1             Academy Awards
2             Saturn Award
..            ...

假设我也有这张表:

###############
###First Way###
###############
idAward       Name            idFilmAward
------------------------------------------
1             Best Director   1
2             Best Director   2
..            ....            ..
100           Best Actor      1

假设在“第一种方式”中“最佳导演”只重复了两次,所以这意味着我不需要使用“第二种方式”:

################
###Second Way###
################
idAward       idAwardName       idFilmAward
------------------------------------------
1             1                 1
2             1                 2
..            ....              ..
100           2                 1

idAwardName   Name              idAward
-------------------------------------------
1             Best Director     1
2             Best Actor        2
...           ...               ...

但是假设“最佳导演”重复 100 次,那么我需要使用“第二种方式”,对吗?我的问题是重复多少次才可以使用“第一种方式”,重复多少次后我应该使用“第二种方式”?

最佳答案

严格来说,Database Normalization说你应该总是使用第二种方式。

在“完美”的关系数据库设计中,您应该避免在不同行中重复相同的数据。这样,如果您想将奖项的名称从“最佳导演”更改为“最佳资深导演”,您应该更新多行(第一种方式)和仅更新一行(第二种方式)。

但在使用雪花设计的数据仓库设计中,第一种是最好的方法。

关于mysql - 当我需要创建新表并使用外键将其连接到其他表时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18960727/

相关文章:

mysql - 如何用php连接mySQL数据库中的两个表并进行计算?

php - 如何获取所选数据列表的 ID

MySQL - 获取最近 1 天、7 天、30 天的聚合,并允许将记录计入超过 1 组

php - 如何在 PHP 中进行多个查询

sql - 如何在 Laravel 中获取保存查询?

MYSQL 对现有日期选择总和,对 future 日期选择 0

mysql - 将 JOIN 限制为 1 个结果(最新) MySQL

sql - 涉及平均值的SQL Math概率(但不包括您的想法!)

php - 使用 select 选择不在的地方

MySQL LIMIT 和 OFFSET 搞乱了我的结果顺序