日期:2014-05-17  浏览次数:20714 次

下面设计违反了数据库范式吗
主键
名称
名称类型 如type=1 type=2,1是则名称是人名,2则名称是部门名称.
这样设计违反了数据库的范式吗,是哪一个

------解决方案--------------------
没有违反什么范式。
如果部门和人在这张表里没有互相独立的属性,则你这个设计没有问题。
但如果有,那你相当于把2个表合成了1个表。这样就会产生冗余,浪费空间。应该是违反了第三范式。
比如
部门名称/人员名称 名称类型 人员性别 人员生日 人员所属部门 。。。 部门级别 部门类型 部门上级。。。。。

你自己看看吧,尤其是 【人员所属部门】这个字段,你是不是还要和【部门上级】区分一下?这就乱套了。

从面向对象的角度讲,人员和部门是2个不同的对象,很多属性不同,你硬要凑成一个对象,存储是简单了,但使用却麻烦了很多!当取出一堆记录,你说它是人还是部门的集合?