1、范式
第一范式(1NF):
字段都是单一属性,不可再分的。
无重复的列。
只要是关系数据库,就一定满足第一范式。
第二范式(2NF):
非主键列要完全依赖于主键,而不能只依赖于主键的一部分。
所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。
第三范式(3NF):
非主键列必须直接依赖于主键,不能存在传递依赖。即不能存在:非主键列 A 依赖于非主键列 B,非主键列 B 依赖于主键的情况。
属性不依赖于其它非主属性。
2、数据库的四个特性
安全性:要保证数据库中数据的安全,防止未授权用户随意修改数据库中的数据,确保数据的安全。
完整性:数据库的一个重要特征,也是保证数据库中的数据切实有效、防止错误、实现商业规则的一种重要机制。
并发性:用来解决多个用户对同一数据进行操作时的问题。通过使用事务和锁机制,解决了数据库的并发性问题。
监测性:
3、数据库事务的四个特征
原子性(Atomicity):事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做。
一致性(Consistency):事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
隔离性(Isolation):一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。
持续性(Durability):也称永久性,指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。接下来的其它操作或故障不应该对其执行结果有任何影响。
4、事务的隔离级别
未授权读取(Read Uncommitted):也称未提交读。允许脏读取但不允许更新丢失,如果一个事务已经开始写数据则另外一个数据则不允许同时进行写操作但允许其他事务读此行数据。该隔离级别可以通过“排他写锁”实现。事务隔离的最低级别,仅可保证不读取物理损坏的数据。与READ COMMITTED 隔离级相反,它允许读取已经被其它用户修改但尚未提交确定的数据。
授权读取(Read Committed):也称提交读。允许不可重复读取但不允许脏读取。这可以通过“瞬间共享读锁”和“排他写锁”实现,读取数据的事务允许其他事务继续访问该行数据,但是未提交写事务将会禁止其他事务访问该行。SQL Server 默认的级别。在此隔离级下,SELECT 命令不会返回尚未提交(Committed) 的数据,也不能返回脏数据。
可重复读取(Repeatable Read):禁止不可重复读取和脏读取。但是有时可能出现幻影数据,这可以通过“共享读锁”和“排他写锁”实现,读取数据事务将会禁止写事务(但允许读事务),写事务则禁止任何其他事务。在此隔离级下,用SELECT 命令读取的数据在整个命令执行过程中不会被更改。此选项会影响系统的效能,非必要情况最好不用此隔离级。
串行(Serializable):也称可串行读。提供严格的事务隔离,它要求事务序列化执行,事务只能一个接着一个地执行,但不能并发执行。如果仅仅通过“行级锁”是无法实现事务序列化的,必须通过其他机制保证新插入的数据不会被刚执行查询操作事务访问到。事务隔离的最高级别,事务之间完全隔离。如果事务在可串行读隔离级别上运行,则可以保证任何并发重叠事务均是串行的。
5、隔离级别的效果
更新丢失(lost update):当系统允许两个事务同时更新同一数据是,发生更新丢失。
脏读(dirty read):当一个事务读取另一个事务尚未提交的修改时,产生脏读。
不可重复读取(nonrepeatableread):同一查询在同一事务中多次进行,由于其他提交事务所做的修改或删除,每次返回不同的结果集,此时发生不可重复读取。
两次更新问题(Second lost updates problem):无法重复读取特例,有两个并发事务同时读取同一行数据然后其中一个对它进行修改提交而另一个也进行了修改提交这就会造成第一次写操作失效
幻像(phantom read):同一查询在同一事务中多次进行,由于其他提交事务所做的插入操作,每次返回不同的结果集,此时发生幻像读。
6、数据库锁
排它锁(Exclusive Locks,即X锁):当数据对象被加上排它锁时,其他的事务不能对它读取和修改。
共享锁(Share Locks,即S锁):加了共享锁的数据对象可以被其他事务读取,但不能修改。
乐观锁(Optimistic Lock):乐观锁假定在处理数据时,不需要在应用程序的代码中做任何事情就可以直接在记录上加锁、即完全依靠数据库来管理锁的工作。
悲观锁(Pessimistic Lock):悲观锁对数据库系统的自动管理不感冒,需要程序员直接管理数据或对象上的加锁处理,并负责获取、共享和放弃正在使用的数据上的任何锁。
分享到:
相关推荐
数据库课程设计数据库课程设计是一个综合性的实践活动,旨在通过实践加深学生对数据库理论知识的理解和应用,培养其解决实际问题的能力。以下是对数据库课程设计的一般性介绍和步骤概述: 一、课程设计的目的 ...
本文主要介绍数据库理论知识,着重讲解数据库结构设计时的依赖关系推导方法,涵盖一范式、二范式、三范式等内容,适合数据库学习者。 数据库结构设计是数据库设计的核心部分,良好的数据库结构设计可以提高数据库的...
使用场景及目标:本作业旨在帮助学生巩固和应用所学的数据库理论知识,提高解决实际问题的能力。具体来说,通过完成任务可以深入理解如何设计高效的数据库模型、识别数据冗余并将其消除,同时学会优化复杂的查询操作...
在传统的数据库教学模式中,理论要比实践重要,实践教学都是处于从属的地位,只是与这单一的理论课程相关,很少涉及到奇特的专业课程,这就导致很多学生在完成数据库理论知识的学习之后,无法进行合理有效的应用,...
### 数据库理论知识点详解 #### 一、数据库与电子商务系统组件关系 在电子商务系统的构建过程中,数据库扮演着至关重要的角色。根据题目中的描述,“数据库理论课全部答案 武汉大学国际软件学院数据库理论课答案”...
总之,这个“数据库理论实例精析”资源旨在提供全面的数据库理论知识,并结合SQL2000的实际操作,为初学者和教师提供宝贵的教材。通过学习,不仅可以掌握数据库的基础概念,还能熟练运用SQL2000进行数据库管理和开发...
这些讲义内容全面且深入,适合对数据库感兴趣的初学者或希望巩固数据库理论知识的学习者。通过学习,读者将能够掌握数据库系统的核心概念,理解SQL的使用,熟悉数据建模方法,并对数据库的内部运作有更深入的了解。
通过这份吉林大学的英文课件,不仅能够提升数据库理论知识,还能锻炼英语阅读和理解能力,对于从事IT行业的人员来说,这是一份非常有价值的资源。尽管是英文材料,但挑战英语的同时,也将加深对数据库原理的理解,为...
理论考试主要测试考生对数据库理论知识的掌握,而实际操作考试则侧重于测试考生使用数据库管理系统的实际能力。 考试难度和认证: 计算机二级数据库考试的难度是中等,它要求考生具备一定的计算机操作能力和数据库...
通过系统地学习和反复练习这些真题,考生不仅可以巩固数据库理论知识,还能提升实际操作技能,为通过"软考数据库系统工程师"考试打下坚实基础。同时,解决历年真题的过程也能帮助考生了解考试的题型、难度和考察重点...
Oracle数据库是甲骨文公司推出的一个功能强大的关系数据库管理系统,它广泛应用于金融、电信、制造等行业。...通过这些试题,不仅能够加深对Oracle数据库理论知识的理解,还能够提高解决实际问题的能力。
总的来说,"2004-2018年软考之数据库系统工程师真题及答案"是备考者宝贵的参考资料,它不仅包含了丰富的数据库理论知识,还体现了实际工作中的技能需求。通过深入研究和实践,考生可以全面提升自己在数据库领域的...
实验涵盖了从基本的SQL语法到复杂的数据操作和管理,通过一系列精心设计的实验任务,让学生在实践中学习和掌握数据库理论知识。 在Oracle数据库基础练习中,学生将学习如何创建、管理以及操作数据库对象,如表格、...
本文档总结了碟片出租后台数据库设计的知识点,涵盖了数据库理论知识、数据库设计、SQL Server的使用方法、软件工程的设计思想等方面。 数据库理论知识 * 数据库管理系统(DBMS)的概念和作用 * 数据库设计的步骤...
"数据库学习经典教程"旨在为初学者和有一定基础的学习者提供全面、深入的数据库理论知识与实践技巧。本教程通过一系列精心设计的PPT课件,帮助读者逐步理解数据库的基本概念、原理及应用。 首先,我们要了解什么是...
首先,课程设计的目标在于巩固学生的数据库理论知识、培养实践能力和问题解决能力,增强团队合作精神。接着,课程设计分为需求分析、数据库设计、数据库实现、数据库操作与查询、数据库应用开发、测试与优化以及撰写...
"数据库中级工程师"是其中的一个重要级别,针对具备一定数据库理论知识和实践经验的专业人士。这个级别的考试旨在评估考生在数据库设计、管理、优化和故障排除等方面的能力。 在准备"软考数据库中级工程师"的过程中...
通过认真研究和练习这些试题,考生不仅可以提升数据库理论知识,还能提高实际操作和问题解决能力,为在实际工作中处理复杂数据库问题打下坚实基础。祝愿所有考生都能在复习过程中收获满满,考试顺利!