zoukankan      html  css  js  c++  java
  • 数据库基础

      数据库的模型

    1.层次结构模型:一个父表对应着多个子表,但一个子表都对应着一个父表。

    代表是IMS(数据库管理信息系统)

    缺点:结构很难改变,表示表之间的关系时也有一定的局限性,使用层次结构模型设计数据库是比较少的。

    2.网状结构模型:打破了层次结构模型使用的限制,可以更全面的描述数据库中表之间的关系,可以一个附表没有子表,也可以一个子表有多个父表,还可以设置两个表之间的多种关系。

    代表是DBTG

    缺点是:对数据库的设计者要求很高,必须要非常熟悉数据库才能使用网状结构模型。

    3.关系结构模型: E.F.Codd给下的定义是“关系数据结构保护数据,并且允许以一种可以预测并防止差错的方法操作数据” 关系模型实际上就是二维表格模型,行是一个元组,列是一个属性,现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。

     关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。

    一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织,当前主流的关系型数据库有Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL、浪潮K-DB等。

    实体关系模型(Entity-Relationship Model),简称E-R Model是陈品山(Peter P.S Chen)博士于1976年提出的一套数据库的设计工具,他运用真实世界中事物与关系的观念,来解释数据库中的抽象的数据架构。实体关系模型利用图形的方式(实体-关系图(Entity-Relationship Diagram))来表示数据库的概念设计,有助于设计过程中的构思及沟通讨论。

    标准数据查询语言SQL就是一种基于关系数据库的语言,这种语言执行对关系数据库中数据的检索和操作。

    数据库的三级模式和二级映像

    数据库的模式(Schema)书上是这么定义的:

    对现实世界的抽象,是对数据库中全体数据的逻辑结构和特征的描述。反应的是数据的结构及其联系

    三级模式

     

    1.模式(面向建立和维护数据库人员的概念级)  模式是对所有的数据,按照统一的观点构造的全局逻辑结构,是对数据库中全部数据的逻辑结构和特征的总体描述,是所有用户的公共数据视图。它是由数据库管理系统提供的数据模式描述语言(DDL)来描述、定义的,体现并范颖了数据库系统的整体观。

    2.外模式(面向用户或应用程序的用户级) 某个或者某几个用户所看到的数据库的数据视图,是与某一应用有关的数据逻辑的表示。外模式是从模式导出的一个子集,包含模式中允许特定用户使用的那部分数据。可以通过利用数据操控语言(DML)对这些数据记录进行操作。

    3.内模式(面向系统程序员的物理级) 数据库中全体数据的内部表示或底层描述,是数据库最低一级的逻辑描述,它描述了数据在存储介质上存储方式的物理结构,对应着实际存储在外存储介质上的数据库

    对数据的三个抽象级别,它把数据的具体组织留给DBMS(数据库管理系统)管理,是用户能逻辑地、抽象地处理数据,而不必关系数据在计算机中的具体存储于表示。为了能在内部实现这3个抽象层次的联系和转换,DBMS在这3个级别之间提供了两层映像。

    二级映像

    1.外模式/模式映像:使数据具有较高的逻辑独立性。定义了外模式与模式之间的对应关系。这些映像通常包含在各自外模式的描述中。模式改变时,DBA(数据库管理员)要对相关的外模式/模式 映像做相应的改变,以使外模式保持不变。应用程序时依据数据的外模式编写的,外模式不变应用程序就没必要改变。所以,外模式/模式映像功能保证了数据与程序的逻辑独立性

    2.模式/内模式映像:使数据具有较高的物理独立性。定义了数据库全局逻辑结构与存储结构之间的对应关系。该映像通常包含在模式描述中。当数据库的存储结束了,DBA要对模式/内模式映像做相应的改变,以使模式保持不变。模式不变,与模式没有直接联系的应用程序也不会改变,所以,模式/内模式映像功能保证了数据与程序的物理独立性。

    总结一下,数据库对不同的用户提供了不同等级的视图,
    所谓视图,就是指观察、认识和理解数据的范围、角度和方法,是数据库在用户“眼中"的反映,很显然,不同层次(级别)用户所“看到”的数据库是不相同的。


    数据库中的相关术语

    1.:存放数据用的数据表,每一个数据库中都可以包含多张数据表,但是数据表的名字不能重复。表的一行代表一条记录,每一列都有一个列名,列名是唯一的,行与列的交叉
    点称为字段
    2.视图:数据库中的虚拟表。视图中存放的是从数据库表中查询出来的记录,使用视图是为了方便信息查询。
    3.存储过程:是由SQL语句和控制流语句组成的语句块。存储过程存储在数据库内,可由应用程序通过存储过程的名称调用执行。
    4.触发器:特殊的存储过程,也是由SQL语句和程序控制语句组成的。但是触发器在数据库中是不许调用而自动执行的。
    5.约束:数据库中保证数据库里表中数据完整性的手段。
    分为
    主键约束(PriMary key):每个数据表中只能有一个,但是一个主键约束可以由多个列组成,通常把由多个列组成的主键又叫做复合主键或组合主键。主键约束可以保证主键列的数据没有重复值
    且值不为空,也可以说是唯一地表示表中的一条记录。
    外键约束(Foreign Key):把一个表中的数据和另一个表中的数据进行关联,表和表之间的关联保证数据库中数据的完整性,使用外键保证数据的完整性,也叫参照完整性。
    如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表。外键是用来实现参照完整性的。
    唯一约束:和主键约束一样都是设置表中的列不能重复的约束,区别是一个表中只能由一个主键约束,而却可以由多个唯一约束。通常情况下设置唯一约束的目的就是使非主键列
    没有重复值。唯一约束与主键约束的另一个区别是如果数据表中的某一列中有控制,那么就不能讲这个列设为逐渐列,而可以设置成唯一约束。
    检查约束:用来指定表中列的值得取值范围的。保证了数据的有效性
    非空约束:约束表中的列不允许为空的。

    数据库设计的完整性

    1.实体完整性:要求表中的主键字段都不能为空或者重复的值。

    2.区域完整性:输入到数据库的数据是在有效范围内的。

    3.参照完整性:保证数据库中相关联的表里面数据的正确性

    范式

    关系型数据库的设计标准就是数据库的范式。

    第一范式:关系型数据库设计的第一步。 只要使用关系型数据库来设计数据库,都能够满足第一范式。

    第一范式(1NF)就是数据表中的字段都是单一属性的,不可再分,也就是可以使任何一种基本数据类型

    第二范式:进一步对关系型数据库进行规范。要求在数据库表中不存在非关键字字段对任一候选关键字段的部分函数依赖,意思就是说在第二范式中组合主键AB里面的A或者B与其他字段不能存在组合重复。

    也就是说非主键不能取决于主键对应的属性。比如商品名称和商品类型,主键为客户和商品名称,而商品类型取决于商品名称,所以不符合第二范式的要求。会出现

    数据冗余

    更新异常、

    插入异常、

    删除异常等问题。

    解决方法家就是把一个表拆分成几张表,让他们相互之间不产生连带作用。

    第三范式:在第二范式的基础上对数据库设计进行规范,第三范式的要求是数据库中不存在非关键字段对任一候选关键字段的传递函数依赖。传递函数依赖,指的是如果存在A决定B、B决定C的决定关系,则C传递函数依赖于A。因此,满足第三范式的数据库表应该不存在依赖关系。

    比如有一个表employee(员工编号,姓名,年龄,所在部门,部门电话) 使用元编号作为主键,那么就存在决定关系,员工编号决定姓名、年龄、所在部门、部门电话这些字段,满足第二范式,但是不满足第三范式,因为存在决定关系,员工编号决定了所在部门,所在部门又决定了所在部门电话,存在函数传递依赖关系,即员工编号决定部门电话。

    解决办法就是分成两个表:员工表:员工部门、姓名、年龄、所在部门

    部门表:部门名称、部门电话。

    还有一种范式是:

    鲍依斯-科的斯范式(BCNF):如果数据库表中不存在任何字段对任一候选关键字段的传递函数依赖。

    E-R图(实体-联系图)

    描述显示师姐的概念模型,构成的基本要素是实体(矩形)、属性(椭圆)和联系(菱形)。

    关系可以有 一对一、一对n、m对n。

     

  • 相关阅读:
    vsphere client cd/dvd 驱动器1 正在连接
    使用SecureCRT上传和下载文件
    java android 将 List中元素互换位置
    java中Math常用方法
    关于View转化成bitmap保存成图片
    Java中Math类的几个四舍五入方法的区别
    Math.round(),Math.ceil(),Math.floor()的区别
    动态的添加ImageView到LinearLayout中并居中显示
    android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)
    Android 代码设置RelativeLayout元素居中
  • 原文地址:https://www.cnblogs.com/wxw7blog/p/7709674.html
Copyright © 2011-2022 走看看