数据库模型设计案例分享(GaussDB版)

这篇具有很好参考价值的文章主要介绍了数据库模型设计案例分享(GaussDB版)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、前言

二、应用系统数据库设计的基本流程

三、数据库模型设计

1、概念结构设计阶段

2、逻辑结构设计阶段

3、物理结构设计阶段

四、小结

一、前言

GaussDB数据库是一款企业级分布式数据库,支持集中式和分布式两种部署形态。它面向金融互联网交易和政企OA/办公等场景,具有安全可靠、超高性能、简单易用等优势。

在GaussDB中,数据建模是非常重要的一部分。数据建模是指根据业务需求和数据特点,将现实世界中的实体、属性、关系等概念抽象出来,并用一定的方式表示成计算机可以理解的形式。数据库模型设计的目的是为了建立一个能够满足业务需求的数据存储结构,使得数据的存储、查询、更新等操作更加高效、可靠、安全。

在GaussDB中,可以使用E-R图来进行数据建模,E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型,它可以帮助您更好地理解您的业务逻辑并将其转换为关系模型。

二、应用系统数据库设计的基本流程

应用系统数据库设计基本流程简图:

数据库模型设计案例分享(GaussDB版)

第一步:需求分析:主要包括数据、功能、性能等

第二步:数据库设计:主要包括概念结构设计、逻辑结构设计、物理结构设计等

第三步:数据库实施:选择数据库软件,并进行落地。

第四步:数据库系统运行、维护和优化。

其中数据库设计(Database Design)是E-R设计模型中的主要环节。

三、数据库模型设计

本节结合GaussDB数据库的相关知识点,以简单的订单模型举例来演示数据库模型的设计过程。

数据库模型设计主要分以下3个阶段:

1、概念结构设计阶段

概念数据模型(CDM)是按用户的观点来对数据和信息建模,其目标是统一业务概念,作为业务人员和技术人员之间沟通的桥梁,确定不同实体之间的最高层次的关系。其特征包括:

  • 面向用户,反映用户的业务需求
  • 抽象性强,不涉及具体实现细节
  • 层次结构清晰,各层之间有一定的关系
  • 可扩展性好,可以方便地添加新的实体和关系等。

所以这个阶段,我们主要完成从需求中抽象出示实体集和关系集。

示例系统:订单系统,实体(订单、客户、供应商、商品、地址)。

实体集之间关系集梳理:

1)客户与订单是一对多

2)客户与地址是一对一

3)供应商与地址是一对一

4)供应商与商品是一对多

5)订单与商品是一对多

如图, 确定不同实体之间的最高层次的关系:

数据库模型设计案例分享(GaussDB版)

2、逻辑结构设计阶段

逻辑数据模型(LDM)尽可能详细地描述数据, 逻辑数据模型的特征包括:

  • 包括所有实体和它们之间的关系
  • 指定了每个实体的所有属性
  • 指定外键(标识不同实体之间关系的键)
  • 关系表规范化等。

如图, 完善每个实体的属性: ​​​​​​数据库模型设计案例分享(GaussDB版)

3、物理结构设计阶段

物理数据模型(PDM)表示如何在数据库中构建模型。 物理数据库模型显示所有表结构,包括列名,列数据类型,列约束,主键,外键以及表之间的关系。物理数据模型的功能包括:

  • 规范所有表和列
  • 外键用于标识表之间的关系。
  • 物理上的考虑可能导致物理数据模型与逻辑数据模型有差异
  • 不同的RDBMS的物理数据模型将有所不同,例如MySQL和GaussDB之间列的数据类型可能有所不同。
  • 目标是指定如何用数据库模式来实现逻辑数据模型,以及真正的保存数据。

如图,完成所有实体转换为表,转换所有关系集为相关表的外键,转换所有属性为列。

 数据库模型设计案例分享(GaussDB版)

针对上面的物理数据模型设计时,GaussDB数据库有如下字段设置规范建议:

  1. 合理选用字符串数据类型。优先使用变长字符类VARCHAR。只有该字段输入确定为固定字符则使用定长字符类型,或需要自动补充空格,才使用CHAR(n)。
  2. 字符类型字段不应存储数字类型的数据。如果对存储在字符类型字段中的数据进行数值计算,或者与数值进行比较操作(如置于过滤条件中),会带来不必要的数据类型转换的开销,同时该字段上的索引可能失效,影响查询性能。
  3. 字符类型字段不应存储时间或日期类数据。如果对存储在字符类型字段中的数据与日期类数据进行计算或比较操作(如置于过滤条件中),会带来不必要的数据类型转换的开销,同时该字段上的索引可能失效,影响查询性能。
  4. 对于明确不存在NULL值的字段加上NOT NULL约束。对于NOT NULL字段,优化器在某些场景下会进行特殊优化,可较大提升查询性能。
  5. 相关联字段的数据类型应保持一致。在进行关联操作时,如果字段类型不一致,会带来数据类型转换开销。
  6. 大字段(例如varchar(1000)、varchar(4000))不建议超过8个。
  7. 字段定义时建议同时创建COMMENT注释信息,以便于未来维护。
  8. 不建议对表预留字段。大部分场景下可支持快速新增、删除表字段,或者修改字段的DEFAULT值。
  9. 尽量使用高效的数值类数据类型。在满足业务精度的情况下,选择的优先级从高到低依次为整数、浮点数、NUMERIC。
  10. 合理设置数值字段的数据类型,根据取值范围选择合适的数值类型,尽量少用NUMERIC/DECIMAL类型。NUMERIC和DECIMAL等价,NUMERIC(或DECIMAL)数据类型操作对CPU消耗较高。

数据库模型设计的三个主要阶段汇总如下:

  • 概念数据模型设计阶段:实体、关系集
  • 逻辑数据模型设计阶段:实体、关系集、属性、主键、外键
  • 物理数据模型设计阶段:表、列名、列数据类型、主键、外键

四、小结

通常,数据建模是为了让查询更简单、更高效。在现实场景中,如果要想高效的使用好数据库,那么一个优秀的数据建模是必不可少的。数据模型是应用系统数据库设计的基础,而数据库则是数据模型实现的工具。本文建模后是在GaussDB数据库平台上进行落地实验的,其逻辑与思路与大多少关系型数据库基本通用。

——结束 文章来源地址https://www.toymoban.com/news/detail-499662.html

到了这里,关于数据库模型设计案例分享(GaussDB版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • GaussDB数据库事务介绍

    GaussDB数据库事务介绍

    目录 一、前言 二、GaussDB事务的定义及应用场景 三、GaussDB事务的管理 四、GaussDB事务语句 五、GaussDB事务隔离 六、GaussDB事务监控 七、总结 随着大数据和互联网技术的不断发展,数据库管理系统的作用越来越重要,实现数据的快速读写以及保证数据的安全性和完整性成为企业

    2023年04月26日
    浏览(11)
  • GaussDB数据库基础函数介绍-上

    GaussDB数据库基础函数介绍-上

    目录 一、函数在数据库中的作用 二、GaussDB常用基础函数介绍与示例 1、数字操作函数 2、时间和日期处理函数 3、类型转换函数 4、数组函数 5、范围函数 6、窗口函数 7、聚集函数 8、安全函数 9、系统信息函数 10、动态脱敏函数. Tip: 由于篇幅缘故,“5.范围函数、6.窗口函数

    2024年02月02日
    浏览(11)
  • 再识华为云数据库——GaussDB

    再识华为云数据库——GaussDB

    目录 一、GaussDB: 立足创新与自研,助力企业核心数据安全高效上云 二、GaussDB: 基于华为openGauss开放生态打造的 金融级分布式数据库 三、GaussDB(for MySQL): 基于开源生态打造的企业级自研云原生数据库 四、DRS+UGO:数据库结构+应用+数据一站式迁移... 5 五、GaussDB NoSQL:国内首家,

    2024年02月01日
    浏览(11)
  • GaussDB数据库管理系统介绍

    GaussDB数据库管理系统介绍

    内部: 云化+自动化方案。通过数据库运行基础设施的云化将DBA(数据库管理员)和运维人员的日常工作 自动化。 外部: 采用与数据库周边生态伙伴对接与认证的生态连接融合方案,解决开发者/DBA难获取、应用难对接等生态难题。 分布式: 分布式事务能力+跨DC(Data Center,数据

    2024年02月08日
    浏览(56)
  • GaussDB高斯数据库(SQL语法分类)

    GaussDB高斯数据库(SQL语法分类)

    日常查询中,最常用的是通过FROM子句实现的查询。 语法格式:使用方法: SELECT [ , ... ] FROM table_reference [ , ... ] SELECT之后和FROM子句之前出现的表达式称为SELECT项。SELECT项用于指定要查询的列,FROM指定要从哪个表中查询。如果要查询所有列,可以在SELECT后面使用*号,如

    2024年02月16日
    浏览(47)
  • GaussDB数据库SQL系列-行列转换

    GaussDB数据库SQL系列-行列转换

    一、前言 二、简述 1、行转列概念 2、列转行概念 三、GaussDB数据库的行列转行实验示例 1、行转列示例 1)创建实验表(行存表) 2)静态行转列 3)行转列(结果值:拼接式) 4)动态行转列(拼接SQL式) 2、列转行示例 1)创建实验表(复用前面的测试数据) 2)使用union a

    2024年02月10日
    浏览(45)
  • GaussDB高斯数据库(SQL语法入门)

    GaussDB高斯数据库(SQL语法入门)

    DDL数据定于语言:用于定义或修改数据库中的对象,如:表,索引,视图,数据库,序列,用户,角色,表空间,会话等。 DDL不支持物化视图,存储过程,触发器,自定义函数,自定义类型。 DML数据操作语言:用于对数据库表中的数据进行操作,如插入,更新和删除。 DCL数

    2023年04月10日
    浏览(47)
  • JDBC连接GaussDB云数据库操作示例

    JDBC连接GaussDB云数据库操作示例

    目录 一、实验环境 二、登录华为云创建测试库表 1、登录GaussDB云数据库 2、建库、建表,用于测试 3、新增普通角色(用户)用于登录及访问测试(可选) 4、获取对应的公网IP 三、创建java工程 1、创建java工程 2、添加jar包 3、编辑Java代码 四、执行并查看测试结果 1、本地JDB版

    2024年02月05日
    浏览(51)
  • GaussDB查看数据库、表空间、表、schema大小以及常用的数据库元命令
  • GaussDB数据库SQL系列-表连接(JOIN)

    GaussDB数据库SQL系列-表连接(JOIN)

    目录 一、前言 二、GaussDB JOIN 1、LEFT JOIN 2、LEFT JOIN EXCLUDING INNER JOIN 3、RIGHT JOIN 4、LEFT JOIN EXCLUDING INNER JOIN 5、INNER JOIN 6、FULL OUTER JOIN 7、FULL OUTER JOIN EXCLUDING INNER JOIN 三、GaussDB 实验示例 1、初始化实验表 2、LEFT JOIN(示例) 3、RIGTH JOIN(示例) 4、INNER JOIN(示例) 5、FULL JOIN(示

    2024年02月13日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包