Oracle学习笔记之一,重温范式
第一范式(1NF)
第一范式是第二和第三范式的基础,是最基本的范式。第一范式包括下列的指导原则:
- 数据组的每个属性只可以包含一个值。
- 关系中的每个数组必须只包含相同数量的值。
- 关系中的每个数组一定不能相同。
在任何一个关系数据库中,第一范式是对关系模式的基本要求,不满足第一范式的数据库就不是关系型数据库。
表1.1 不符合第一范式的学生信息表
学号 |
姓名 |
性别 |
年龄 |
班级 |
9527 |
东*方 |
男 |
20 |
计算机系3班 |
因为上表中的班级属性中包含了多个值,所以它不符合第一范式。改进后的结构如下表所示:
表1.2 符合第一范式的学生信息表
学号 |
姓名 |
性别 |
年龄 |
系别 |
班级 |
9527 |
东*方 |
男 |
20 |
计算机 |
3班 |
第二范式(2NF)
第二范式是第一范式的基础上建立起来的,即满足第二范式必先满足第一范式。第二范式要求数据库中的每个实体(即各个记录行)必须可以被唯一地区分。要求实体的属性完全依赖于主关键字,即不能存在仅依赖主关键字一部分的属性。
不符合第二范式的示范(员工工资表):
(员工编号,岗位)-》(决定)(姓名、年龄、学历、基本工资、绩效工资、资金)
不符合的原因是,在上面的关系中,还可以进一步拆分为如下两种决定关系:
(员工编号)-》(决定)(姓名、年龄、学历)
(岗位)-》(决定)(基本工资)
符合第二范式的示范(将上面的表拆分为三张表):
员工档案表:EMPLOYEE(员工编号、姓名、年龄、学历)
岗位工资表:QUARTERS(岗位、基本工资)
员工工资表:PAY(员工编号、岗位、绩效工资、奖金)
第三范式(3NF)
第三范式是在第二范式的基础上建立起来的,即满足第三范式必先满足第二范式。第三范式要求关系表不存在非关键字列对任意候选关键字列的传递函数依赖,也就是说,第三范式要求一个关系表中不包含已在其他表中已包含的非主关键字信息。
示范:
(员工编号)-》(决定)(员工姓名、年龄、部门编号、部门经理)
上面的这个关系是符合第二范式的,但它不符合第三范式,因为该关系表内部隐含着如下决定关系:
(员工编号)->(决定)(部门编号)-》(决定)(部门经理)
上面的关系表存在非关键字段“部门经理”对关键字“员工编号”的传递函数依赖。
更改为符合第三范式关系:
员工信息表:EMPLOYEE(员工编号、员工姓名、年龄、部门编号)
部门信息表:DEPARTMENT(部门编号、部门经理)
对于关系数据库的设计,理想的设计目标是按照“规范化”原则存储数据,因为这样做能够消除数据冗余、更新异常、插入异常和删除异常。
Oracle学习笔记之一,重温范式的更多相关文章
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- oracle学习笔记第一天
oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字 1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...
- Oracle学习笔记——点滴汇总
Oracle学习笔记——点滴汇总 http://www.botangdb.com/ Oracle GI = Grid Infrastructure = ASM + Cluster
- Oracle学习笔记之四sp1,Oracle 11g的常用函数
从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i) 分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ...
- Oracle学习笔记之四,SQL语言入门
1. SQL语言概述 1.1 SQL语言特点 集合性,SQL可以的高层的数据结构上进行工作,工作时不是单条地处理记录,而对数据进行成组的处理. 统一性,操作任务主要包括:查询数据:插入.修改和删除数据 ...
- Oracle学习笔记—数据字典和常用命令(转载)
转载自: oracle常用数据字典和SQL语句总结 Oracle常用命令大全(很有用,做笔记) 一.Oracle数据字典 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的.比如一 ...
- oracle学习笔记(一)用户管理
--oracle学习第一天 --连接 @后面连接数据库实例,具体连接到那个数据库 conn scott/tiger@MYORA1; --修改密码 passw; --显示用户 show user; -- ...
- 吴裕雄--天生自然 oracle学习笔记:oracle理论学习详解及各种简单操作例子
1. 数据库的发展过程 层次模型 -->网状模型 -->关系模型 -->对象关系模型 2. 关于数据库的概念 DB:数据库(存储信息的仓库) DBMS:数据库管理系统(用于管理数据库 ...
- 【Oracle】曾经的Oracle学习笔记(8-15)ER图,三大范式,数据库字典,视图,索引,序列
一.数据库建模 二.建表 三.数据库字典 四.DML语句 五.视图 六.索引 七.序列 八.DDL语句 Lesson 8 Overview of Data Modeling and Database ...
随机推荐
- C#.NET常见问题(FAQ)-使用SharpDevelop开发 如何切换设计视图和代码视图
仅在MainForm.cs跟MainForm.Designer.cs文件页面上,底部有可以切换源代码跟设计的按钮(别的地方都木有) 点击就切换过来了 更多教学视频和资料下载,欢迎关注以下信 ...
- oracle错误处理之ORA-00054:资源正忙,要求指定NOWAIT
查询所有会话 select t2.username, t2.sid, t2.serial#, t2.logon_time from v$locked_object t1, v$session t2 w ...
- Python编程-Office操作-操作Excel(上)
首先,需要安装openpyxl库 http://openpyxl.readthedocs.org/en/default/ pyton 2.xpip install openpyxl python 3. ...
- NSURLSession 学习笔记
NSURLSession 学习笔记 一:NSURLSession 类似之前的NSURLConnection, 可配置每个session的 cookie,证书等网络连接配置信息 NSURLSession ...
- HDU 4620 Fruit Ninja Extreme 暴搜
题目大意:题目就是描述的水果忍者. N表示以下共有 N种切水果的方式. M表示有M个水果需要你切. W表示两次连续连击之间最大的间隔时间. 然后下N行描述的是 N种切发 第一个数字C表示这种切法可以切 ...
- Electron 调用系统Office软件
通过打开本地空白文件的方式从而打开Office办公软件 const shell = require('electron').shell; const path = require('path'); s ...
- 解决windows10 启动蓝屏 ntfs file system
启动 --> 疑难解答 -->高级工具 --> 命令行--> chkdsk /x /f c: cd c: ok ^_-
- 解决document.location.href下载文件时中文乱码
1:tomcat 安装路径下 找到 conf文件下的server.xml 2:<Connector port="8080" URIEncoding="utf-8&q ...
- 关于python打包成exe的一点经验之谈
我经常用python写些脚本什么的,有时候脚本写完以后,每次运行都得在IDE打开在运行,很麻烦,所以经常将python编译成exe.SO...有了一点经验,在这和大家分享一下. python ...
- [Unity-1] Unity简单介绍
Unity是一套包含图形.声音.物理等功能的游戏引擎,提供了一个强大的关卡编辑器.支持大部分主流3D软件格式,使用C#或者JavaScript等高级语言实现脚本功能.使开发人员无需了解底层复杂技术,高 ...