当前位置: 首页 > news >正文

数据库--数据库设计

目录:

        1.数据库设计和数据模型

        2.概念结构设计:E-R模型

        3.逻辑结构设计:从E-R图到关系设计

        4.数据库规范化设计理论

        5.数据库规范化设计实现

1.数据库设计和数据模型

        数据库设计会影响数据库自身和上层应用的性能。

        一个好的数据库设计可以提高存储空间的利用率和数据存取的效率,可以更好地支持基于数据库的应用系统。

        数据模型则表示数据库设计的描述,描述了数据之间的联系。

1.1 数据库设计的各个阶段

        概念阶段--逻辑设计阶段--物理设计阶段

        概念数据模型:(1)用于描述业务领域的数据对象及其关系。(2)概念数据模型主要是依据用户对现实业务的理解来对数据对象进行建模,主要用于数据库的概念设计。

        逻辑数据模型:(1)用于数据库管理系统的逻辑设计。(2)常见的有关系模型、层次模型和网状模型。

        物理数据模型:(1)考虑数据对象如何在数据库管理系统中物理实现。(2)数据表、索引设计。

1.2 数据库设计模型转换

        数据模型元素对应关系

        关系数据库设计的一个核心步骤就是将E-R模型转化为关系模型。

2.概念结构设计:E-R模型

        E-R模型:实体-联系模型(entity-relationship model)

2.1 E-R模型的基本元素

        实体和实体集、属性、联系

        实体是对现实世界中事务数据概念的某种抽象。多个具有相同性质的同类实体构成的集合称为实体集

        实体集都可以被一组特征来描述,这些用来描述实体集的数据特征被称为属性

                标识符指的是可以唯一标识不同实体集的某一属性。

                复合标识符则表示当必须选取多个属性的组合来作为实体的唯一标识。

        联系是不同实体直接的关联。

2.2 E-R图

        实体集矩形表示,属性椭圆形表示(标识符则用下划线标出),联系菱形表示。

2.2.1 E-R联系类型

        一元联系、二元联系和三元联系

        一元联系:实体集内部之间的联系,即实体自己域自己之间的联系。

        二元联系:两个实体集之间的联系,有一对一联系(1:1),一对多联系(1:n),多对多联系(m:n)。

        三元联系:三个实体集之间的联系。

        三元联系R(A,B,C)分解为二元联系的方式

                (1)用新实体集E替代联系R。如果联系R有属性,则将这些属性赋给新建的实体集E;否则,为E建立一个特殊的标识性属性。

                (2)建立三个新的联系Ra,Rb,Rc。其中Ra表示实体集E和A之间的联系...。

                (3)针对联系R中的每个联系(ai,bi,ci),在E中创建一个新的实体ei,ei代表(ai,bi,ci)。如何在三个新联系集中分别建立新的联系:在Ra中插入(ei,a)...。

3.逻辑结构设计:从E-R图到关系设计

        E-R图转换为关系

3.1 E-R联系中二元联系的转换

3.1.1 一对一联系转换

        方法一:在两个实体集转换为两个关系模式的基础上,在其中任意一个关系模式的属性中加入列一个关系模型的键和该联系自有的属性。

        方法二:在两个实体集转换为两个关系模式的基础上,添加一个新的关系模式,该关系模式的属性包含该联系相关的各实体集的标识符以及该联系自有的属性

3.1.2 一对多联系转换

        方法一:在两个实体集转换为两个关系模式的基础上,在n端实体类型转换成的关系模式中加入1段实体集的标识符和该联系自有的属性

        方法二:在两个实体集转换为两个关系模式的基础上,为1:n联系添加一个新关系模式,该关系模式的属性是所有与该联系相关的各实体集的标识符以及该联系自有的属性,该关系模式的键是n段实体集的标识符

3.1.3 对多对联系转换

        对该联系添加一个新的关系模式,这个新的关系模式的属性是两端实体类型的标识符以及该联系自有的属性,其键为两个实体集的标识符的组合。

4.数据库规范化设计理论

4.1 规范化设计的重要性

        数据库规范化设计是指在数据库中减少数据冗余和定义一个规范的表间结构,以更好地实现数据完整性和一致性

        优点:(1)降低数据存储和维护数据一致性的成本。(2)便于设计合理的关系表间的依赖和约束关系。(3)便于设计合理的数据库结构。

4.2 函数依赖

         为了解决关系模式设计的规范化问题,引入了函数依赖

        函数依赖反映了一个关系中属性或者属性组之间相互依存,相互制约的关系。

        函数依赖是关系中属性之间在语义上的关联特性。

4.2.1 定义

        一个函数依赖要成立,不但要求关系R中当前的值都能满足函数依赖条件,而且还要求关系中的任一可能取值都满足函数依赖的条件

4.2.2 类型

        平凡函数依赖、非平凡函数依赖、完全函数依赖、部分函数依赖、传递函数依赖、多值依赖、关系的键

        平凡和非平凡函数依赖

        完全和部分函数依赖 

        传递函数依赖 

        多值依赖 

        连接依赖

4.2.3 关系的键

        使用函数依赖来重新定义关系的键。

        (1)如果一个属性或者多个属性的集合K=\left \{ A_{1},A_{2},...,A_{n}\right \}满足以下性质,则认为K是关系R(U)的候选键

                其他属性函数依赖于该属性或属性集。

                其他属性都不函数依赖该属性或属性集的任一真子集。

        (2)上述两个规则就是U完全函数依赖于K,即

        (3)如果一个关系中有多个候选键,则选择其最重要的一个候选键作为关系R(U)的主键/

4.3 规范化设计和范式

        规范化设计:在关系模式中存在函数依赖时就有可能存在数据冗余,进而导致数据操作异常。因此,关系表的规范化设计就是要尽可能地减少关系表中列或者列组之间的依赖关系

        范式:定义1,关系表的规范程度状态为范式(normal form, NF);定义2,范式时符合某一种级别的关系模式的集合。(不同的规范化要求可以设计出冗余程度不同的数据库)

        常见的范式:第一范式 1NF,第二范式2NF,第三范式 3NF,巴斯-科德范式 BCNF,第四范式 4NF,第五范式5NF

4.3.1 范式和规范化

        一个低级范式的模式关系,通过模式分解可以转换为若干个高级范式的关系模式的集合,该过程就叫做规范化。

4.3.2 第一范式

        1NF是指关系R的每一属性都是不可再分的基本数据项,同一属性中不能有多个值,即关系表中的某个属性不能有多个值或者不能有重复的属性

4.3.3 第二范式

        2NF是指关系R首先要满足第一范式,并且每一个非主属性都完全函数依赖于任何一个候选键

4.3.4 第三范式

        3NF是指在关系R满足第一范式,并且不存在非主属性对候选键的传递函数依赖

4.3.5 巴斯-科德范式

        BCNF是指关系R在满足第一范式的基础上,不存在任何属性对候选键的传递函数依赖

        BCNF与3NF的联系:

                (1)如果关系模式R满足BCNF,那么关系模式R必定满足3NF

                (2)如果关系模式R满足3NF,并且只有一个候选键,那么R必定满足BCNF

        BCNF的关系模式具备性质:

                所有非主属性完全函数依赖每个候选键

                所有主属性完全函数依赖每个不包含它的候选键

                没有任何属性完全函数依赖非候选键的任何一组属性

4.3.6 第四范式

        4NF是指关系R在满足BCNF的基础上,消除多值依赖

4.4 数据依赖的公理系统

        Armstrong公理系统、闭包及其计算、函数依赖集的等价和最小函数依赖集

4.4.1 Armstrong公理系统

        定义1: 逻辑蕴涵:对于满足一组函数依赖F的关系模式R<U,F>,其中任何一个关系r,如果函数依赖X→Y都成立,则称F逻辑蕴涵X→Y。

        定义2:Armstrong公理系统U=\left \{ A_{1},A_{2},...,A_{n}\right \}是R中所有属性的集合,F是U上的一组函数依赖,有关系模式R<U,F>,对于R<U,F>有以下推理规则:

        引理1:X\rightarrow A_{1},A_{2},...,A_{n}成立的充分必要条件是X\rightarrow A_{i},(i=1,2,3,...,n)成立

4.4.2 闭包及其计算

        定义1:函数依赖集的闭包:在关系模式R<U,F>中,为F所逻辑蕴涵的函数依赖的全体叫作F的闭包,记为F^{+}

        定义2:属性依赖集的闭包U=\left \{ A_{1},A_{2},...,A_{n}\right \}是关系模式R中所有属性的集合,F是U上的一组函数依赖,X_{F}^{+}=\left \{ A|X\rightarrow A\right \}可由F根据Armstrong公理系统退出,则X_{F}^{+}称为属性集X关于函数依赖集F的闭包。

        求解关系的候选键

4.5 函数依赖集的等价

4.6 最小函数依赖集

5 数据库规范化设计实现--关系模式的分解

5.1 关系模式分解的定义

        通常可以从以下两个角度考虑:

                (1)数据等价:分解具有无损连接性

                (2)语义等价:分解要保持函数依赖

5.2 分解的无损连接性

        注:虽然无损分解保证不丢失信息,但是无损分解不一定能解决插入异常,删除异常、修改复杂和数据冗余等问题。

        保持分解无损依赖的定理

5.3 分解的函数依赖保持

5.4 模式分解算法

        (1)如果要求分解保持函数依赖,分解模式可以达到3NF,但不一定满足BCNF

        (2)如果要求分解既要保持函数依赖,又具有无损连接性,那么模式分解可以达到3NF,但不一定满足BCNF

        (3)如果要求分解具有无损连接性,则模式分解一定可以达到4NF


http://www.mrgr.cn/news/96601.html

相关文章:

  • OpenHarmony v4.1 Release设置应用随系统自动启动
  • 23 python 数据容器推导式
  • 【学Rust写CAD】21 2D 点(point.rs)
  • Verilog HDL 100道面试题及参考答案
  • [7-02-02].第03节:生产经验 - Broker节点服役和退役
  • Nyquist插件基础:打印格式化字符串(LISP语言)
  • python代码实现离散haar小波变换和db4小波变换
  • kubernetes》》k8s》》 kubeadm、kubectl、kubelet 重启pod
  • SkyWalking+Springboot实战
  • 2025国内DevOps新手突围指南:从Gitee零门槛入门到工具链深度对比
  • 虫洞数观系列二 | Python+MySQL高效封装:为pandas数据分析铺路
  • 分布式计算Ray框架面试题及参考答案
  • Mac Apple silicon如何指定运行amd64架构的ubuntu Docker?
  • 一个判断A股交易状态的python脚本
  • USB有驱ID卡读卡器C#小程序开发
  • 哈希表 - 两数之和(Map) - JS
  • 【Kubernetes】CentOS 7 安装 Kubernetes 1.30.1
  • HCIA-数据通信datacom认证
  • Qt使用QGraphicsView绘制线路图————附带详细实现代码
  • 【零基础入门unity游戏开发——2D篇】SpriteRenderer精灵渲染器组件