Oracle学习笔记第二十天

Oracle学习笔记第二十天

数据库设计

概念:规划数据库中数据对象以及之间关系的过程

为什么进行数据库设计:

   	1. 空间
    	2. 完整性:实体完整性、域完整性、用户自定义的完整性
     	3. 程序开发:方便程序开发

范式:

1NF:第一范式:

​ 如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF)

​ 第一范式的目标是确保每列的原子性

2NF:第二范式

​ 如果一个关系满足1NF,并且除了主键以为的其他列都依赖与该主键,则满足第二范式(2NF)

​ 第二范式要求每个表值描述一件事情

3NF:第三范式

​ 如果一个关系满足2NF,并且除了主键以外的其他列都不传递依赖于主键列,则满足第三范式。

数据库设计步骤:

   	1. 收集信息
    	2. 标识对象
     	3. 标识对象的属性
     	4. 标识对象之间的关系

为了设计结构良好的数据库,需要遵守一些专门的规则,称为数据库的设计范式

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

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

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

练习用例:

收集信息:
  公司承担多个工程项目,每一项工程有:工程号、工程名称、施工人员等
  公司有多名职工,每一名职工有:职工号、姓名、性别、职务(工程师、技术员)等
  公司按照工时和小时工资率支付工资,小时工资率由职工的职务决定(例如,技术员的小时工资率与工程师不同)
  工资报表
工程号工程名称职工号姓名职务小时工资率工时
A1花园大厦1001齐光明工程师6513
A1花园大厦1002李思岐技术员6016
A2立交桥1001齐光明工程师6513
A2立交桥1003鞠明亮工人5517
A3临江饭店1002李思岐技术员6018
A3临江饭店1004葛宇洪技术员6014

标识对象
标识对象2

标识对象3

SQL优化

一般优化技巧

  1. 建议不用“*”代替所有列名
  2. 删除所有数据用TRUNCATE代替DELETE
  3. 用NOT EXISTS 代替NOT IN
  4. 用EXISTS代替IN
  5. 用EXISTS代替DISTINCT
  6. where子句的连接顺序:1. 表连接关系放在前面;2. 过滤记录越多的条件子句应放置到后面

索引

索引分类:
逻辑分类物理分类
单列或组合索引分区或非分区索引
唯一或非唯一索引B 树索引
基于函数索引正常或反向键索引
位图索引

其他索引: 唯一索引、反向键索引、位图索引、组合索引、函数索引等

创建索引原则:
  1. 频繁搜索的列
  2. 经常排序、分组的列
  3. 经常连接的列
  4. 指定单独的表空间
不适合建立索引原则:
  1. 数据量小
  2. 仅包含几个不同值的列
  3. 数据表操作特别频繁、业务性能要求高

表分区

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

优点:
  1. 改善查询性能
  2. 表更容易管理
  3. 便于备份和恢复
  4. 提高数据安全性
表分区分类:
  1. 范围分区
    • 列值的范围作为划分条件
  2. 散列分区
    • 列的hash值自动分配
  3. 列表分区
    • 列值必须明确指定
    • 一个分区列
  4. 复合分区
    • 先按第一分区方法分区
    • 再按第二分区方法划分子分区
  5. 其他分区
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值