数据库学习笔记(二)

关系模型

1.关系数据库的结构

        关系数据库由的集合构成,每个表有唯一的名字。

instructor表

        表中一行代表了一组值之间的联系。由于一个表就是这种关系的集合,表这个概念和数学上的关系这个概念是密切相关的。这正是关系数据模型名称的由来。

元组:一组值的序列(或列表)

        n元组就是一个有n个值的元组,对应于表中的一行。

关系——表、元组——行、列——属性

属性的域:对于关系的每个属性,都存在一个允许取值的集合(原子性:不可再分)

空(null)值:表示值未知或不存在

2.数据库模式

        数据库模式:数据库的逻辑设计

department (dept_name,buildinng,budget)

        数据库实例:给定时刻数据库中数据的快照(具体实例)

3.码

超码(唯一地标识一个元组):一个或多个属性的集合

        例如,instructor关系地ID属性足以将不同的教师元组区分开来,因此,ID是一个超码。

候选码(最小超码):使用最少的有限属性构成的超码。

主码:在一个关系中区分不同元组的候选码。

        通常把一个关系模式的主码属性列在其他属性的前面

外码:

        一个关系模式(如r1)可能在它的属性中包括另一个关系模式(如r2)的主码,这个属性在r1上称作参照r2的外码。关系r1也被成为外码依赖的参照关系,r2叫做外码的被参照关系。

        例如,instructor中的dept_name属性在instructor上是外码,它参照department,因为dept_name是department的主码

参照完整性约束:数据库管理系统(DBMS)中用于维护数据一致性和完整性的一种机制。这些约束确保数据库表中的数据满足特定的规则,从而防止无效的数据被插入或更新到数据库中。

以下是几种常见的参照完整性约束:

  • 主码约束(Primary Key Constraint)

        主码约束确保表中的每一行都有一个唯一的标识符。主键的值不能重复,也不能为空(NULL)。

  • 外码约束(Foreign Key Constraint)

        外码约束用于维护表之间的关系。它确保一个表中的外键值必须在另一个表的主键中存在。这有助于保持数据的一致性,防止无效的引用。

  • 唯一约束(Unique Constraint)

        唯一约束确保表中的某一列(或多列)的值是唯一的,即表中不能有两行具有相同的值。

  • 非空约束(Not Null Constraint)

        非空约束确保表中的某一列不能为空值(NULL)。这意味着在插入或更新记录时,必须提供该列的值。

  • 检查约束(Check Constraint)

        检查约束用于确保列的值满足特定的条件。例如,可以设置一个检查约束来确保某个数值列的值在特定的范围内。

  •  默认约束(Default Constraint)

        默认约束为列提供一个默认值,如果插入或更新记录时没有提供该列的值,则使用默认值。

  • 级联更新和删除约束(Cascading Update and Delete Constraint)

        级联更新和删除约束是外键约束的一个扩展,它定义了当外键关联的行被更新或删除时,相关联的行应该如何处理。

        这些约束共同工作,确保数据库数据的准确性和一致性。违反这些约束会导致数据库操作失败,从而防止无效数据的产生。在设计数据库时,正确地设置和使用这些约束是非常重要的,以确保数据的完整性和可靠性。

4.模式图    

        模式图(Schema Diagram)是一种图形表示方法,用于描述数据库模式(Schema)的结构。数据库模式通常包括表(Table)、列(Column)、数据类型(Data Type)、主码(Primary Key)、外码(Foreign Key)等元素。模式图可以帮助数据库设计者、开发者和其他利益相关者理解数据库的结构,确保数据的一致性和完整性。

模式图通常包括以下元素:

表:用矩形表示,每个矩形代表一个数据库表。
列:用矩形内的列表示,每个矩形内的列表示表中的一个列。
数据类型:用列旁边的文本表示,指明列的数据类型。
主码:用列旁边的下划线表示,表示该列为主码。
外码:用连接线表示,连接两个表,表示它们之间的关联。
关系:用连接线旁边的文本表示,指明表之间的关系类型(如一对多、多对多)。

5.关系查询语言

        查询语言:用户用来从数据库中请求获取信息的语言。

        过程化语言:用户指导系统对数据库执行一系列操作以计算出所需结果。

        非过程化语言:用户只需描述所需信息,而不用给出获取该信息的具体过程。

6.关系运算

        关系运算是数据库管理系统(DBMS)中用于比较和操作关系型数据库中的数据的一种运算。关系运算主要包括以下几种类型:

  1. 比较运算(Comparison Operators)

        比较运算用于比较两个值,并返回布尔值(TRUE 或 FALSE)。常见的比较运算符包括:

  1. 等于(=)
  2. 不等于(<> 或 !=)
  3. 大于(>)
  4. 小于(<)
  5. 大于等于(>=)
  6. 小于等于(<=)
  • 逻辑运算(Logical Operators)

        逻辑运算用于组合比较运算的结果,并返回布尔值。常见的逻辑运算符包括:

  1. 逻辑与(AND)
  2. 逻辑或(OR)
  3. 逻辑非(NOT)
  • 连接运算(Join Operations)

        连接运算用于将两个或多个表中的行基于某个条件进行匹配。常见的连接类型包括:

  1. 内连接(INNER JOIN)
  2. 左连接(LEFT JOIN)
  3. 右连接(RIGHT JOIN)
  4. 全连接(FULL JOIN)
  • 子查询(Subqueries)

        子查询是指在另一个查询中嵌入的查询。子查询可以返回单个值,也可以返回表。子查询通常用于WHERE子句、FROM子句、HAVING子句等。

  • 集合运算(Set Operations)

        集合运算用于处理多个查询的结果集,包括:

  1. 并集(UNION)
  2. 交集(INTERSECT)
  3. 差集(EXCEPT)
  • 排序和分组(Sorting and Grouping)

        排序和分组是SQL查询中常用的操作,用于对查询结果进行排序和分组。

  1. ORDER BY:用于对查询结果进行排序。
  2. GROUP BY:用于将查询结果分组,通常与聚合函数(如COUNT、SUM、AVG等)一起使用。

        关系运算是数据库查询和操作的基础,通过这些运算,可以执行复杂的数据检索和处理任务。

7.关系代数

        关系代数是一种形式化的数学理论,用于描述和操作关系型数据库中的数据。它基于集合代数,提供了一组操作符和规则,用于执行数据库查询和更新操作。关系代数由Alfred V. Aho、Peter J. Weinberger和Brian W. Kernighan在1979年提出,是数据库理论的基础之一。

关系代数的基本操作包括:

  • 并(Union)

        两个关系R和S的并集表示为R ∪ S,包含所有在R或S中的元组。

  • 差(Difference)

        两个关系R和S的差集表示为R - S,包含所有在R中但不在S中的元组。

  •  交(Intersection)

        两个关系R和S的交集表示为R ∩ S,包含同时出现在R和S中的元组。

  • 笛卡尔积(Cartesian Product)

        两个关系R和S的笛卡尔积表示为R × S,包含所有可能的元组组合,其中第一个元组来自R,第二个元组来自S。

  • 投影(Projection)

        关系R的投影表示为πA(R),其中A是R中的属性集合,包含A中所有属性的元组。

  • 选择(Selection)

        关系R的选择表示为σF(R),其中F是R上的条件表达式,包含满足F条件的所有元组。

  • 连接(Join)

        关系R和S的连接表示为R ⋈ S,包含所有满足连接条件的元组对。

  • 自然连接(Natural Join)

        关系R和S的自然连接表示为R ⋈_n S,包含所有在R和S中具有相同值的元组。

  • 除(Division)

        关系R除以关系S表示为R ÷ S,包含所有在R中但不在S中的元组,并且这些元组在R中的每个属性值都能在S中找到。

        关系代数的操作符通常用符号表示,如上述的并、差、交、笛卡尔积等。这些操作符可以组合使用,形成复杂的查询表达式,用于执行数据库查询、数据更新和维护等操作。关系代数提供了一种精确和一致的方式来描述数据库操作,是理解和设计数据库查询语言的基础。

 非关系模型(了解)

        非关系模型(NoSQL)是一种数据库管理系统,它不依赖于传统的关系模型(如SQL)。非关系模型数据库通常用于处理大规模的数据集,它们提供了灵活的数据模型,可以水平扩展,并且能够处理不同类型的数据,如键值对、文档、宽列存储和图数据。

非关系模型的特点

1. 灵活的数据模型

        非关系模型数据库通常不需要固定的模式(schema),这意味着数据可以以不同的格式存储,并且可以动态地添加或删除字段。

2. 水平扩展性

        非关系模型数据库通常设计为可以在廉价的硬件上水平扩展,即通过增加更多的服务器来提高数据库的存储容量和计算能力。

 3. 高可用性和分布式设计

        许多非关系模型数据库采用分布式设计,可以在多个数据中心之间复制数据,提供高可用性和容错能力。

 4. 优化的读写性能

        非关系模型数据库针对特定的读写操作模式进行了优化,例如,键值存储通常用于快速读取和写入,而文档数据库则适合于复杂的查询和事务。

5. 适合大数据和实时应用

        非关系模型数据库适合处理大数据和实时应用,如社交网络、大数据分析和实时推荐系统。

 6. 多种数据模型

        非关系模型数据库支持多种数据模型,包括:

  • 键值存储:数据以键值对的形式存储,如Redis和Memcached。
  • 文档存储:数据以文档的形式存储,如MongoDB和Couchbase。
  • 宽列存储:数据以列簇的形式存储,如Cassandra和HBase。
  • 图数据库:数据以图的形式存储,节点和边代表实体和关系,如Neo4j和Amazon Neptune。

        非关系模型数据库提供了与传统关系数据库不同的解决方案,它们更适合现代应用程序的需求,特别是在需要处理大量非结构化或半结构化数据时。

  • 43
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值