首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果所有变量都是候选键的子集,那么数据库设计是5NF吗?

如果所有变量都是候选键的子集,那么数据库设计是5NF吗?
EN

Database Administration用户
提问于 2013-10-29 10:54:49
回答 1查看 222关注 0票数 3

我有一个名为LogMessages的表,它有以下列:

  • 级别
    • 表示跟踪、调试、信息、警告、错误或致命的数值

  • 时间
    • 世界协调时的时间

  • 消息
    • 消息表的外键

    • 源表的外键

  • 用户
    • 用户表的外键

据我所见,所有这些列都是候选键的一部分;如果任何单个值与现有行不同,则可以创建新行。

我的问题是,这个设计是否符合第五范式?我不确定,因为一些数据组将重复,但我不认为这违反了5NF?(如果我错了,请纠正我)

更新

如果其中任何一个列发生更改,则可以在此表中创建一个新行,例如,可以在不同的级别上具有相同的消息(“用户不存在”可以在某个时间点作为警告记录,在不同的时间作为错误记录)。

EN

回答 1

Database Administration用户

发布于 2013-10-31 12:43:13

如果所有变量都是超级键的子集,那么数据库设计是5NF吗?

在任何1NF表中(没有重复行),整个标头都是一个超级键。表中的任何属性集(列)都是该超级键的子集。如果你的推理是正确的,那就意味着任何1NF表都在5NF中。所以,这是不对的。但是,您可能只是误用了术语。

您可能要问的是,如果整个标题是(候选)键,请记住键是不可约的。

这个问题的一般答案也是否定的;仅仅因为一个表是全键的,它不会在5NF中自动生成它--所有的关键表都在BCNF (3.5)中。他们可能也在5NF,但不是作为一个规则。

鉴于您提供的信息,我不确定您的表是否是全部关键( BCNF)。例如,是否存在FD {Message} --> {Level}?

因此,要正确地回答这个问题,您必须提供示例数据和一些拼出的“业务”规则。

看一看

https://stackoverflow.com/questions/18029821/how-to-understand-the-5th-normal-form

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/52406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档