我正在网上学习网络开发文凭,我刚进入数据库设计和开发阶段。我以为我理解正常的形式,但我只是遇到了一个问题,使我止步不前。
查看客户实体的下列属性列表: 客户(cus_ID,姓名,地址,mobile_phone) 为什么这个实体不在3NF中?
据我所知,它在3NF中。如果没有客户,所有属性都不会存在,名称、地址和移动数据集都要求客户存在。
我是不是搞错了3NF的整个概念?
发布于 2015-06-30 02:15:12
一开始看起来很奇怪,但您还没有定义地址中的内容,甚至没有定义id。在脑海中出现的违反3NF的一些可能性是(除了您可能在这里得到的其他评论和答案):
编辑:我最初包括了这一点,但是@philipxy在下面的注释中提出了不同的建议:“如果在数据库的其他部分中发现了任何属性,这里没有显示。”
发布于 2015-06-30 01:58:38
多个客户可以有相同的地址。
发布于 2015-06-30 06:13:26
先前给出的每一个答案都对你的数据的意义做出了假设。但是要知道模式是否在3NF中,唯一正确的答案是:“向我展示模式的功能依赖关系,然后我可以证明模式是否在3NF中”。这是因为3FN是一个正式的概念,只有在正式的上下文中才有意义。
所以也许这个问题应该以一种不同的方式提出:
在这种模式下,在现实假设下,哪些是功能依赖?
然后,从这些功能依赖,我们可以知道,而不是推测一个正常的形式。
所以,在我看来,一门没有人教你什么是功能依赖的课程,并且问你某个关系是否在3NF中,这不是一门好的课程。
https://stackoverflow.com/questions/31128310
复制相似问题