有这样2个表:
第一个表是emp(员工表)表
有这些列:empno(员工编号)ename(员工姓名)deptno(部门编号)
第二个是dept(部门表)
有这些列deptno(部门编号)dname(部门名称)
问题是为什么dname不放的到emp表里呢?问题没有那么简单哈,希望能得到专业点的解释。谢谢各位大手了!
有这样2个表:
第一个表是emp(员工表)表
有这些列:empno(员工编号)ename(员工姓名)deptno(部门编号)
第二个是dept(部门表)
有这些列deptno(部门编号)dname(部门名称)
问题是为什么dname不放的到emp表里呢?问题没有那么简单哈,希望能得到专业点的解释。谢谢各位大手了!
sql server的三范式中规定的
第一范式
是表的属性不可拆分,就是你一个表的列里面只能存储实际的一种属性,不要把两种属性混协就可以了
第二范式 是不允许部分依赖
比如你有一个用户表,名字和邮件为主键,而年龄、性别都是依赖于名字的而跟邮件地址没关系。所以就不是第二范式
第三范式 是不允许传递依赖
比如你有一个用户表,名字为主键,街道依赖与名字,派出所依赖于街道,那么如果用户表里面包含派出所就不符合第三范式
为了减少数据冗余。你看看数据库设计的知识就行。 基础的知识。
这涉及到数据库的规则问题,这是为了消除数据库表的信息亢余,打个比方:你要在部门那个表添加一个列,部门主管,这时,你要是把dname及其部门主管放到员工表的话,就会出现数据亢余,因为一个部门就一个主管,员工属于多个部门,就得为每一个员工存多个部门主管名字。