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

这样设计的数据库表违反了某范式没
主键
名字
主键类型->1人名2.部门名称.3单位名称
----------------------------------
感觉这样的数据库好别扭,明明是三个表非要设成一个

------解决方案--------------------
一般会这样设计:
设计三个表:
人员:人员编号,人员名称,部门编号,单位编号
部门:部门编号,部门名称
单位:单位编号,单位名称
然后建个视图,取值自以上三个表:
人员编号,人员名称,部门编号,部门名称,单位编号,单位名称

------解决方案--------------------
这个要看具体用途,也许2 楼说的三张表 都已经存在了,之所以设计这张表就是要保存历史记录
------解决方案--------------------
看具体应用情况了,范式很多时候没必要追求的太高。
如果是单纯的建表,一般就是1L说的那种做法了。

有时候如果表查询的非常频繁,且数据量比较大的话,频繁的去进行表连接其实很消耗资源。现在硬盘空间不值钱,拿空间换时间也是很经常的做法。
------解决方案--------------------
这样的表结构定义,应该有个PARENTID字段,来保存它的上级编码,这样的结构可以一句话查出某个单位下的机构人员组成,或者反过来。

范式也不一定是不能突破的。