将架构修改为第四范式

时间:2013-01-20 23:50:32

标签: sql key database-normalization

我制作了下表:

  SCHEDULE
  -id_movie
  -id_room
  -date
  -hour

(Id_room,date,hour)构成主键。在特定日期,在特定时刻,我在特定房间只有一部电影。问题是这个表不是第四种正常形式(4NF)。你能给我一些建议吗?我认为这是在BCNF。

该表格具有multivalued依赖关系:id_room - >> hour

我需要将此表格提交给4NF。

2 个答案:

答案 0 :(得分:3)

此表格为4NF。没有多值的依赖性,即tupples(a,b,c)和(a,d,e)的存在不需要(a,b,e)和(a,d,c)存在。

在特定情况下:

(1,21 / 1 / 13,5pm)和(1,22 / 1 / 13,7pm)不要求(1,21 / 1 / 13,7pm)和(1,22 / 1/13,下午5时);虽然这不是禁止的。

我认为你的困惑源于将日期和时间分成两列;两者都需要确定一个特定的瞬间。

答案 1 :(得分:2)

来自维基百科, 4th Normal Form

  

当且仅当对于每个非平凡的多值依赖项X->>YX是超级密钥时,表格在4NF中,即X是候选者关键或超集。

您说该关系具有multivalued依赖关系:id_room->hour

id_room既不是候选键,也不是超集。

因此,在这种情况下,关系不在4NF中。


要制作架构4NF,您可以分为两个关系:

  SCHEDULE_DATE_MOVIE
  -id_movie  
  -id_room   *
  -date      *

  SCHEDULE_HOUR
  -hour
  -id_room   *