三大范式详细
学号 | 姓名 | 系名 | 系主任 | 课程名称 | 分数 |
10010 | 张无忌 | 经济系 | 张三丰 | 高等数学 | 95 |
10010 | 张无忌 | 经济系 | 张三丰 | 大学英语 | 27 |
10010 | 张无忌 | 经济系 | 张三丰 | 计算机基础 | 65 |
10011 | 令狐冲 | 法律系 | 任我行 | 法理学 | 77 |
10011 | 令狐冲 | 法律系 | 任我行 | 大学英语 | 37 |
10011 | 令狐冲 | 法律系 | 任我行 | 法律社会学 | 65 |
10012 | 杨过 | 法律系 | 任我行 | 法律社会学 | 95 |
10012 | 杨过 | 法律系 | 任我行 | 法理学 | 97 |
10012 | 杨过 | 法律系 | 任我行 | 大学英语 | 99 |
计算机系 | 殷天正 |
存在的问题:
存在非常严重的数据冗余(重复):姓名,系名,系主任
数据添加存在问题:添加新开设的系和系主任时,数据不合法
数据删除存在问题:张无忌同学毕业了,删除数据,会将系的数据一起删除
几个概念:
函数依赖:A - ->B,如果通过A属性(属性)的值,可以确定唯一B属性的值。则称B依赖于A
例如:学号 - -姓名。 (学号,课程名称) - - > 分数
完全函数依赖:A - ->B, 如果A是一个属性组,则B属性值得确定需要依赖于A属性中所有的属性值。
例如:(学号,课程名称) - - > 分数
完全函数依赖:A - ->B, 如果A是一个属性组,则B属性值得确定需要依赖于A属性中某一些的属性值即可。
例如:(学号,课程名称) - - > 姓名
传递函数依赖:A -- >B,B - - >C . 如果通过A属性(属性组)的值可以确定唯一属性的值吗,在通过B属性(属性)的可以确定唯一c属性的值,则称 c 传递函数依赖于A
例如:学号 - ->系名,系名 - -> 系主任
如果在一张表中,一个桃性或桃性组,被其他所有属性所完全依赖,则称这个u性(s性组)为该表的码例如:该表中码为︰(学号,课程名称)
主丽性:码性组中的所有属性
非主性:除过码属性组的厨性
课程表
学号 | 课程名称 | 分数 |
10010 | 高等数学 | 95 |
10010 | 大学英语 | 27 |
10010 | 计算机基础 | 65 |
10011 | 法理学 | 77 |
10011 | 大学英语 | 37 |
10011 | 法律社会学 | 65 |
10012 | 法律社会学 | 95 |
10012 | 法理学 | 97 |
10012 | 大学英语 | 99 |
学生表:
学号 | 姓名 | 系名 | 系主任 |
10010 | 张无忌 | 经济系 | 张三丰 |
10011 | 令狐冲 | 法律系 | 任我行 |
10012 | 杨过 | 法律系 | 任我行 |
计算机系 | 殷天正 |
存在问题:
数据添加存在问题:添加新开设的系和系主任时,数据不合法
数据删除存在问题:张无忌同学毕业了,删除数据,会将系的数据一起删除
选课表:
学号 | 课程名称 | 分数 |
10010 | 高等数学 | 95 |
10010 | 大学英语 | 27 |
10010 | 计算机基础 | 65 |
10011 | 法理学 | 77 |
10011 | 大学英语 | 37 |
10011 | 法律社会学 | 65 |
10012 | 法律社会学 | 95 |
10012 | 法理学 | 97 |
10012 | 大学英语 | 99 |
学生表:
学号 | 姓名 | 系名 |
10010 | 张无忌 | 经济系 |
10011 | 令狐冲 | 法律系 |
10012 | 杨过 | 法律系 |
系表:
系名 | 系主任 |
经济系 | 张三丰 |
法律系 | 任我行 |
法律系 | 任我行 |
存在的问题:
刚刚所有的三个问题被全部解决
数据库的备份和还原
命令行:
语法:
备份:mysqldump - u用户名 -p密码 > 保存的路径
还原:
登录数据库
创建数据库
使用数据库
执行文件。 source 文件路径
创建一个新的数据库
右键选择
运行后右键点击刷新即可