首页 > 数据库 >高斯数据库HCNA之数据库设计基础

高斯数据库HCNA之数据库设计基础

时间:2023-11-20 23:00:48浏览次数:43  
标签:范式 高斯 数据库 实体 HCNA 设计 模型 物理

一、数据库设计概述

数据库设计是根据数据库系统的特点,针对具体的应用对象构建适合的数据库模式,建立数据库及相应的应用,
使整个系统能有效的采集,存储,处理和管理,从而满足企业中各种用户的使用需求

本章主要介绍了数据库设计的相关概念,整体目标和需要解决的问题,并按照新奥尔良设计方法对需求分析、概念设计、逻辑设计和物理设计几个阶段
的具体工作进行了详细说明,最后结合相关案例对数据库设计的具体实现手段进行了介绍

1、数据库设计

什么是数据库设计
数据库设计是指对于一个给定的应用环境,构造优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统
使之能够有效的存储和管理数据,满足各种用户的应用需求

2、数据库设计的困难

数据库设计面临的主要困难
熟悉数据库的人员缺乏业务知识和行业知识
熟悉业务知识,了解业务流程的人往往缺乏对数据库产品的了解,对数据库设计流程也不熟悉
在初始阶段没办法明确应用业务的数据库系统的业务需求范围
用户需求在设计过程中不断调整和修改,甚至在数据库模型落地后,开发过程中还会有新需求出现,会对已有的数据库结构造成冲击

3、数据库设计的目标

设计目标
  为用户和各种应用系统提供一个信息基础设施和高效的运行环境
高效的运行环境
  数据库数据的存取效率
  数据库存储空间的利用率
  数据库系统运行管理的效率

4、数据库设计方法-新奥尔良方法

新奥尔良(New Orleans)方法的四个阶段
  需求分析
  概念设计阶段
  逻辑设计阶段
  物理设计阶段

高斯数据库HCNA之数据库设计基础_数据库

二、需求分析

1、需求分析的意义

需求分析阶段主要是收集信息并进行分析和整理,为后续阶段提供充足信息
是整个数据库设计的基础
最困难,也可能最耗时的阶段
需求分析没做好,会导致整个数据库设计重新返工

需求分析阶段需要
了解现有系统的运行概况
确定新系统的功能要求
收集能够实现目标的基础数据及相关的业务流程

2、数据字典

数据字典是对数据的描述,不是数据本身,包括:
数据项
  数据项名称,含义,数据类型,长度,取值范围,单位,与其他数据项逻辑关系等
  是逻辑设计阶段模型优化的依据
数据结构
  数据结构反映了数据项之间的组合关系,一个数据结构可以由若干数据项和数据结构混合组成
数据流
  在系统内的传输路径,包括数据来源,流向,平均流量,高峰期流量等
数据存储
  数据存取拼读,保留时间长度,数据存取方式
处理过程
  数据处理过程的功能及处理要求,功能是指处理过程用来做什么,要求包括单位时间内处理多少事务,多少数据量,时间相应要求等

三、概念设计

1、概念设计和概念模型

概念设计的任务
分析用户提出的需求,对用户需求进行综合、归纳和抽象,形成一个独立于具体数据库管理系统的概念层次抽象模型,即为概念数据模型

概念模型的主要特点
1、能真实、充分的反映现实世界,包括事物和事物之间的联系,是现实世界的真实模型
2、易于理解,可以和不熟悉数据库的用户进行讨论
3、易于更改,当应用环境和应用要求改变时可以对概念模型进行修改和扩充
4、易于向关系数据模型转换

2、E-R方法

1976年P.P.S.Chen提出了实体-联系(Entitiy-Relationship)方法,即E-R方法
  简单、实用
  是构建概念模型常用的方法之一
E-R方法使用的工具称为E-R图
  E-R图在概念设计阶段使用的比较广泛
  用E-R模型表示的数据库概念非常直观,易于用户理解
  E-R图主要由实体、属性和联系三个要素构成

3、E-R方法实体

高斯数据库HCNA之数据库设计基础_数据库设计_02

4、E-R方法属性

高斯数据库HCNA之数据库设计基础_主键_03

5、E-R方法联系

高斯数据库HCNA之数据库设计基础_主键_04

4、逻辑设计

1、逻辑设计和逻辑模型

这个阶段是将概念模型转化为具体的数据模型的过程
按照概念设计阶段建立的基本E-R图,按选定的目标数据模型(层次、网状、关系、面向对象),转换成相应的逻辑模型
对于关系型数据库来说,这种转换要符合关系数据模型的原则,得到的就是逻辑数据模型
这个阶段的主要工作就是确定关系模型里面的属性和码(或者说主键)
比较常用的方式是使用E-R设计工具,IDEF1x方法来进行逻辑模型设计,常用的ER图表示法包括IDEF1x,IE模型的Crow's foot,UML类图方式等

2、IDEF1x方法

IDEF1X(Integration DEFinition for Information Modeling)
  信息模型集成定义
  IDEF1X是IDEF系列方法中IDEF1的扩展版本,是在E-R(实体联系)方法的原则基础上,增加了一些规则,使语义更为丰富的一种方法
IDEF1X特点
  良好的可扩展性
  简明的一致性结构
  便于理解
  可以自动化生成模型

3、逻辑模型中的实体

高斯数据库HCNA之数据库设计基础_主键_05

4、实体中的属性

高斯数据库HCNA之数据库设计基础_数据库_06

5、主键,外键和索引之间的关系

高斯数据库HCNA之数据库设计基础_数据库_07

6、实体间的关系

高斯数据库HCNA之数据库设计基础_数据库设计_08

7、IDEF1x中基数的图例

高斯数据库HCNA之数据库设计基础_数据库_09

8、基数的不同反映了不同的关系

高斯数据库HCNA之数据库设计基础_数据库_10

9、识别性关系

高斯数据库HCNA之数据库设计基础_数据库_11

10、非识别性关系

高斯数据库HCNA之数据库设计基础_主键_12

11、嵌套关系

高斯数据库HCNA之数据库设计基础_数据库_13

12、子类关系

高斯数据库HCNA之数据库设计基础_数据库设计_14

13、逻辑模型基本概念小结

实体就是描述业务的元数据
主键是识别实体每一个实例唯一性的标识
只有存在主键,实体之间才会存在关系,没有外键不能建立关系
关系的基数反映了关系之间的业务规则
  一个客户只能拥有一个一类储蓄账户
  一个客户可以拥有多个储蓄账户
  一个订单只能对应一个发货运单
  一个产品包括多个零件

14、范式理论

范式理论(Normal Form)
在数据库设计的时候要满足的设计规范
  满足不同程度的要求为满足不同的范式
  把属性放置在正确的实体的这个过程称为范式化(normalization)
发展史
  1971~1972:Codd系统的提出了1NF、2NF和3NF的概念,讨论了规范化问题
  1974:Codd和Boyce共同提出了新范式,BCNF
  1976:Fagin提出了4NF
  之后的研究人员进一步提出5NF

15、范式理论的意义

设计逻辑模型时候最常遇到的问题
  哪些属性应当放到实体中,怎么放
范式化的意义
  减少数据冗余
  提供良好的可扩展性
  消除数据更新时候可能产生的数据不一致情况

16、范式之间的关系

高斯数据库HCNA之数据库设计基础_数据库设计_15

17、值域

高斯数据库HCNA之数据库设计基础_数据库_16

18、第一范式

高斯数据库HCNA之数据库设计基础_数据库设计_17

高斯数据库HCNA之数据库设计基础_数据库设计_18

19、原子性的程度

原子性概念在实际应用中容易出现歧义
  不可再分的程度如何确定边界
  具有编码规则的代码实际上都是复合型代码,从规则上讲都是可分的
  比如身份证号码、收集号码,都是可以进一步拆分出更细粒度的数据
从值域的角度来理解
  身份证号码的值域:只要符合身份证编码规则的就是合法的身份证,就是原子性的数据

20、第二范式

高斯数据库HCNA之数据库设计基础_主键_19

高斯数据库HCNA之数据库设计基础_数据库设计_20

21、第三范式

高斯数据库HCNA之数据库设计基础_数据库设计_21

高斯数据库HCNA之数据库设计基础_数据库_22

22、一句话精炼

高斯数据库HCNA之数据库设计基础_数据库设计_23

1、要有主键
2、依赖于整个主键
3、只能依赖于主键

23、雪花型模型

高斯数据库HCNA之数据库设计基础_数据库_24

24、逻辑模型建设注意事项

建立命名规则
命名规则的意义
  统一命名,避免歧义
  防止冗余的实体或者属性产生
  有利于工作中不同角色的人员之间通过规范的命名和属于进行交流
  便于使用
实体和属性的命名建议
  实体名称:分类域大写+实体描述符(全称,首字母大写)
  属性名称:使用全称,首字母大写,一些约定俗称的空格缩写
  避免英语和拼音的混用
  如果是缩写,一定是英语的缩写,避免使用拼音的声母缩写
  
逻辑模型建设注意事项2
按照设计流程设计逻辑数据模型
确定实体和属性
  定义实体的主键(PK)
  定义部分非键属性(Non-Key Attribute)
  定义非唯一属性组
  添加相应的注释内容
  
逻辑模型建设注意事项3
确定实体与实体之间的关系
  通过外键来体现
  决定实体之间是否是可识别的关系
  确定关系的基数属于1:1,1:n还是n:m

补充实体的非键值属性
  按照3NF的规则,判定添加的属性是否符合3NF的设计原则
  如果新增属性违反3NF,需要进行实体拆分,确定新的实体和关系
  添加注释

5、物理设计

1、物理设计和物理模型

物理设计
在用户确认的逻辑模型基础上,以数据库系统运行效率,业务操作效率,前端应用效率等因素为出发点对模型进行的调整
面向物理实施过程的具体细节
最终目的是转化为目标数据库的可部署的定义语言(DDL)
工作内容,包括但不限于
  实体非正则化处理
  表和字段的物理命名
  确定字段的类型,长度,精度,大小写敏感等属性
  增加逻辑模型中不存在的物理对象:索引,约束,分区等

2、相同事物不同名称

高斯数据库HCNA之数据库设计基础_主键_25

3、逻辑模型和物理模型对比

高斯数据库HCNA之数据库设计基础_主键_26

4、物理模型反范式处理

从性能和应用需求出发
  物理模型是以性能为出发点,支持应用需求,兼顾数据库物理限制
  CPU无限快,内存无限多,存储无限大,带宽无限宽,还有必要反范式处理么
有限的资源,有限的硬件条件提出了物理模型反范式化的需求
反范式处理需要适度进行
  对于特定配置的硬件系统,在满足应用功能目标和性能指标的前提下,适度进行
  带来数据冗余问题
  有可能会导致数据不一致问题

5、反范式示例

高斯数据库HCNA之数据库设计基础_数据库设计_27

高斯数据库HCNA之数据库设计基础_主键_28

高斯数据库HCNA之数据库设计基础_数据库设计_29

6、反范式常见手段

常见反范式化处理方式
  增加重复组(repeating groups)
  预关联(pre-joins)
  派生字段
  建立汇总表或临时表
  表拆分(水平拆分或者垂直拆分)
影响
  并非对所有处理过程都能带来性能提升,有些负面影响需要综合考虑进行平衡
  反范式会降低数据模型的灵活性
  带来数据不一致的风险

7、维护数据完整性

反范式处理后增加了数据冗余性,需要一定的管理措施来维护数据完整性
批处理维护
  批处理维护是指对复制列或派生列的修改积累一定的时间后,运行一批处理作业或存储过程对复制或派生列进行修改,这只能在对实时性要求不高的情况下使用
应用逻辑
  在应用实现过程中,在同一事务中对所有涉及的表进行增、删、改操作
  风险较大,容易遗漏,特别是在需求变化时,不易于维护
触发器
  实时处理性高
  但对于数据库压力较大,尤其是高并发环境,触发器数量需要严格控制

8、建立物理化命名规范

建立命名规范,对实体进行物理化命名
根据数据库物理特性进行命名
名称有效字符的范围(避免使用非法字符出现在名称中)
避免使用物理数据库的保留关键字
命名尽量采用富有意义、易于记忆、描述性强、简短及具有唯一性的英文词汇,不准采用汉语拼音
制定项目组范围内统一的命名规则,并严格遵守
名称缩写要达到约定

9、对象命名规范示例

高斯数据库HCNA之数据库设计基础_数据库设计_30

10、表的物理化

进行反范式化操作
决定是否要分区
  对于大表进行分区,减少IO扫描量,增速范围查询
决定是否要拆分历史表和当前表
  历史表时冷数据,可以放在低俗存储上,当前表时热数据,使用高速存储
  历史表可以使用压缩方法减少占用的存储空间

11、字段的物理化

字段的物理化1
选择合适的类型,考虑以下因素
尽量使用短字段的数据类型
  长度较短的数据类型不仅可以减小数据文件的大小,提升IO性能,同时也可以减小相关计算时的内存消耗,提升计算性能
  比如对于整数类型, 如果可以用smallint就尽量不用int,如果可以用int就尽量不用bigint
使用一致的数据类型
  表关联列尽量使用相同的数据类型。如果表关联列数据类型不同,数据库必须动态的转化为相同的数据类型进行比较,这种转换会带来一定的性能消耗
选择高效数据类型

字段的物理化2
字段的约束
DEFAULT
  如果能够从业务层面补全字段值,就不建议使用DEFAULT约束,避免数据加载时产生不符合预期的结果
NOT NULL
  给明确不存咋NULL值的字段加上NOT NULL约束
唯一约束/主键约束
  主键 = 唯一 + NOT NULL
  如果条件允许,就增减
检查约束
  检查约束因为对于数据质量提出了要求,不满足约束的数据再插入数据表会导致SQL失败

12、索引的创建和使用

可以增加索引的情况
  在经常需要搜索查询的列
  在作为主键的列上创建索引,强制该列的唯一性
  在经常使用连接的列上创建索引
  在经常需要根据范围进行搜索的列上创建索引
  在经常需要排序的列上创建索引
  在经常使用WHERE子句的列上创建索引
索引建多了,会有负面影响
  占用更多地空间
  插入基表数据的效率会下降
删除无效的索引,避免空间浪费

13、其他物理化手段

根据其他特定需求
  是否采用压缩
  是否需要对数据进行加密
  是否需要对数据进行脱敏

14、使用建模软件

使用建模软件来进行逻辑建模和物理建模
  功能强大而丰富
  正向生成DDL,反向解析
  在逻辑模型和物理模型中自由切换使用视图
  全面满足建模中的各种需求,高效进行建模
相关软件
  CA ERWin
  SAP PowerDesigner
  ER/Studio
  pgModeler
  Dbeaver Community

15、物理模型产出物

物理数据模型
物理模型命名规范
物理数据模型设计说明书
生成DDl建表语句

标签:范式,高斯,数据库,实体,HCNA,设计,模型,物理
From: https://blog.51cto.com/u_13236892/8492061

相关文章

  • 数据库复习总结(并发控制一)
    目录前言3种并发异常丢失修改(写写异常)不可重复读(包括幻读情况读写异常)脏读为处理并发异常出现的机制--加锁加锁规范--封锁协议一级封锁协议(解决修改丢失)举例二级封锁协议(解决修改丢失,脏读)举例三级封锁协议(解决修改丢失,脏读,不可重复读)举例加锁产生问题活锁死锁解决办法针对活锁针......
  • pycharm链接数据库 django链接MySQL
    #找到pycharmdatabase选项(三个地方查找)#选取对应的数据库下载对应的驱动"""明明链接上了数据库但是看不到表无法操作这个时候你只需要将刚刚创建的链接删除重新链接一次即可"""  #1.配置文件中配置DATABASES={'default':{'ENGINE':'django.db.back......
  • Redis:Key-Value的NoSQL数据库
    Redis:Key-Value的NoSQL数据库(基础)主要内容:数据库分类Redis入门客户端连接RedisRedis数据类型及操作Springboot整合RedisSpringCache学习目标:知识点要求数据库分类熟悉Redis使用场景熟悉Redis下载与安装了解Redis启动关闭掌握客户端连接Redis......
  • 不同数据库创建用户,数据库的SQL语句整理
    不同数据库创建用户,数据库的SQL语句整理MySQLmysql-uroot-p#输入密码登录数据库CREATEDATABASEIFNOTEXISTSxxxdata_someinfoDEFAULTCHARSETutf8mb4;createuser'xxx_someinfo'@'%'identifiedby'Testsomepassword';grantallprivilegesonxxxda......
  • 请求扩展,蓝图 , flask-session,数据库连接池,wtforms ,flask-script,信号,flask-cache
    1请求扩展......
  • Orcal数据库的开始创建
      sqlplus/@courseassysdba;showcon_name; showpdbs;sqlplus/@orclassysdba;中有可插入数据库   altersessionsetcontainer=orclpdb;createuserscottidentifiedbytiger;grantconnect,resource,unlimitedtablespacetoscott; alterusers......
  • 聊聊分布式 SQL 数据库Doris(一)
    MPPMPP:MassivelyParallelProcessing,即大规模并行处理.一般用来指多个SQL数据库节点搭建的数据仓库系统.执行查询的时候,查询可以分散到多个SQL数据库节点上执行,然后汇总返回给用户.DorisDoris作为一款开源的MPP架构OLAP高性能、实时的分析型数据库,能够运行在绝......
  • idea连接mysql数据库
    关于配置环境的崩溃心理历程:(我哭)跟着黑马连接本地数据库的时候,测试连接显示不成功启动命令行,在命令行输入:mysql-uroot-p****最后给我返回的是:ERROR2003(HY000):Can'tconnecttoMySQLserveron'localhost:3306'(10061)  问了gpt,现在来看他给出的回答是正确的,......
  • 达梦数据库 DM8 能跑就行
    基于docker的安装脚本#!/bin/bash#docker环境需自行安装!!!#docker安装DM8官方手册:https://eco.dameng.com/document/dm/zh-cn/start/dm-install-docker.html#下载DM8docker镜像wgethttps://download.dameng.com/eco/dm8/dm8_20230808_rev197096_x86_rh6_64_s......
  • 设计器demo示例数据库连接不上
    设计器demo示例数据库连接不上首先看下示例的 demo数据库是否启动。启动后可以看下左侧的控制台是否有错误,如果启动后链接还有问题,那么将设计器关闭,然后看下系统进程是否有重新连接。......