zoukankan      html  css  js  c++  java
  • 数据库系统

    • 什么是数据库?

    数据库就是长期存储在计算机内有组织,可共享的数据集合。数据库系统具有共享性高,冗余度低,数据独立性高的特点。

    • 数据库出现不一致性,原因?

    由于数据冗余,数据库的并发控制不当造成,各种故障,错误,如软硬件故障的失误。

    • 数据库系统特点?

    数据的结构化,数据库系统实现整体的结构化,数据不是面向单一应用程序,而是面对整个组织或企业。这是数据库系统区别与文件系统最主要的特征。

    数据共享性高,冗余度底,易扩充。

    数据的独立性,数据库中的三层模式和两层映像保证了数据的独立性。应用程序与数据库中数据的存储结构之间的物理独立性,应用程序与数据库中数据逻辑结构之间的逻辑独立性。

    数据由DBMS统一管理和控制。具有安全性保护,完整性检查,并发控制,数据库恢复的功能。

    • 数据,数据库,数据库系统,数据库管理系统?

    数据,描述事物的符号记录称为数据,数据有文字,图像,图形,音频,视频。数据与其语义不可区分。

    数据库,长期存储在计算机内,有组织,可共享的数据集合。数据库中数据按照一定的数据模型组织,描述,储存。数据库中数据具有独立性,冗余度底,可共享的特征。

    数据库系统,在计算机系统中引入数据库后的系统构成。数据库系统包括数据库,数据库管理系统,应用程序,数据库管理员。

    数据库管理系统,是用户和操作系统之间的一层数据管理软件。科学的组织和存储数据,高效的获取和维护数据。数据库管理系统具有定义,操纵数据,管理数据库的运行,以及数据库的建立和维护功能。

    • 使用数据库系统的好处?

    提高了应用程序的开发效率。开发人员不必考虑数据的组织,存储和数据的存取,这些工作都由数据库管理系统来完成。

    当应用逻辑改变时,数据的逻辑结构也需要改变,此时数据库系统提供了程序和数据之间的独立性,所以数据逻辑结构改变就是DBA的责任。开发人员不必修改应用程序,简化了应用程序的编制,减少了应用程序的修改和维护。

    使用数据库系统可以减轻数据库管理人员维护系统的负担。总之,使用数据库系统有集中管理数据,控制数据冗余,提高数据的利用率和一致性,管理和维护应用程序。

    • 文件系统和数据库系统的联系,区别?

    文件系统和数据库系统都是计算机系统中管理数据的软件。

    文件系统面向某一个应用程序,数据共享性差,独立性差,冗余度高。记录内有结构,整体无结构,数据由应用程序自己控制。

    数据库系统面向现实世界,数据共享性高,冗余度底,具有物理独立性和逻辑独立性,数据结构化,由数据模型来描述。数据库管理系统提供安全性,完整性,并发控制,数据恢复等功能。

    • 简述适应于文件系统的实例,适用于数据库系统的实例?

    数据的备份,软件或应用程序使用过程中的临时数据存储使用文件系统比较合适。

    企业或部门的信息系统使用数据库系统比较合适。某个工厂的信息管理系统,学生管理系统,人事管理系统,图书馆中的图书管理系统都使用数据库系统较为合适。

    • 数据模型概念,数据模型作用,数据模型三个要素?

    数据模型是数据库中对现实世界的抽象工具,是数据库中用于提供信息表示和操作手段的形式架构。

    数据模型是严格定义的概念的集合,这些概念精准的描述系统的静态特性,动态特性,以及数据库完整性约束。因此,数据模型包括数据结构,数据操作,完整性约束三部分。

    数据结构,所研究对象类型的集合,是系统的静态描述。

    数据操作,对数据库中各种对象允许进行各种操作的集合,对系统的动态描述。

    数据约束条件,完整性规则的集合,完整性规则对给定的数据模型中数据及其联系所具有的制约规则。限定数据模型中的数据库的状态及其变化。

    • 概念模型?作用?

    概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象。是数据库设计人员设计数据库的有力工具,也是数据库设计人员和用户交流的语言。

    信息世界的基本概念有,实体,属性,码,实体型,实体集,联系。

    实体:客观存在并可相互区别的事物称为实体。

    属性:实体所具有的某一特性称为属性。

    码:唯一标识实体的属性集称为码。

    实体型:用实体名和属性名的集合来刻画和抽象同类实体,称为实体型。

    实体集:同一类型的实体型合称为实体集。

    联系:实体的内部联系是指组成实体的不同属性之间的联系。实体的外部联系是指不同实体集之间的联系。

    实体-联系方法是常用的概念模型的表示方法,E-R图来描述现实世界的概念。

    • 数据库系统的结构

    数据库有“型”和“值”的概念,模式相对稳定,实例则相对变动。数据库有三级模式,模式,外模式,内模式。

    1. 模式,称为逻辑模式。是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共视图,一个数据库只有一个模式。
    2. 外模式,也称为子模式和用户模式。是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,与某个应用有关的数据的逻辑表示。一个数据库可以有多个外模式。
    3. 内模式,也称存储模式。它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。一个数据库只有一个内模式。

    数据库的两层映像,外模式/模式映像,模式/内模式映像保证了数据库中数据较高的物理独立性和逻辑独立性。

    1. 外模式/模式映像,保证逻辑独立性。当模式发生改变时,数据库管理员对外模式/模式做出修改,可以使外模式保持不变,应用程序根据数据的外模式编写,从而应用程序不必修改,保证数据的逻辑独立性。
    2. 模式/内模式映像,保证物理独立性。当数据库的存储结构发生改变时,数据库管理员对模式/内模式做出修改,可以使模式保持不变,应用程序也不变,保证了数据的物理独立性。
    • 数据定义,数据操作,数据控制,数据查询?
    1. 数据定义DDL,create,drop,alter,关键字

    2. 数据操作DML,insert,update,delete关键字

    3. 数据控制DCL,revoke,grant关键字

    4. 数据查询DQL,select关键字

    • SQL语言特点?

    1. 综合统一,SQL语言包括数据定义DDL,数据操作DML,数据控制DCL,数据查询DQL。

    2. 高度非过程化,SQL语言只需知道“做什么”。无需知道“怎么做”,操作过程由系统自动完成。

    3. 面向集合的操作方式,不仅操作对象,查询结果是元组的集合,一次性插入,删除,更新的对象也是元组的集合。

    4. 一种语言形式,两种操作方式。SQL语言独立于联机交互,也可以嵌入到高级语言中,供程序员调用。

    5. 语言简洁,易学易用。

    • 什么是基本表?什么是视图?两者的区别?视图特点?视图优点?所有视图都是可以更新?哪类视图可以更新?

    基本表是本身独立存在的表,在关系数据库中一个关系就是一个基本表。

    视图是从一个或几个基本表中导出的表。视图本身不独立存储在数据库中,是一个虚表。数据库只存放视图的定义,不存放视图对应的数据,这些数据仍存放在导出视图的基本表中。

    视图的优点,简化用户操作,使用户从多种角度看待同一数据,重构数据库提供了逻辑独立性,保护机密数据。

    视图是不存放数据的虚表,对视图的更新要转为对基本表的更新。并不是所有视图的更新能够转为唯一有意义的相应基本表的更新。所以并不是所有的视图都可以更新。

    基本表的行列子集视图一般可以更新。

    • 关系模型的三个成分

    数据结构,数据操作,完整性约束。

    关系数据语言有,关系代数语言ISBL,关系演算语言(元组关系演算语言,域关系演算语言),关系代数关系演算两重特点语言SQL。

    • 域,笛卡尔积,关系,元组,属性,主码,候选码,外部码?

    域,具有相同数据类型的值的集合。

    笛卡尔积,不同域之间的一种集合运算。

    关系,笛卡尔积的一个子集称为关系。关系是一张二维数据表。表的每一行为一个元组,表的每一列为一个属性。

    候选码,关系中某一属性组的值能唯一标识一个元组,该属性组为候选码。

    主码,一个关系有多个候选码,选定一个作为主码。

    外部码,f是关系R的一个或一组属性,但不是R的码,f与关系S的码ks相对应,则称f为关系R的外部码,简称外码。

    • 关系,关系模式,关系数据库?

    关系的描述称为关系模式,关系是关系模式在某一时刻的状态或内容,关系模式是静态的,稳定的。关系是动态的,随时间不短变化。

    关系数据库有型和值之分。关系数据库的型称为关系数据库模式,是对关系数据库的描述,定义一些域以及在域上的某些关系模式。关系数据库的值即为这些关系模式在某时刻所对应的关系的集合,称为关系数据库。

    • 数据依赖对关系模式的影响?

    数据依赖通过一个关系中属性间值相等与否体现出数据间的相互关系。是现实世界属性间相互联系的抽象,是数据的内在性质,是语义的体现。函数依赖是数据依赖的一种。部分函数依赖,传递函数依赖会导致关系模式中的插入异常,更新异常,删除异常,数据冗余等诸多问题。

    • 关系模型的完整性规则?参照完整性外码为空条件?

    关系模型的完整性是对关系的某种约束条件。

    实体完整性,属性A是关系R的一个主属性,则属性A的值不能为空。

    参照完整性,属性F是关系R的外码,它与关系S的某个主码ks相对应,则R中每个元组在F上必须取空或等于关系S中某个元组主码值。

    用户定义完整性,针对某一具体关系数据库的约束条件。反映某一应用所涉及数据必须满足的语义要求。

    参照完整性中,F是关系R的外码,但不是关系R的主码,则F可以为空。如果F是外码,但又是主码,则F不能为空。

    • DBMS在实现参照完整性需要考虑的问题?

    参照关系的外码值能否为空。

    删除被参照关系的元组,有以下策略。

    1. 级联删除,同时删除参照关系相关元组。
    2. 受限删除,当参照关系的元组外码值和被参照关系中要删除元组主码值相同时,才删除参照关系的相关元组。
    3. 置空值删除,将参照关系相关元组的外码值置为空。

    参照关系中增加元组时,有以下策略。

    1. 受限插入,不允许在参照关系中插入。
    2. 递归插入,同时在被参照关系中插入一个元组,其主码值为参照关系插入元组的外码值。
    • 自然连接,等值连接?

    等值连接,从关系R,S的笛卡尔积中选取A,B属性值相同的元组。

    自然连接,特殊的等值连接,两个关系中要比较的分量必须是相同的属性组,并在结果中把相同的属性组去掉。若关系R,S有相同的属性组,就可以自然连接。

    • 关系模型,范式?

    关系模型必须要求关系规范化,规范化的关系称为范式。

    第一范式,列不可再分。

    第二范式,非主属性完全函数依赖于主属性。消除了非主属性对码的部分函数依赖。

    第三范式,非主属性间都不传递依赖于主属性。消除了非主属性对码的传递函数依赖。

    第四范式,主属性间无依赖关系。

    • 关系范式中,关系的分解原则?完全函数依赖,部分函数依赖?多值依赖?多值依赖实例?

    无损连接,保持原有的依赖关系。

    关系模式中,函数依赖无法表示一对多的联系,这些属性之间没有直接联系,但有间接联系。把这种没有直接联系,但有间接联系的数据依赖称为多值依赖。

    多值依赖对称性,若X->->Y,则X->->Z。Z=U-X-Y。

    多值依赖传递性,若X->->Y,Y->->Z,则X->->Z-Y。

    函数依赖为多值依赖的特殊情况,若X->Y,则X->->Y。

    关系R(I,S,A)I为兴趣小组,S为学生,A为兴趣小组内活动。每个学生要求参加兴趣小组内的所有活动,每个活动都要求所有学生参加。I->->S,I->->A。

    • BCNF的判断准则?

    关系R属于3NF,不存在主属性对非主属性的函数依赖,则称R为BCNF。

    如果一个关系的每个函数依赖左部都是候选码,则称该关系为BCNF。

    如果一个关系每个决定因素都是候选码,则称为BCNF。

    关系R为1NF,且能决定其他属性取值的属性必定包含码,则称为BCNF。

    • 数据库的安全性和完整性?

    数据库的完整性是保证数据的正确性和相容性。正确性是指数据库中的数据是符合现实中的语义。相容性是指同一个数据库对象中的数据在不同的关系表中符合逻辑。数据库完整性防止数据库中存在不符合语义的数据。

    数据库安全性是指保护数据库,防止不合法使用数据库造成的数据泄露,更改,破坏。

    数据库安全的五种措施。

    用户身份认证,是DBMS提供的最外层的安全方法,每一个用户都有一个用户标识,用户标识包括标识名和标识号。

    多层存取控制,包括用户权限和合法权限检查。

    1. 自主存取控制,用户可以自主的把存取数据的权限授予任何人,也可以把“授权”的权限授予任何人。
    2. 强制存取控制,对比主体敏感度和客体敏感度,决定主体是否有操作客体的权限。主体敏感度强于客体敏感度时,主体才能读客体。主体敏感度弱于客体敏感度,主体能写客体。强制存取控制是对数据本身进行安全标记,无论数据如何复制,标记和数据总是不可分割。只有符合密级要求的用户才能操作数据,提供了更高级别的安全性。

    视图机制,对不同的用户创建不同的视图,把数据对象限制在一定的范围内。通过视图可以把要保密的数据对无权限的用户隐藏,这样就可实现更高级别的数据保护。

    审计机制,将用户对数据库的各种操作都记录到日志文件中,审计员利用审计日志来监控数据库的行为,分析潜在的危险。

    数据加密,使用一定的算法对原始数据加密,不知道加密算法的操作无法获取数据内容。数据加密包括存储加密和传输加密。存储加密有透明加密和不透明加密。传输加密有链路加密和端到端加密。基于SSL的可信传输是端到端加密。

    • 数据库设计各个阶段及其主要任务?

    需求分析,准确了解与分析用户需求。

    概念结构设计,对用户需求总结,归纳,抽象,形成一个独立于DBMS的概念模型。

    逻辑结构设计,将概念模型转为某个DBMS所支持的逻辑模型,并进行优化。

    物理结构设计,为逻辑模型选择一个合适的物理结构,包括存储结构和存取方法。

    数据库实施,设计人员根据DBMS所提供的数据语言,工具,宿主语言,根据逻辑设计和物理设计的结果建立数据库,调试运行,组织数据进入数据库。

    数据库运行,维护,数据库运行阶段对其评价,调整,修改。

    • 需求分析阶段设计目标,调查内容?

    需求分析是调查现实世界中要处理的对象,了解原系统的工作状况,明确用户的需求,进而设计出新系统的功能。

    信息要求,数据库要存储哪些数据,用户能从数据库中获得信息的内容和性质。

    处理要求,用户要完成什么处理,对处理的响应有什么要求,处理方式的选择之类。

    • 数据字典内容,作用?

    数据字典是数据库系统中各种数据描述的集合。包括数据项,数据结构,数据流,数据存储,数据处理。

    数据字典是关于数据库中数据的描述,在需求分析阶段建立,是概念设计阶段的基础。

    数据项是不可再分的数据单位,包括基本数据信息的类型,长度,取值范围。

    数据结构是数据之间的组合关系。

    数据流是数据结构在系统内的传输路径。

    数据存储是数据结构停留或保存的地方。

    处理过程描述该过程的功能及处理要求。

    • 数据库的概念结构,特点?数据抽象?概念结构的重要性?

    概念结构是信息世界的结构,真实而充分的反映现实世界,是对现实世界的一个概念模型。

    易于理解,用概念结构和不理解计算机的用户交换意见。

    易于修改,当应用环境和应用要求改变时,容易对概念模型进行扩充和修改。

    易于向关系,层次,网状模型转变。

    概念结构是数据库设计的关键阶段,是对需求分析阶段所得到的需求进行抽象,以此作为各种数据模型的基础。更精确的使用DBMS实现这些要求。

    常使用E-R图来描述概念模型。

    • 逻辑结构设计,步骤?

    逻辑结构设计是将概念结构设计阶段设计好的E-R图转为选用的DBMS所支持的数据模型相符合的逻辑结构。

    逻辑结构设计阶段的步骤

    首先将E-R图转为关系,层次,网状等数据模型。

    再将关系,层次,网状数据模型转为DBMS所支持的数据模型。对数据模型进行优化。

    • E-R图?E-R图构成元素?E-R图向关系模型的转化规则?

    E-R图是实体-联系表示方法。是描述现实世界概念结构模型的方法。由实体型,属性,联系构成。

    实体型,用实体名和属性名来刻画和抽象同类实体。属性,实体的某个特性,一个实体由若干属性来刻画。联系,也称关系。表示现实世界中实体内部或实体之间的某种联系。

    一个1:1的联系可以转为一个独立的关系模式,也可和其它关系模式合并。如果转为一个独立的关系模式,关系的属性就是实体的属性和联系的属性。关系的码就是

    各实体的码。如果合并其它关系模式,则该关系模式的属性加入另一个关系模式的联系构成新属性。

    一个1:n的联系可以转为一个独立的关系模式,也可以与n端关系模式合并。转为一个独立的关系模式,则各实体的码和联系的属性转为关系的属性。关系的码就是n端实体的码。

    一个n:m的联系可以转为一个独立的关系模式。该联系相连的实体的码和联系的属性转为关系的属性。实体码的组合构成关系的码,或码的一部分。

    三个或三个以上的实体间的多元联系转为一个关系模式。该联系相连的各实体的码和联系的属性组成该关系的属性。关系的码为各实体码的组合。

    • 事务概念,事务特性?

    事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做。是一个不可分割的工作单位。

    事务特性

    1. 原子性,事务是数据库操作的逻辑单位,要么全做,要么全不做。
    2. 一致性,事务对数据库的执行结果必须由一个一致性转为另一个一致性。
    3. 隔离性,一个事务对数据库的操作不能受其它事务的影响。
    4. 持久性,一个事务一旦提交,它对数据库的改变是永久的。
    • 数据库中的封锁

    封锁是一种并发控制技术,用来对共享数据,例如数据库中数据的并行存取。

    共享锁S,对读操作,每个事务都可以获得共享锁。阻止其他事务对已获得个共享锁的数据进行排它封锁。

    排它锁X,一个事务对某个数据进行了排它锁,其他事务就不能再对该数据施加排它锁,而是要等待该事务解除对数据的排它封锁,才能再次加排它锁。

    一级封锁协议,事务T对要修改的数据加X锁,直到事务结束时才释放。能够保证不丢失更新,不能保证读“脏”数据,不可重复读。

    二级封锁协议,一级封锁协议之上加入事务T对要读取的数据加S锁,读完立即释放S锁。

    三级封锁协议,一级封锁协议之上加入事务T对读取的数据加S锁,事务结束后才释放S锁。

    • 事务非正常结束影响数据库数据正确性?为什么要有数据库恢复子系统?

    事务执行的结果必须是从一个一致性转为另一个一致性。如果数据库系统运行发生故障,导致事务被迫中断,事务的另一部分已经完成,对数据库的修改已经写入物理数据库。这时数据

    就出于一种不正确的状态。

    在计算机系统中的硬件故障,软件错误,操作人员的失误,恶意破坏,不可避免。这些故障使事务被迫中断,影响数据库的正确性,破坏数据库,使得数据库中部分数据丢失。必须要有数

    据库恢复子系统。

    • 数据库产生的故障,数据库恢复技术?

    数据库产生事务内部故障,系统故障,介质故障,计算机病毒。

    事务内部故障,系统故障,介质故障影响事务的正常运行。介质故障,计算机病毒破会数据库中数据。

    数据库恢复有数据转储,登录日志文件两种技术。当数据库系统发生故障,利用转储后的数据库后备副本和日志文件就能恢复数据库之前的某种状态。

    • 数据转储,转储方法?

    数据转储是数据库恢复所使用的技术,数据库管理员定期将数据库复制到磁带或磁盘上,当数据库系统遭遇破坏,可将后备副本装入数据库,恢复到转储前的状态。

    转储有静态转储,动态转储方法。

    1. 静态转储,当系统中无用户事务时,才进行转储操作。静态转储操作简单,但必须无用户事务运行,同样,用户事务也必须等待转储操作结束,才能运行。
    2. 动态转储,允许在转储过程中对数据库操作和修改,但是转储过程中,用户事务可能对数据库的数据进行修改,使得后援副本数据库与转储前数据库存在不一致的状况。所以,需要日志文件,记录用户事务对数据库的修改活动。这样,后援副本和日志文件两者共同作用即可得到某时刻数据库的准确状态。
    3. 转储还分为海量转储,增量转储。
    4. 海量转储,每次转储全部数据库。
    5. 增量转储,只转储上次转储之后所更新的数据。
    • 事务日志,作用?登记日志文件为什么先写日志文件,再修改数据库?数据库恢复转储冗余数据?

    日志文件记录事务对数据库的更新操作文件。

    日志文件用于事务故障恢复,系统故障恢复,和后援数据库文件协同完成介质故障恢复。

    修改的数据写入数据库,修改的日志记录写入日志文件这两个是不同的写操作。

    如果先修改数据,而运行记录中没有这个修改,则无法对数据进行恢复。如果先写入日志记录,再修改数据库,在恢复数据库时,只是进行了一次undo操作。所以,一定要先写入日志记

    录,再修改数据库。

    • 根据不同的故障,给出不同的恢复策略和方法?

    事务故障由DBMS完成,对用户完全透明。事务故障恢复方法如下。

    1. 反向扫描日志文件,查找事务的更新操作。
    2. 对事务更新操作进行逆操作,即将日志记录中“更新前的数据”写入数据库。
    3. 继续反向扫描日志文件,做同样处理。
    4. 如此处理下去,直到读到此事务的开始标记,则事务故障恢复完成。

    系统故障有两种形式。

    1. 未完成的事务对数据库更新可能已写入数据库。
    2. 已完成的事务对数据库的更新还停留在缓冲区,未写入数据库。

    对未完成的事务要执行撤销undo操作,对已完成的事务要进行redo操作。

    1. 对日志文件进行正向扫描,找出故障发生时,已提交的事务队列和未完成的事务队列。
    2. 对未完成的事务队列执行undo操作。
      undo操作,反向扫描日志文件,对每个undo事务的更新操作执行逆操作,将日志记录中“更新前的值”写入数据库。
    3. 对已提交的事务队列执行redo操作。
      redo操作,正向扫描日志文件,对每个redo事务重新执行日志记录的登记操作,将日志记录中“更新后的值”写入数据库。

    介质故障恢复操作

    1. DBA装入最新的数据库后备副本,使数据库恢复到转储时的一致性状态。
    2. DBA装入转储结束时刻的日志文件副本。
    3. DBA启动恢复指令,由DBMS完成恢复功能。
    • 检查点恢复,优势?

    利用日志技术恢复数据库,恢复子系统必须搜索日志文件,确定哪些是undo事务,哪些是redo事务。需要检查所有的日志文件。有两个缺点。

    1. 需要搜索全部日志文件。浪费时间。
    2. 许多redo事务已经将它们的更新结果写入数据库,恢复子系统又重新执行这些操作浪费时间

    检查点方法恢复步骤。

    1. 从重新开始文件找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录。
    2. 由该检查点记录得到检查点建立时刻所有正在执行的事务清单。
    3. 从检查点开始正向扫描日志文件。
    4. 对redo事务执行redo操作,对undo事务执行undo操作。
    • 数据镜像,作用?

    数据镜像根据数据库管理员的要求,自动把整个数据库或其中的关键部分复制到磁盘上,每当数据库更新时,DBMS自动把更新后的数据复制过去。DBMS自动保证数据镜像和主数据库的一致性。

    数据镜像用于介质故障时的数据恢复操作,还能提高数据库的可用性,其它用户对数据库中数据加排它锁进行修改,其它用户可以读数据库镜像中数据,而不必等待用户解除排它锁。

    事务日志用于保存事务的更新操作,转储冗余数据包括日志文件,数据库后备副本。

  • 相关阅读:
    Linux Ubuntu安装Mysql5.7
    Linux Ubuntu安装maven3.3.9
    Linux Ubuntu安装tomcat9
    Linux Ubuntu安装JDK1.8
    Win10 U盘安装ubuntu16.04 LTS 双系统
    Linux Mysql5.7 常用语句与函数
    在Linux CentOS 6.6上安装Python 2.7.9
    CentOS6下docker的安装和使用
    How to Install Apache Solr 4.5 on CentOS 6.4
    SpringBoot的日志管理
  • 原文地址:https://www.cnblogs.com/feng1014/p/12383224.html
Copyright © 2011-2022 走看看