数据库建模
2016-04-16 21:54
267 查看
数据库
数据库,简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行添加、查询、更新、删除等操作。目前大多数数据库为关系型数据库,当前主流的关系型数据库有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL、Sqlite等。
关系型数据库使用的是SQL(Structured Query Language)语言。SQL语言是面向解释语法。特点为陈述性,几乎全是关键字
关系型数据库基本对象数据表、约束、触发器、视图、存储过程(不一定所有数据库都有)、用户和用户组(不一定所有数据库都有)
数据库建模
第一范式(1NF)【分解属性】所谓第一范式(1NF)是指在关系模型中,对域添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。即实体中的某个属性有多个值时,必须拆分为不同的属性。在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分。简而言之,第一范式就是无重复的域。
第二范式(2NF)【添加主键,主键必须不能为null,主键不可重复,主键最好数据非常的短,一般会使用自动增长的整数来做主键】
在1NF的基础上,非码属性必须完全依赖于码[在1NF基础上消除非主属性对主码的部分函数依赖]
第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或记录必须可以被唯一地区分。选取一个能区分每个实体的属性或属性组,作为实体的唯一标识。例如在员工表中的身份证号码即可实现每个一员工的区分,该身份证号码即为候选键,任何一个候选键都可以被选作主键。在找不到候选键时,可额外增加属性以实现区分,如果在员工关系中,没有对其身份证号进行存储,而姓名可能会在数据库运行的某个时间重复,无法区分出实体时,设计辟如ID等不重复的编号以实现区分,被添加的编号或ID选作主键。(该主键的添加是在ER设计时添加,不是建库时随意添加)
第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就是在第一范式的基础上属性完全依赖于主键。
第三范式(3NF)【添加外键】
在1NF基础上,任何非主属性不依赖于其它非主属性[在2NF基础上消除传递依赖]
第三范式(3NF)是第二范式(2NF)的一个子集,即满足第三范式(3NF)必须满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个关系中不包含已在其它关系已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性,也就是在满足2NF的基础上,任何非主属性不得传递依赖于主属性。
数据库冗余
尽力做到最小冗余数据库中表和表之间的关系
一对一关系一对多关系 【在多方表格上面添加一方表格的主键,那么这个主键将会成为多方表格的外键】
多对多关系 【多对多关系一定会产生结果,否则无意义。】
数据库中的术语
原子性:不可分割的最小单位【指的是每个字段】域:数据表中的记录,也就是所有行
实体:数据库中的所有表
字段:数据库表中的列
主键:每个表的中所有字段都要依赖的一个字段为主键。【每个表必须有一个主键,且只有主键】【主键特点为唯一性,非空性】
外键:表与表之间的关系使用外键描述。
数据库完整性【使用约束来约束完整性】
域完整性【主要约束记录的】检查约束
非空约束
默认约束
唯一性约束
主键完整性
每个表格必须添加主键
引用完整性
表格外键的建立
相关文章推荐
- 10w分区表,hive能跑,sparksql运行也完全能跑起来
- MySQL中使用SQL语句对字段进行重命名
- Ubuntu 安装mysql和navicat、DBeaver
- mysql服务性能优化—my.cnf配置说明详解(16G内存)
- Optimizing Oracle RAC
- mysql外键(FOREIGN KEY)的简单使用
- mysql忘记密码怎么搞?
- Mysql登录问题
- 数据库设计
- MySQL查看与修改当前数据库编码的方法
- 数据库(一):概述
- 为什么在SQL语句的GROUP BY里面不可以使用别名
- MySQL查询空字段或非空字段(is null和not null)
- SQL存储过程分配宿舍实例
- Mysql忘记密码,成功找回的经过!
- SQL存储过程登陆实例
- SQL对表的基本操作
- MySQL 数据库常用命令小结
- Oracle数据库--实用操作(6)触发器
- MySQL主从配置