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操作的限制
只能对基表进行操作
注意权限问题
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操作的限制
只能对基表进行操作
注意权限问题
相关文章推荐
- JAVA学习之-数据库设计及优化_课堂笔记
- JAVA学习之-数据库设计及优化_课堂笔记
- Java 单例设计模式 与 代码优化 学习笔记
- PetShop3.x学习笔记8-《PetShop 3.x的设计模式与体系结构》节选-数据库可移植性
- 学习笔记之JAVA图形设计卷I AWT——第3章 图 形
- 课堂笔记学习java(初级)第三节课
- java 设计模式 学习笔记(1) - 简单工厂模式
- JAVA与模式学习笔记之设计原则
- 数据库中odbc和jdbc的区别-------java数据库学习笔记之1
- 【学习笔记】--java通过数据库表名自动生成实体类
- 课堂笔记学习java(初级)第四节课
- Java学习笔记--数据库插入时如何得到插入列的自增长列值
- Java设计模式学习笔记---单一职责原则(一)
- [学习笔记]java+oracle 存储图片到数据库中 a---存储
- Java学习笔记——JAVA图形设计卷I AWT——第一章绪论
- JAVA学习笔记(三)-用户界面设计
- [学习笔记]jsp+javaBean+Servlet 的设计模式MVC 的实例
- Java学习笔记(四、图形界面设计)
- Java学习笔记(八、数据库编程基础)
- 设计模式学习笔记以及java代码实现