系统架构设计专业技能 · 数据库设计

一、数据库概念

1.1 数据模型

数据模型分为:层次模型、网状模型、面向对象模型、关系模型。

数据模型三要素:数据结构、数据操作、数据的约束条件。

数据的约束条件包括:
(1)实体完整性:
(2)参照完整性:
(3)用户定义完整性:

1.2 数据库视图

视图(View)并不在数据库中实际存在,而是一种虚拟表。
在这里插入图片描述

二、数据库模式

数据库一般采用三级模式,系统开发人员需要通过视图层、逻辑层和物理层三个层次上抽象来降低用户屏蔽系统的复杂性,简化用户与系统的交互。
从数据库管理系统的角度,数据库也分为为外模式、概念模式和内模式。
在这里插入图片描述
数据库系统在三级模式之间提供了两级映像:概念模式/内模式映像、外模式/概念模式映像。这两级映像保证了数据库中的数据具有较高的逻辑独立性和物理独立性。

数据库三级模式

外模式概念模式内模式
又叫子模式或用户模式,用以描述用户看到或使用的那部分数据的逻辑结构,用户根据外模式用数据操作语句或应用程序去操作数据库中的数据是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式,定义所有的内部记录类型、索引和文件的组织方式等

数据库两级映像

逻辑独立性物理独立性
对应外模式和概念模式之间的映像。指应用程序与数据库中的逻辑结构独立,当数据的逻辑结构改变时,应用程序不变对应概念模式和内模式之间的映像。指应用程序与磁盘中的数据互相独立。当数据的物理存储改变时,应用程序不变

三、 关系数据库

3.1 关系模型

数据模型三要素:数据结构、数据操作、数据的约束条件。

关系模型表现形式
形式一:
学生(学号,姓名,年龄,班级编号)

形式二:
学生(U,F)
U = { 学号,姓名, 年龄, 班级编号 }
F = { 学号 → 姓名,学号 → 年龄,学号 → 班级编号}

基本概念:
目或度:关系模式中属性的个数。
候选码(候选键):关系中的某一属性或属性组的值,且唯一地标识一个元组。
主码(主键):若一个关系中有多个候选码,则选定其中一个作为主码。
主属性与非主属性:组成候选码的属性就是主属性,其它的就是非主属性。
外码(外键):其他关系的码,就是外键。
全码:关系模式的所有属性组是这个关系的候选码。

完整性约束:

  • 实体完整性约束:规定基本关系的主属性不能取空值。
  • 参照完整性约束:关系与关系间的引用,其他关系的主键或空值。
  • 用户自定义完整性约束:应用环境决定。
  • 触发器:

3.1 关系运算

并(∪)关系R与S的并是由属于或属于S的元组构成的集合

交(∩)关系R与S的交是由属于R同时又属于S的元组的集合

差(—)关系R与S的差是由属于R但不属于S的元组的集合

在这里插入图片描述

笛卡尔积(X)两个关系分别为n列和m列的关系R和S的笛卡尔积是一个(n + m)列的元组的集合。其中的前n列是关系R的一个元组,后m列是关系S的一个元组,记作R X S,如果R和S有相同的属性名,可在属性名前加关系名作为限定,以示区别。若R有K1个元组,S有K2个元组,则R和S的笛卡尔积有K1 X K2个元组。

选择(σ)取得关系R中符合条件的行。

投影(π)取得关系R中符合条件的列。

在这里插入图片描述

连接(Φ):
等值连接:选取关系R、S,取两者笛卡尔积中属性值相等的元组。
自然连接:一种特殊的等值连接,它要求比较属性列必须相同的属性组,并且把结果中重复属性去掉。

在这里插入图片描述

3.1 关系数据设计的基本理论

关系数据库设计的目标是生成一组合适的、性能良好的关系模式,以减少系统中信息存储的冗余度,但又可以方便地获取信息。

3.1.1 函数依赖

设R(U,F)是属性U上的一个关系模式,X和Y是U的子集,r为R的任意关系,如果对于r中的任意两个元组u,v,只要有u[Y] = v[Y],则称X函数决定于Y,或称Y函数依赖于X,记X → Y,称为函数依赖。
例如:学号→ 系号, 系号 → 系名

在这里插入图片描述

3.1.2 键/候选键

在这里插入图片描述

  • 主属性与非主属性:组成候选码的属性就是主属性,其它就是非主属性。

求候选键实例

  • 将关系模式的函数依赖关系用”有向图“的方式表示。
  • 找入度为0的属性,并以该属性集合为起点,尝试遍历有向图,若能正常遍历图中所有结点,则该属性集即为关系模式的候选键。
  • 若入度为0的属性集不能遍历图中所有节点,则需要尝试性的将一些中间节点(既有入度,也有出度的结点)并入入度为0的属性集合中,直至该集合能遍历所有结点,集合为候选键。
    在这里插入图片描述
3.1.3 函数依赖的公理(Armstrong 公理)

从已知的函数依赖,可以推导出另外一些函数依赖,这就需要一系列的推理规则,这些规则常被称为”Armstrong 公理“。

设定关系式R(U, F),U是关系模式R的属性集,F是U的一组函数依赖,则有以下三条推理规则
(1) 自反律若Y ⊆ X ⊆ U, 则X → Y为F所蕴含
(2) 增广律若Z ⊆ U且X → Y为F所蕴含,则XZ → YZ为F所蕴含
(3) 传递律X → Y,Y → Z为F所蕴含,则X → Z为F所蕴含

根据上面的推理规则,又可以推出下面三条规则
(1) 合并规则若X → Y,X → Z,则X → YZ为F所蕴含
(2) 伪传递规则若X → Y,WY → Z,则XW → Z为F所蕴含
(3) 分解规则若X → Y,Z ⊆ Y,则X → Z为F所蕴含

证明如下:
在这里插入图片描述

3.1.4 规范化理论

关系数据库设计的方法之一就是满足适当范式模式,通常可以通过判断分解后的模式达到几范式来评价模式的规范化程度。范式包括:1NF、2NF、3NF、BCNF、4NF、5NF。
在这里插入图片描述
规范级别提升带来了什么影响呢?

(1)第一范式(1NF)在关系模式R中,当且仅当所有域只包含原子值,既每个属性都是不可再分的数据项,则关系模式R属于第一范式

例如:以下不满足1NF,高级职称人数可以再分教授和副教授
在这里插入图片描述

(2)第二范式(2NF)若关系模式R ∈ 1NF,且每个非主属性完全依赖主码时(不存在部分依赖),则关系模式R属于第二范式

例如:以下不满足2NF,课程号可以包含学分
在这里插入图片描述

(3)第三范式(3NF)若关系模式R ∈ 2NF,且没有非主属性对主码的传递函数依赖。则关系模式R属于第三范式

例如:以下不满足3NF,系名和系位置依赖系号
在这里插入图片描述

(4)BC范式(BCNF)设R是一个关系模式,F是它的依赖集,R属于BCNF当且仅当其F中每个依赖的决定因素必定包含R的某个候选码

例如:
在这里插入图片描述

3.1.5 模式分解(是否保持函数依赖&是否无损)

四、数据库设计

数据库设计的基本步骤,可以分为用户需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施阶段(应用程序设计)、运行维护
数据库设计过程:
在这里插入图片描述

4.1 概念结构设计

4.2.1 E-R模型

ER模型简称E-R图 ,是描述概念世界、建立概念模型的实用工具。E-R图的三个要素:
(1)实体:用矩形表示,框内标注实体名称。
(2)属性:用椭圆图形表示,并用连线与实体连接起来。
(3)实体之间的联系:用菱形框表示,框内标注联系名称,用连线将菱形框分别与有关实体相连,并在连线上注明联系类型。
在这里插入图片描述

4.2.2 ER图两个不同实体的联系:

在这里插入图片描述

4.2.3 概念结构设计的过程:

在这里插入图片描述

  • 集成的方法
    多个局部ER图一次集成
    逐步集成,用累加的方式一次集成两个局部ER。

  • 集成产生的冲突及解决办法
    属性冲突:包括属性域冲突和属性取值冲突
    命名冲突:包括同名异议和异名同义
    结构冲突:包括统一对象在不同应用中具有不同的抽象,以及同一实体在不同局部ER图中所包含的属性个数和属性排列次序不完全相同。

4.2 逻辑结构设计

在这里插入图片描述

  • ER图向关系模式的转换
    实体向关系模式的转换
    联系向关系模式的转换
  • 关系模式的规范化
  • 确定完整性约束(保证数据的正确性)
  • 用户视图的确定(提高数据的安全性和独立性)
    根据数据流图确定处理过程的视图
    根据用户视图确定不同用户使用的视图
  • 应用程序的设计

☆ 一个实体型必须转换为一个关系模式
☆ 联系转关系模式
在这里插入图片描述

  • (1)一对一联系的转换有两种方式
    独立的关系模式:并入两端主键及联系自身属性。(主键:任一端主键)
    归并(任意一端):并入另一端主键及联系自身属性。(主键:保持不变)

  • (2)一对多联系的转换有两种方式
    独立的关系模式:并入两端主键及联系自身属性。(主键:多端主键)
    归并(多端):并入另一端主键及联系自身属性。(主键:保持不变)

  • (3)多对多联系的转换只有一种方式
    独立的关系模式:并入两端主键及联系自身属性。(主键:两端主键的组合键)

4.3 并发控制

4.3.1 事务的ACID特性

4.4 数据库的安全性

4.5 数据库备份与恢复

4.6 数据库性能优化

一、应用程序与数据库的交互

一、NoSQL数据库

No SQL(Not-only SQL) :随着互联网web 2.0网站的兴起, 传统的关系数据库在应付web 2.0网站, 特别是超大规模和高并发的SNS类型的web 2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。

关系数据库模式NoSQL模式
并发支持支持并发、效率低并发性能高
存储与查询关系表方式存储、SQL查询海量数据存储、查询效率高
扩展方式向上扩展向外扩展
索引方式B树、哈希等键值索引
应用领域面向通用领域特定应用领域
分类典型应用场景数据模型优点缺点Examples举例
键值(key-value)内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。Key指向Value的键值对,通常用hash table来实现查找速度快数据无结构化,通常只被当作字符串或者二进制数据Redis,Tokyo Cabinet/Tyrant,Voldemort,Oracle BDB
列存储数据库分布式的文件系统以列簇式存储,将同一列数据存在一起查找速度快,可扩展性强,更容易进行分布式扩展功能相对局限HBase, Cassandra,Riak
文档型数据库Web应用(与Key-Value类似, Value是结构化的,不同的是数据库能够了解Value的内容)Key-Value对应的键值对,Value为结构化数据数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构查询性能不高,而且缺乏统一的查询语法。Couch DB, Mongo Db
图形数据库(Graph)社交网络,推荐系统等。专注于构建关系图谱图结构利用图结构相关算法。比如最短路径寻址,N度关系查找等很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。Neo4J, Info Grid,Infinite Graph

一、分布式数据库

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 数据库系统课程设计通常是指在数据库系统课程中的实践项目,旨在让学生能够应用所学的知识和技能,设计和实现一个完整的数据库系统。以下是关于CSDN的数据库系统课程设计的回答: CSDN(中国软件开发者社区)是一个面向IT从业者的在线社区平台,涵盖了广泛的技术和软件开发相关资源。在数据库系统课程设计中,我们可以选择CSDN作为实际项目的主题,设计和构建一个适合CSDN平台使用的数据库系统。 首先,我们需要分析CSDN平台的业务需求和功能,例如用户管理、文章管理、评论管理等。然后,根据这些需求设计数据库的结构和关系模型,确定各个实体之间的关系,以及属性的定义和约束。 在设计数据库的过程中,我们需要考虑到数据的一致性、完整性和安全性。可以使用数据库管理系统(DBMS)中的各种特性和技术,例如事务处理、索引、用户权限管理等来保证数据库的有效性和安全性。 接下来,我们可以进行数据库的物理设计,包括表的创建、字段的定义、数据类型的选择等。此外,还可以考虑使用数据库的分区和冗余备份等策略来提高性能和容错性。 完成数据库设计和创建后,我们可以进行数据的导入和测试。通过测试,我们可以验证数据库的正确性和性能,并进行必要的优化和调整。 在数据库系统课程设计中,除了设计和实施数据库系统,还可以扩展项目的范围,例如设计一个CSDN平台的用户界面或开发一个相关的数据分析工具,以提高项目的实用性和学习效果。 通过数据库系统课程设计,学生可以全面了解数据库系统的原理和应用,锻炼数据库设计和开发的实践能力,并在完成项目的过程中提高解决问题和合作能力。这对于学生的综合素质和就业竞争力的提升都具有重要意义。 ### 回答2: 数据库系统课程设计是计算机科学与技术专业的一门重要课程,通过该课程的学习与设计,学生可以了解和掌握数据库系统的基本原理、结构和技术,并能够运用所学知识设计和实现具有一定规模和复杂度的数据库应用系统。 在数据库系统课程设计中,我们通常会利用CSDN(中国软件开发者社区)等互联网资源平台作为学习和参考的途径。CSDN是一个以程序员为核心的知识分享平台,上面有海量的技术文章和大量的开发工具、代码示例等资源。 在课程设计过程中,我们可以通过CSDN获取与数据库系统相关的最新技术资讯,了解最新的数据库系统发展动态,掌握行业前沿技术。同时,我们还可以通过CSDN的博客、论坛等交流平台,与其他同学或行业专家进行交流和讨论,共同解决设计与实现中遇到的问题,获得更多的经验和建议。 此外,CSDN还提供了许多数据库系统相关的学习资源,如数据库系统的基础知识、常用数据库管理系统的介绍与使用方法、数据库设计与规范等。通过查阅这些资源,我们可以更好地了解和掌握数据库系统的基本概念、原理和技术,为课程设计提供参考和指导。 总的来说,数据库系统课程设计是通过学习和实践,掌握数据库系统相关知识和技术的重要途径之一。而我们可以利用CSDN等互联网资源平台,获取更多的学习资料、技术支持和交流机会,提升自己的数据库系统设计与实现能力。 ### 回答3: 数据库系统课程设计CSND是一个综合性的项目,旨在通过实践的方式帮助学生掌握数据库设计与管理的基本原理和技能。在这个项目中,学生将会面临真实的数据库设计需求,并需要利用所学知识和工具,完成一个完整的数据库系统设计。 这个课程设计项目包含以下几个主要步骤。 首先,学生需要对项目需求进行详细分析。他们需要与项目发起人沟通,了解项目背景、目标和要求。通过仔细分析需求,学生可以确定数据库系统的基本结构和功能。 接下来,学生需要进行数据库的逻辑设计。在这一阶段,他们将使用统一建模语言(UML)等工具,设计数据库的概念模型,包括实体、关系、属性等。这一步骤是数据库设计的基础,它确定了数据库中数据的组织和关系。 然后,学生需要进行数据库的物理设计。在这个阶段,他们将根据需求和逻辑设计,选择合适的数据库管理系统(DBMS)和数据库语言,并进行具体的表结构设计、索引设计等。这一步骤是将逻辑设计转化为实际可操作的数据库对象的关键。 在数据库物理设计完成后,学生需要进行数据库的实施和测试。他们将根据设计文档和实施计划,创建数据库、导入数据,并进行一系列的功能和性能测试,以确保数据库系统的正常运行和满足需求。 最后,学生需要进行数据库的维护和优化。他们将监控数据库的运行状态,进行必要的备份、恢复和维护工作。同时,他们还需要对数据库进行优化,提高系统的性能和响应速度。 通过完成这个数据库系统课程设计CSND项目,学生可以提高对数据库系统的理论和实践的理解,掌握数据库设计和管理的能力,并在实践中锻炼解决问题的能力。这对于他们未来在数据库领域的职业发展具有重要的意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值