数据的概念

对象object,也称为实体型。在现实世界中具有相同性质、遵循相同规则的一类事物的抽象称为对象。对象是实体集数据化的结果,比如学生、老师、课程等是对象。

实例instance 是指对象中的每一个具体的事物,例如学生张三、李四。

属性attribute 是实体的某一方面特征的抽象表示,例如学生的姓名、性别、班级、年龄等。

主码primary key 能够唯一标识一个实体。

次码secondary key 指实体中不能唯一标识实体的属性。

域domain 指属性的取值范围,比如性别中的男、女。

完整性 指存储在数据库中的所有数据值均正确的状态。如果数据库中存储有不正确的数据值,则该数据库称为已丧失数据完整性。

什么是范式

当一个关系中的所有分类都是不可再分的数据项时,该关系是规范化的。不可再分的数据项,即不存在组合数据项和多项数据项。一个低一级的关系模式,通过模式分解可以转换为若干高一级范式的关系模式的集合,这个过程就叫规范化。二维数据表可以分为5级范式为1NF、2NF、3NF、4NF、5NF。第一范式满足最低的要求条件,第五范式满足最高要求的条件。

第一范式条件:必须不包含重复组的关系,即每一列都是不可拆分的原子项。

如以下表存在可再分项(高级职称),所以不满足第一范式

非规范化转换为规范化的第一范式方法很简单,将表分别从横向、纵向展开即可。将高级职称横向展开即可以得到满足第一范式的表结构。

第二范式条件:关系模式必须满足第一范式,并且所有非主属性都完全依赖于主码。注意,符合第二范式的关系模型可能还存在数据冗余、更新异常等问题。

举例如关系模型(职工号,姓名,职称,项目号,项目名称)中,职工号->姓名,职工号->职称,而项目号->项目名称。显然依赖关系不满足第二范式,常用的解决办法是差分表格,比如拆分为职工信息表和项目信息表。

第三范式的条件:关系模型满足第二范式,所有非主属性对任何候选关键字都不存在传递依赖。即每个属性都跟主键有直接关系而不是间接关系,像:a-->b-->c。一般数据库设计中,一般要求达到3NF,第四第五较少涉及。

比如Student表(学号,姓名,年龄,性别,所在院校,院校地址,院校电话)这样一个表结构,就存在上述关系。 学号--> 所在院校 --> (院校地址,院校电话)。我们应该拆开来,如下:

(学号,姓名,年龄,性别,所在院校)--(所在院校,院校地址,院校电话)

数据库的事务性

除了数据库设计三大范式之外,事务处理也是保证数据完整性的重要手段。事务是单独的工作单元,该单元可以包含多个操作以完成一个完整的任务。锁是在多用户环境中对数据访问的限制。事务和锁确保了数据的完整性。

事务处理

提交commit,当所有的操作步骤都被完整执行后,称该事务被提交。

回滚rollback,由于某一操作步骤执行失败,导致所有步骤都没有被提交,则事务必须回滚,即回到事务执行前的状态。

事务ACID属性

事务处理的特性,每一个事务都有他们所共有的特性,叫做ACID特性,分别是原子性atomicity,一致性consistency、隔离性Isolation,持久性Durability。

  1. 原子性,事务的原子性表示事务执行过程中,把事务作为一个工作单元处理,一个工作单元可能包括若干个操作步骤,每个操作步骤都必须完成才算完成,若因任何原因导致其中的一个步骤操作失败,则所有步骤操作失败,前面的步骤必须回滚。
  2. 一致性,事务的一致性保证数据处于一致状态。如果事务开始时系统处于一致状态,则事务结束时系统也应处于一致状态,不管事务成功还是失败。
  3. 隔离性,事务的隔离性保证事务访问的任何数据不会受到其他事务所做的任何改变的影响,直到该事务完成。
  4. 持久性,事务的持久性保证加入事务执行成功,则它在系统中产生的结果应该是持久的。
Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐