我有一个名为LogMessages的表,它有以下列:
据我所见,所有这些列都是候选键的一部分;如果任何单个值与现有行不同,则可以创建新行。
我的问题是,这个设计是否符合第五范式?我不确定,因为一些数据组将重复,但我不认为这违反了5NF?(如果我错了,请纠正我)
如果其中任何一个列发生更改,则可以在此表中创建一个新行,例如,可以在不同的级别上具有相同的消息(“用户不存在”可以在某个时间点作为警告记录,在不同的时间作为错误记录)。
发布于 2013-10-31 12:43:13
如果所有变量都是超级键的子集,那么数据库设计是5NF吗?
在任何1NF表中(没有重复行),整个标头都是一个超级键。表中的任何属性集(列)都是该超级键的子集。如果你的推理是正确的,那就意味着任何1NF表都在5NF中。所以,这是不对的。但是,您可能只是误用了术语。
您可能要问的是,如果整个标题是(候选)键,请记住键是不可约的。
这个问题的一般答案也是否定的;仅仅因为一个表是全键的,它不会在5NF中自动生成它--所有的关键表都在BCNF (3.5)中。他们可能也在5NF,但不是作为一个规则。
鉴于您提供的信息,我不确定您的表是否是全部关键( BCNF)。例如,是否存在FD {Message} --> {Level}?
因此,要正确地回答这个问题,您必须提供示例数据和一些拼出的“业务”规则。
看一看
https://dba.stackexchange.com/questions/52406
复制相似问题