首页 > 数据库 >系统架构设计师笔记第17期: 关系数据库

系统架构设计师笔记第17期: 关系数据库

时间:2023-06-17 14:06:50浏览次数:49  
标签:关系 架构 17 表格 数据库 关系数据库 数据 属性

数据库的分类可以根据不同的标准进行划分:

  1. 根据数据结构分类:

1.1 关系数据库(Relational Database):关系数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据,以表格形式存储数据,并支持事务处理、多用户访问、数据安全性和完整性控制等功能。

1.2 非关系型数据库(NoSQL):非关系型数据库是一种数据存储方案,它不使用关系模型来组织数据,而是使用其他方式,如键值对、文档、图形、哈希等。非关系型数据库通常用于处理大规模、高并发的数据存储需求,如社交网络、电子商务等。

  1. 根据存储方式分类:

2.1 层次数据库(Hierarchical Database):层次数据库是一种以树形结构组织数据的方式,每个数据元素都有一个唯一的父节点,可以有多个子节点。层次数据库通常用于管理具有层次关系的数据,如文件系统和目录。

2.2 网状数据库(Network Database):网状数据库是一种以网状结构组织数据的方式,允许一个节点有多个父节点和多个子节点。网状数据库通常用于管理具有复杂层次关系的数据。

2.3 关系数据库(Relational Database):关系数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据,以表格形式存储数据,并支持事务处理、多用户访问、数据安全性和完整性控制等功能。

2.4 对象关系数据库(Object-Relational Database):对象关系数据库是一种将面向对象编程和关系型数据库相结合的方案,它支持在 SQL 中使用面向对象的概念,如封装、继承和多态等。对象关系数据库通常用于大型应用程序的开发。

关系数据库的概念

关系数据库的原理是基于关系模型进行数据存储和操作的。关系模型是一种使用数学中的集合理论来描述数据库中表格和字段的模型。在关系模型中,数据被组织成表格,每个表格由行和列组成,行和列的交叉点表示数据值。表格与表格之间可以建立关系,实现数据的关联和连接。

关系数据库的基本原理包括以下几个方面:

  1. 关系模型:关系数据库使用关系模型来描述数据,数据被组织成表格,表格由行和列组成,每个列表示表格中的一个属性,每个行表示一个数据记录。
  2. SQL语言:关系数据库使用SQL语言进行数据的查询、修改和约束管理。SQL是一种标准化的语言,可以方便地进行数据操作和管理。
  3. 事务处理:关系数据库支持事务处理,通过ACID属性保证数据的一致性和完整性。事务是一组操作,这些操作要么全部执行,要么全部取消。
  4. 数据安全性和完整性:关系数据库支持数据安全性和完整性约束,包括主键、外键、唯一性约束、检查约束等。这些约束可以保证数据的完整性和可靠性。
  5. 数据独立性:关系数据库支持数据独立性,即数据和应用程序之间的分离。数据独立性可以使应用程序更容易进行开发和维护。

关系运算

关系数据库的关系运算包括以下几种:

  1. 并运算:将两个具有相同结构的关系表格合并成一个新的关系表格,其中包含原来两个关系表格的所有元组。
  2. 差运算:从一个关系表格中筛选出符合特定条件(一般为某个属性值等于某个特定值)的元组,并形成一个新的关系表格。
  3. 交运算:找出两个关系表格中相同的元组,并形成一个新的关系表格。
  4. 笛卡尔积:将一个只有一个属性的关系表格与另一个只有一个属性的关系表格相乘,生成一个新的关系表格,新表格中的属性为原来两个关系表格中属性的组合。
  5. 选择运算:从关系表格中根据指定条件筛选出符合条件的元组,并形成一个新的关系表格。
  6. 投影运算:从关系表格中选择出指定属性组成的新关系表格。
  7. 连接运算:将两个具有共同属性之间的关系表格合并成一个新的关系表格,生成的新表格中包含原来两个关系表格的所有属性。

这些关系运算可以用来对关系数据库中的数据进行操作和处理,例如数据查询、数据分析和数据挖掘等。

关系数据库设计

关系数据库设计基本理论包括三个方面内容:数据依赖、范式和模式设计方法。其中,数据依赖是关系数据库设计的核心内容,它是指数据之间的相互依赖关系,包括函数依赖、多值依赖和连接依赖等。范式是关系数据库设计的一种规范,用于提高数据库的结构合理性和性能。模式设计方法是关系数据库设计的一种方法,用于从需求分析阶段到物理设计阶段进行数据库模式的设计和优化。

其中,数据依赖是关系数据库设计的核心内容。数据依赖指的是数据之间的相互依赖关系,例如一个属性依赖于另一个属性。函数依赖是一个属性集依赖于一个键,是多值依赖和连接依赖的基础。多值依赖是指在函数依赖中,关系可能有多个值与另一个属性相等。连接依赖是指在关系中,存在两个或多个属性之间的依赖关系。

范式是关系数据库设计的一种规范,用于提高数据库的结构合理性和性能。范式包括三种类型:第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。1NF是指每个属性都必须是不可分割的。2NF是指每个非主属性都完全依赖于整个主键。3NF是指每个非主属性都不传递依赖于主键。

模式设计方法是关系数据库设计的一种方法,用于从需求分析阶段到物理设计阶段进行数据库模式的设计和优化。模式设计方法包括以下几个步骤:需求分析、概念设计、逻辑设计和物理设计。在需求分析阶段,需要了解用户的需求,并确定系统的范围和目标。在概念设计阶段,将需求转换为概念模型。在逻辑设计阶段,将概念模型转换为逻辑模型,并进行优化。在物理设计阶段,确定数据库的存储结构、访问方法和存储管理策略。

总的来说,关系数据库设计基本理论包括数据依赖、范式和模式设计方法。这些理论是关系数据库设计的基石,可以帮助数据库设计师更好地设计出结构合理、性能优异的数据库系统。

标签:关系,架构,17,表格,数据库,关系数据库,数据,属性
From: https://blog.51cto.com/u_14540126/6504765

相关文章

  • 洛谷 P8179 Tyres
    滴叉题/se/se题意直接复制了有\(n\)套轮胎,滴叉需要用这些轮胎跑\(m\)圈。使用第\(i\)套轮胎跑的第\(j\)圈(对每套轮胎单独计数)需要\(a_i+b_i(j-1)^2\)秒。滴叉需要进入维修站来更换轮胎,所消耗的时间为\(t\)秒。特别地,滴叉使用的第一套轮胎不需要进站更换。你需......
  • 2023.6.17 每日一题
    原题链接B:CodeforcesRound691(Div.1)-AB.RowGCD-1600题目大意给定两列大正数\(a_1,\dots,a_n\)和\(b_1,\dots,b_m\),现在要求\(a_1+b_j,\dots,a_n+b_j\)的最大公约数。解题思路暴力一个个找不TLE才怪了,我们需要找到每次运算的公共特征。我们知道对......
  • HIMA F7131 981713102 电源单元
    HIMAF7131981713102电源单元HIMAF7131981713102电源单元 引言在一个桥接的局域网里,为了增强可靠性,必然要建立一个冗余的路径,网段会用冗余的网桥连接。但是,在一个透明桥桥接的网络里,存在冗余的路径就能建立一个桥回路,桥回路对于一个局域网是致命的。它会带来如下问......
  • POJ2117 Electricity 题解 tarjan点双连通分量 割点
    题目链接:http://poj.org/problem?id=2117题目大意:给定一个由\(n\)个点\(m\)解题思路:tarjan,判断\(u\)的子节点有几个\(v\)满足\(low[v]\gedfn[u]\)就是答案,但是同时如果\(u\)不是这个dfs树的根节点,个数还要加\(1\)。示例程序1(C++11,POJ不支持):#include<bits/stdc++.h>......
  • 银河麒麟不同架构获取rpm包的方法
    银河麒麟不同架构获取rpm包的方法背景随着信创和网络安全越来越重要现阶段国产化的软硬件部署越来越多.很多时候现场有很多国产化的设备.不同架构.不同版本.还不能上网,无法获取对应的安装介质.这个时候通过一台家里的机器,下载不同版本,架构的rpm包就非常亟需这里想......
  • 任务调度系统架构设计:基于缓存的改进
    目录1.引言2.技术原理及概念2.2.技术原理介绍3.实现步骤与流程4.示例与应用5.优化与改进随着互联网和信息技术的不断发展,任务调度系统已经成为了企业和个人使用的重要工具。一个高效的任务调度系统可以提高生产效率,降低人工成本,优化工作流程,提高企业竞争力。然而,传统的任务......
  • 操作系统架构设计:如何优化系统性能和资源利用率
    目录1.引言2.技术原理及概念2.1.基本概念解释2.2.技术原理介绍3.实现步骤与流程3.1.准备工作:环境配置与依赖安装3.2.核心模块实现3.3.集成与测试操作系统架构设计:如何优化系统性能和资源利用率随着计算机硬件性能的不断提高和软件功能的不断扩展,操作系统在系统性能、资......
  • MegEngine 动态执行引擎 Imperative Runtime 架构解析
    在之前的文章中我们介绍过 MegEngine 的 ImperativeRuntime 以及它与 MegBrain、MegDNN 的关系,这篇文章中我们将介绍 Imperative 中包含的常用组件。在 MegEngine 中,从用户在 python 层编写代码到在 interpreter 层发生计算经过了下面的流程:用户在 python 层......
  • CF1817E Half-sum 另解与 Trygub Number
    一题水两篇怎么说。上一篇中我们采用智慧方法减少了比较次数,避免了使用复杂的高精度数。现在我们有高论!可以做到\(\mathrmO(\log_BV\log_2n)\)在某一位加或者减一个大小\(\mathrmO(V)\)的数,支持判断正负和取特定位的值。怎么做呢。很简单,我们每一位的数值域原本是\([0,......
  • CF1817E Half-sum
    题意有一个大小为\(N\)的非负整数集合\(A\),每次你可以从集合中取任意两个数,并将它们的平均数放回序列。不停操作,知道集合最后剩下两个数。请求出这两个数的差的绝对值的最大值对\(10^9+7\)取模的结果。数据范围:\(1\leN\le10^6,0\leA_i\le10^9\)。做法首先给\(A\)......