MYSQL数据库属于关系数据库

建立数据库系统离不开数据模型。模型是对现实世界的抽象,在数据库技术中用模型的概念描述数据库的结构与语义,对现实世界进行抽象,能表示实体类型及实体间联系的模型称为“数据模型”。

数据类型的种类很多,目前被广泛使用的分为两种类型。一种是独立于计算机系统的数据模型,完全不涉及信息在计算中的表示,只是用来描述某个特定组织所关心的信息结构,这种模型称为“概念数据模型”。概念数据模型是按用户的观点对数据建模,强调其语义表达能力,概念应该简单、清晰、易于用户理解,它是对现实世界的第一层抽象,使用户和数据库设计人员之间进行交流的工具。其典型代表就是著名的“实体关系模型”。

另一种数据模型是直接面向数据库的逻辑结构,他是对现实世界的第二次抽象。这种模型直接与数据库管理系统有关系,称为“逻辑数据模型”,包括层次模型、网状模型、关系模型和面向对象模型。逻辑数据模型应该包含数据结构、数据操作和数据完整性约束三个部分,通常有一组严格定义的无二议性的无二议性语法个语义的数据库语言,人们可以用这种语言来定义、操作数据库中的数据。

在逻辑数据模型的4种模型中,层次模型和网状模型已经很少应用,而面向对象模型比较复杂,尚未达到关系模型数据库的普及程度。目前理论成熟、使用普及的模型就是关系模型。

关系模型是由若干个关系组成的集合,关系模式的实例称为关系,每个关系上是一张二维表格。关系模型用键导航数据,其表格简单,用户只需要用简单的查询语句就可以对数据进行操作,并不涉及存储结构、访问技术等细节。SQL语言是关系数据库的代表性语言,已经得到了广泛的应用。典型的关系数据库产品有DB2、Oracle、Sybase、SQL server等。

关系数据是以关系模型为基础的数据库,根据表、元组、字段之间的关系进行组织和访问数据的一种数据库,它通过若干个表来存取数据,并通过该案关系将这些表联系在一起。关系数据库是目前最广泛的数据库。关系数据支持关系模型的数据库。

目前,在实际数据库系统中支持的数据模型主要有3种,即层次模型、网状模型和关系模型。自21世纪80年代以来,计算机厂商推出的数据库管理系统几乎都是支持关系模型的数据库,关系模型已经占领市场主导地位。

关系模型是由3个组成部分,即数据结构、数据操作和完整性规则。

关系模型建立在严格的数学概念的基础之上,它用二维表来描述实体与实体之间的关系。

例如在一个有关学生信息的名为student的表中,每个列包含所有者的某个特定类型的信息,比如学号】姓名、性别、专业。

数据库字段

关系模型的基本术语如下。

  • 关系(Relation):一个二维表就是一个关系。
  • 元组(Tuple):二维表中的一行即位一个元组。
  • 属性(Attribute):二维表中的一列即为一个属性,给属性取一个名称即属性名。
  • 域(Domain):属性的取值范围。

关系模式是对关系的描述,可表示为关系名(属性 1 ,属性 2,...,属性 n)。例如上面的关系可以描述为学生(学号,姓名,性别,专业)。

一个关系模型是若干个关系模式的集合,在关系模型中,实体以及实体间的联系都用关系来表示。例如学生、课程、学生与课程之间的多对多联系在关系模型中可以如下表示:

学生(学号、姓名、性别、专业)
课程(课程号、课程名、学分)
选修(学号、课程号、成绩)

由于关系模型概念简单、清晰、易懂、易用,并有严密的数学基础以及在此基础上发展起来的关系数据理论。简化了程序开发及数据库建立的工作量,因此而迅速获得了广泛的应用,并在数据库系统中占据了统治地位。

关系型数据模型的操作与完整性

关系模型提供了一组完备的高级关系运算,以支持对数据库的各种操作。关系数据库的数据库操作语言(DML)的语句分为查询语句和更新语句两大类,查询语句用于描述用户的各类检索需求:更新语句用于描述用户的插入、修改和删除等操作。关系数据操作语言建立在关系代数的基础之上,具有以下特点。

  1. 以关系为单位进行数据操作,操作的结果也是关系。
  2. 非过程性强:很多操作只需指出做什么,而无需步步引导怎么去做。
  3. 以关系代数为基础,借助于传统的集合运算和专门的关系运算,使关系数据语言具有很强的数据操作能力。

数据库操作语言中对数据库进行查询和更新等操作语句。

  • SELECT···INTO语句:用于创建一个查询表。
  • INSERT···INTO语句:用于向一个表中添加一个或者多个记录。
  • SELECT语句:按指定的条件在一个数据库中查询的结果,返回的结果被看作记录的集合。
  • UPDATE语句:用于创建一个更新查询,根据指定的条件更改指定表中的字段值。UPDATE语句不生成结果集,而且在使用更新查询更新记录之后不能取消这次操作。
  • DELETE:用于创建一个删除查询,可以从列在FROM子句之中一个或多个表中删除记录,且该子句满足WHERE子句中的条件,可以使用DELETE删除多个记录。
  • INNER JOIN操作:用于组合两个表中的记录,只要公共字段之中有相符的值即可。用户可以在任何FROM子句中使用INNER JOIN运算。这是最普通的连接类型,只要在这两个表的公共字段之中有相符的值,内部连接将组合两个表中的记录。
  • LEFT JOIN操作:用于在任何FROM子句中组合来源表的记录。使用LEFT JOIN运算创建一个左边外部连接。左边外部连接将包含从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。
  • RIGHT JOIN操作:用于在任何FROM子句中组个来源表的记录。使用RIGHT JOIN运算创建一个右边外部连接。右边外部连接将包含从第二个(右边)表开始的两个表的全部记录,即使在一个(左边)表中并没有相符值的记录。
  • PARAMETERS声明:用于声明参数查询中的每一个参数的名称及数据类型。PARAMETERS声明是可选的,但是当使用时需要置于任何其他语句之前,包括SELECT语句。
  • UNION操作:用于创建一个联合查询,它组合了两个或者更多的独立查询或表的结果。

所有在一个联合运算中的查询都需要请求相同数目的字段,但是字段不必大小相同或数据类型相同。根据关系数据理论和Codd提出了RDBMS的12项准则。

  • 信息准则:关系数据库中的所有信息都应在逻辑上一级用一种方法,即表中的值显示的表示。
  • 保证访问准则:依靠与表名、主键和列名,保证能以逻辑的方式访问数据库中的每个数据项。
  • 空值的系统化处理:RDBMS支持空值(不同于空的字符串或者空白字符串,并且不为0)系统化地表示缺少的信息,且与数据类型无关。
  • 基于关系模型的联机目录:数据库的描述在逻辑上应该和普通数据采用同样的方式,使得授权用户可以使用查询一半数据所用的关系语言来查询数据库的描述信息。
  • 统一的数据子语言准则:一个关系系统封可以具有多种语言和多种终端使用方式(例如表格填空方式、命令行方式等)。但是必须有一种语言,她的语句可以表示为具有严格语法规定的字符串,并能全面地支持数据定义、视图定义、数据操作(交互式或程序式)、完整约束、授权、事务控制(事务开始、提交、撤销)等功能。
  • 视图更新准则:所有理论上可更新的视图也应该允许由系统更新。
  • 高阶的插入、更新和删除:把一个基本关系或导出关系作为一个操作对象进行数据的检索以及插入、更新和删除。
  • 数据的物理独立性:无论数据库的数据在存储表示上或存取方法上做任何变化,应用程序和终端活动要都保持逻辑上的不变性。
  • 数据和逻辑独立性:当基本表中进行理论上信息不受损害的任何变化时,应用程序和终端活动都要保持逻辑上的不变性。
  • 数据完整性的独立性:关系数据库的完整性约束必须是用法数据子语言定义并存储在目录中的,而不是在应用程序中加以定义的。至少要支持以下两种约束:实体完整性,即主键中的属性不允许为NULL;参照完整性,即对于关系数据库中每个不同的非空的外码值必须存在一个取自同一域匹配的主键值。
  • 分布的独立性:一个RDBMS应该具有分布独立性。分布独立性是指用户不必了解数据库是否为分布式的。
  • 无破坏准则:如果RDBMS有一个低级语言(一次处理一个记录),这一低级语言不能违背或绕过完整性准则以及高级关系语言(一次处理若干记录)表达的约束。

数据库管理系统是对数据进行管理的大型系统软件。它是数据库系统的核心组成部分,用户在系统中的一切操作(包括数据定义、查询、更新及各种控制)都是通过DBMS进行的。

关系模型的完整性规则是对数据的约束。关系模型提供了3类完整性规则,即实体完整性规则、参照完整性规则和用户定义的完整性规则。其中实体完整性汇总和参照完整性规则是关系模型必须满足的完整性约束条件,称为关系完整性规则。

  • 实体完整性约束:约束关系的主键中属性值不能为空值。空值(null)就是不知道或者不能使用的值,它与数值0个空字符串的意义都不一样。
  • 参照完整性约束:关系之间的基本约束。如果关系的外键R1与关系R2的主键相符,那么外键的每个值必须在关系的R2的主键的值中找到或者是空值。
  • 用户定义的完整性约束:它反应了具体应用中数据的语义要求,针对某一具体的实际数据库的越约束条件。它由应用环境决定,反应某一具体应用所涉及的数据必须满足的要求。关系模型提供了定义和检验这类完整性的机制,以便用统一的、系统的方法处理。而不必由应用程序承担这一功能。

关系型数据模型的存储结构

关系型数据模是以关系数学理论为基础的,用二维表结构来表示实体之间联系的模型称为关系模型。在关系模型中把数据看成是二维表中的元素。操作的对象和结果都是二维表,一张二维表就是一个关系。关系模型与层次模型、网状模型的本质区别在于数据描述的一致性,模型概念单一。在关系型数据库中,每一个关系都是一个二维表,无论是实体本身还是实体间的联系均用称为“关系“的二维表来表示。它由表名、行和列组成。表的每一行代表一个元组,每一列称为一个属性,这使得描述实体的数据本身能够自然地反应它们之间的联系。传统的层次和网状模型数据库是使用链接指针来存储和体现联系的。尽管关系型数据库管理系统比层次型和网状型数据库管理系统的出现晚了很多年,但关系型数据库以其完备的理论基础、简单的模型、说明性的查询语言和使用方便等优点得到了最广泛的应用。