您的位置:首页 > 编程语言 > Java开发

JAVA学习之-数据库设计及优化_课堂笔记

2016-12-07 08:40 351 查看
顾家玖爷 2016-11-30 16:54

1.数据库设计

(1)定义:规划数据库中数据对象以及之间关系的过程

(2)为什么进行数据库设计

节约数据占用空间大小

保证数据的4种完整性

便于程序的后期开发及维护

2.E-R模型

定义:实体关系模型图

矩形:实体

椭圆形:属性

菱形:关系

3.数据库设计的三大范式

定义:为了设计结构良好的数据库,需要遵守一些专门的规则,

称为数据库的设计范式

三大范式的设计目标:

第一范式(1NF)的目标:确保每列的原子性

第二范式(2NF)的目标:确保表中的每列,都和主键相关

第三范式(3NF)的目标:确保每列都和主键列直接相关,而不是间接相关

(例如:年龄和出生日期,二者保留不变动或不常变动的一个即可)

4.数据库设计步骤

(1)分析需求、收集信息

(2)标识对象,即数据库表

(3)标识对象的属性,即数据库表字段(列)

(4)标识对象之间的关系(主、外键关系)

5.一般优化技巧

(1)建议不用“*”代替所有列名

(2)删除所有数据用TRUNCATE代替DELETE

(3)用NOT EXISTS 代替NOT IN

(4)用EXISTS代替IN

(5)用EXISTS代替DISTINCT

例如:

--用 EXISTS 代替 distinct 优化 查询有多少不同的部门

select DISTINCT d.deptno ,d.dname from teacher t

INNER JOIN dept d ON t.deptno=d.deptno;

SELECT d.deptno ,d.dname FROM dept d

WHERE EXISTS (SELECT 'X' FROM teacher t WHERE t.deptno=d.deptno);

--exists代替in 查询 部门编号等于30的老师有几人

SELECT count(t.deptno)

FROM teacher t

WHERE t.deptno IN (SELECT d.deptno FROM dept d WHERE d.deptno = 30);

SELECT count(t.deptno)

FROM teacher t

WHERE EXISTS (SELECT 'X'

FROM dept d

WHERE d.deptno = t.deptno

AND d.deptno = 30);

6.关于驱动表

示例:

--先根据名称查询

select * from TEACHER t WHERE trim(T.TNAME)='李寻欢'

--后创建索引

create index IDX_TEACHER_NAME on TEACHER (tname);

--在查询进行对比

SELECT * FROM TEACHER T WHERE T.TNAME = '李寻欢'

解释计划窗口查看驱动表

选择驱动表有如下3个规则:

-- A\B两张表都没有索引的情况下,from 后面靠后的那个表就是驱动表

-- A\B两张表中,一张有索引,一张没索引的情况下,驱动表是没索引的那张

-- 驱动表要选择小表(查询后,得到的结果集数据量小的那张表

7.表连接优化规则

(1)用于连接的子句的列应被索引、在Where子句中应尽量利用索引,而不是避开索引;

(2)连接操作应从返回较少行上驱动;

(3)如果所连接的表A和B,A表长度远远大于B表,建议从较大的A表上驱动 ;

(4)如果Where子句中含有选择性条件,Where No=20,将最具有选择性部分放在表达式最后;

(5)如果只有一个表有索引,另一表无索引,无索引的表通常作为驱动表;

如A表的No列以被索引,而B表的No列没被索引,则应当B表作为驱动表,A表作为被驱动表;

8.索引的分类及原则

分类:唯一索引、非唯一索引、反向键索引、位图索引、组合索引、函数索引

创建索引原则:

频繁搜索的列

经常排序、分组的列

经常连接的列

指定单独的表空间

不适合建立索引原则

数据量小

仅包含几个不同值的列

数据表操作特别频繁、业务性能要求高

9.索引的注意事项

索引使用原则:

表中导入数据后再创建索引。否则每次表中插入数据时都必须更新索引

在适当的表和字段上创建索引。如果经常检索的数据少于表中的15%则需要创建索引

限制表中索引的数目。索引越多,在修改表时对索引做出修改的工作量越大

索引常见错误用法:

LIKE、函数、运算

10.表分区

表分区:把表中数据划分成若干部分,并存储在不同的位置

优点: 改善查询性能

表更容易管理

便于备份和恢复

提高数据安全性

11.数据库对象

Oracle 数据库对象又称模式对象

数据库对象是逻辑结构的集合,最基本的数据库对象是表

12.视图

用途:

限制对表中的一组行为访问

隐藏数据的复杂性

简化了用户的SQL

基表定义修改隔离

通过重命名列,从另一个角度提供了数据

DML操作的限制

只能对基表进行操作

注意权限问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: