02_关系数据库

Posted 河林

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了02_关系数据库相关的知识,希望对你有一定的参考价值。

关系数据库

  关系数据库(Relational Database,RDB)就是基于关系模型的数据库。关系数据库系统是一种重要的数据库数据模型,不但其理论成熟,而且其应用范围较网状和层次数据库系统也广得多。目前,关系型数据库管理系统已成为当今流行的数据库系统,各种实现方法和优化方法比较完善。关系数据库的设计拥有一整套完善的规范化理论,确保设计的数据库尽量减少数据冗余及各种操作异常现象。

关系数据库概念                                                                         

    关系数据库是利用数据库进行数据组织的一种方式,是现代流行的数据管理系统中应用最为普遍的一种,也是最有效率的数据组织方式之。关系数据库建立在集合论坚固的数学基础上。是集合论在数据组织领域的应用。在关系数据库里,历有的数据都按表(按关系理沦的术语,表应该被称为“关系’,)进行组织和管理。

关系数据库的内部结构                                                              

    关系数据库是由数据表和数据表之间的关联组成的。其中数据表通常是一个由行和列组成的二维表,每个数据表分别说明数据库中某特定的方面或部分的对象及其属性。数据库表中的行通常叫做记录或元组。它代表众多共有相同属性的对象中的一个。数据库表中的列通常叫做字段或属性。它代表相应数据库表中存储对象的共有属性。

  从这个学生信息表中可以清楚地看到,该表中的数据都是学校学生的具体信息。其中表中的每条记录代表一名学生的完整信息。每一个字段代表学生的一方面信息,这样就组成了一个相对独.立于其他数据表之外的【学生信息】表。可以对这个表进行添加、删除或修改记录等操作作,而完全不会影响到数据库中其他的数据表。

关系数据库中表的关联                                                              

  在关系型数据库中,表的关联是一个非常重要的组成部分。表的关联是指数据库中的数据表与数据表之间使用相应的字段实现数据表的连接。通过使用这种连接,无须再将相同的数据多次存储,同时,这种连接在进行多表查询时也非常重要。

  在下图所示的【项日计划】表中,使用“负责人编号”列将【项目计划】表同【负责人】表连接起来。使用‘营销员编号’列将【项目计划】表同【营销员】表连接起来。这样,在想通过项目名称查询项目负责人的土资或者营销员姓名时,只需要告知管理系统需要查询的项目名称,然后使用“负责人编号”和“营销员编号”列关联【项目计划】表、【负责人】表就可以实现了。 

注意:

  在数据库设计的过程中,所有的数据表名称都是唯一的.因此不能将不同的数据表命名为相同的名称,但是在不同的表中可以存在同名的列。

关系数据库术语:                                                                     

             关系数据库的特点是在于它将每个具有相同属性的数据独立的存在一个表中。对任何一个表而言,用户可以新增.删除和修改表中的数据,而不会影响表中的其他数据。下面来了解一下关系数据库中一些基础的术语:

实体(entity)                                                                                        

客观存在并可互相区别的事物称为实体。实体可以是集体的人,事,物,也可以是抽象的概念或联系。Eg:一个学生,一个部门,一次选课,教师和院系的工作关系等都是实体。

属性(attribute)                                                                                      

         实体所具有的某一特性称为属性。一个实体可以由若干属性来刻画。Eg:学生实体可以由学号、姓名、性别、出生年月、所在院系等属性组成。

实体型(entity type)                                                                                  

         具有相同属性的实体必然具有共同的特征和性质。用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。Eg:学生(学号,姓名,性别,出生年月,所在院系,入学时间)就是一个实体型。

实体集(entity set)                                                                                   

         同一实体的集合称为实体集。Eg:全体学生就是一个实体集。

联系(relationship)                                                                                  

         在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系。实体内部的联系通常指组成实体的各属性之间联系。实体之间的联系通常指不同实体集之间的联系。

键码(key)                                                                                                

         关系模型中一个重要概念,在关系中用来标识行的一列或多列(唯一标识实体的属性集)。Eg:学号是学生实体的码。

主关键字(primary key)                                                                                         

         它是被挑选出来作为表行的唯一标识的候选关键字,一个表中只有一个主关键字,主关键字又称主键。主键可以由一个字段组成,分别称为单字段主键或多字段主键。

候选关键字(Candidate key)                                                                                     

         它是唯一标识表中的一行而又不含多余属性的一个属性集。

公共关键字(Common key)                                                                              

         在关系数据库中,关系之间的联系是通过相容或相同的属性或属性组来表示的。如果两个关系中具有相容或相同的属性或属性组,那么这个属性或属性组被称为这两个关系的公共关键字

外关键字(foreign key)                                                                                  

       如果公共关键在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外关键字。由此可见,外关键字表示了两个关系之间的联系外关键字又称为外键。

注意:

主健与外键的列名称可以是不同的,但必须要求它们的值集相同,即主健所在表中出现的教据一定要和外键所在表中的值匹配。

关系模型完整性规则                                                                 

  根据关系数据理论和Codd准则的定义,一种语言必须能处理与数据库的所有通信问题,这种语言有时也称为综合数据专用语言。该语言在关系型数据库管理系统中就是SQL 。SQL的使用土要通过数据操纵、数据定义和数据管理3种操作实现。

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

实体完整性                                                                               

       实体完整性指关系的主属性(主键的组成部分)不能为空值。现实世界中的实体是可区分的,au即它们具有某种唯一性标识。相应地,关系模型中以主键作为唯一性标识,主键中的属性即主属性不能取空值(“不知道”或“无意义”的值)。如果主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与现实世界的环境相矛盾,因此这个实体

一定不是一个完整的实体。

参照完整性                                                                               

         如果关系的外键RI与关系R2中的主键相符,那么外键的每个值必须在关系R2中主键的值找到或者是空值。

用户定义完整性                                                                          

         它是针对某一具体的实际数据库的约束条件。它由应用环境所决定,反映某一具体应用所涉及的数据必须满足的要求。关系模型提供定义和检验这类完整性的机制,以便用统一的、系统的方法处理,而不必由应用程序承担这一功能。

以上是关于02_关系数据库的主要内容,如果未能解决你的问题,请参考以下文章

努力想出 SQLAlchemy 模型关系

MySQL join 与关系表上的匹配

SQL - 从两个表中创建与回显数据的关系

02_用户模型设计

声明式 SQLAlchemy 关系()的入门问题

数据结构(02)_模板库的基础设施搭建