Java学习二十五(1)--数据库设计和内链接
一、数据库设计
1、多表之间的关系
分类及实现关系:
(1)一对一:人和其身份证。 在任意一方添加唯一外键直向另一方外键
(2)一对多(多对一):部门和员工。 “多”的一方外键指向“一”的一方的外键
(3)多对多:学生和课程。 借助第三方中间表,中间表至少包含两个字段,字段作为外键分别指向两张表的主键
2、数据库设计范式:不同规范要求
(1)1NF:每一列都是不可分裂的原子数据项;
(2)2NF:在1NF的基础上,非码属性必须完全依赖于候选码(消除非主属性对主码部分函数依赖)
函数依赖:A-->B,A属性(属性组)的值,可确定唯一B属性的值,B依赖A。
完全函数依赖:A-->B,如果A是一个属性组,B属性值确定需要依赖于A中的所有属性值。
部分函数依赖:A-->B,B属性的确定只需要A的部分属性值便可以确定。
传递函数依赖:A-->B,B-->C,B通过A确定属性值,C通过B确定属性值。
(3)3NF:在2NF的基础上,任何非主属性不依赖其他属性值,消除传递依赖。
主属性:码属性组中所有属性
非主属性:码属性组之外的属性。
二、数据库的备份与还原
1、命令行:在cmd中进行备份:mysqldump -uroot -p密码 数据库名称 > 路径;
还原:(1)登录数据库;(2)创建数据库(名称最好相同);(3)使用数据库;(4)执行文件 soure 文件路径;
2、图形化工具(SQLYog)。
三、多表查询--内连接
普通语法:select * from 表1,表2; 笛卡尔积:集合A、B取这两个集合的所有组成情况。
内连接查询:
(1)隐式内连接:使用where条件消除无用数据,以例子来演示
select t1.name, t1.gendary, t2.name from emp t1, demp t2 where t1.'demp_id'=t2.'id'; -- t1,t2为emp,demp的别名,emp和demp是表名
(2)显式内连接:select 字段列表 from 表1 (inner) join 表2 on 条件;
注:必须确定表、条件和字段。