Sql 预防4NF关系

Sql 预防4NF关系,sql,normalization,database-normalization,Sql,Normalization,Database Normalization,我一直在研究数据库规范化的概念,并遇到了一个关于第四范式的疑问 考虑下表: movie_id | actor_id | producer_id ----------------------------------- 1 | 1 | 1 1 | 2 | 1 1 | 2 | 2 上述关系的主键是:电影id、演员id、制片人id,因为一部电影可以有多个演员和多个制片人 所以,上表在BCNF中 根据4NF

我一直在研究数据库规范化的概念,并遇到了一个关于第四范式的疑问

考虑下表:

movie_id  | actor_id | producer_id
-----------------------------------

1         | 1        | 1

1         | 2        | 1

1         | 2        | 2
上述关系的主键是:电影id、演员id、制片人id,因为一部电影可以有多个演员和多个制片人

所以,上表在BCNF中

根据4NF的术语,我们应该消除上表中的多值依赖关系,以达到4NF,结果得到2个表

movie_actor
movie_id  | actorId
---------------------

movie_producer
movie_id  | producer_id
------------------------
以上表格在4NF中。 然而
我不明白为什么这个表会遇到这种多值依赖关系,因为这样的事情可以由第一范式本身来处理

NF告诉我们,我们应该避免重复分组。因此,由于一部电影可以有多个演员,我们应该在单独的电影演员表中分离演员,以满足1nf

有人能告诉我我的理解是否正确吗?
注:以上示例摘自《关系数据库设计与实现:Jan Harrington》,第三版,第117页

电影制作人在这里不是多余的吗?producer\u id可能会直接放在电影表中我不明白为什么这个表会遇到这种多值依赖关系,因为您希望producer\u id可能会因相同的电影\u id、演员\u id元组而不同,事实并非如此。一部电影可能有多个演员这一事实并不意味着演员被存储为一个重复组。@zerkms producer\u id可能直接放在电影表No中。一部电影可以有多个制片人。所以,如果电影表中的每部电影都有一个以上的制片人,我们就不应该为它添加重复的数据。@Shinchan:哦,那是我的错。出于某种原因,我认为严格来说是1:1