数据库的简单建模

写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成,愿将昔日所获与大家交流一二,希望对学习路上的你有所助益。同时,博主也想通过此次尝试打造一个完善的技术图书馆,任何与文章技术点有关的异常、错误、注意事项均会在末尾列出,欢迎大家通过各种方式提供素材。

  • 对于文章中出现的任何错误请大家批评指出,一定及时修改。
  • 有任何想要讨论和学习的问题可联系我:zhuyc@vip.163.com。
  • 发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。

数据库的简单建模

本文关键字:数据库、建模、概念模型、逻辑模型、物理模型


使用数据库时,通常是为了支撑一个应用或一个业务场景,第一步需要做的就是要对数据库的表结构进行设计。一个完善的设计方案包括:表名、列名、数据类型、备注信息、字符编码、主键设计、表间关系、其他约束条件等。其中的难点在于如何使用数据表以及表间关系来描述出相应的功能场景,能够应对以后的各种查询需要,这对刚接触数据库的使用者来说是有些困难的,但是只要认真思考,按照步骤来操作相信最后的结果不会差。

一、什么是数据库建模

数据库建模简单理解指的就是设计数据库的过程,根据一个应用的描述,去构建出最优的数据库模式(考虑数据的冗余,数据查询效率等因素),一般数据库建模可以被划分为六个阶段。

1. 需求分析阶段

需求分析阶段是最为重要的一个阶段,如果前期的需求分析的不明确,很可能导致数据库扩展性差,甚至于无法支撑对应的功能逻辑。通常会在这一阶段花费比较多的时间,最后产出需求文档作为成果物。

2. 概念结构设计阶段

概念设计阶段是以数据库的角度去解读需求的第一步,也是很关键的步骤,需要形成一个通用的(与具体DBMS无关)的概念模型,比较直观的可以用E-R图表示。

3. 逻辑结构设计阶段

在逻辑结构设计阶段需要对概念结构适当的具体化,将实体-关系的描述转换为某个DBMS的数据模型。可以进一步描述出表名、列名、数据类型(不需要太具体)、表间关系

4. 物理结构设计阶段

物理结构的设计,要具体到某一个数据库软件、版本、表结构、主外键等,至此也就完成了数据库设计阶段,可以直接据此生成完整的SQL语句

5. 数据库实施阶段

数据库实施阶段指的是按照已有的设计方案,在一个具体的数据库中进行实施:建库、建表、插入测试数据等。

6. 数据库运行和维护

数据库运行和维护阶段是一个长期的过程,随着应用的使用,可能会产生一些变化,如:添加数据维度,数据长度不足,约束关系收紧等,这个时候我们要针对实际情况来对数据库的结构来进行修改。

二、数据库模型的分类

基于数据库建模的各个阶段,可以把建立出来的模型根据特点归为以下几类。

1. 概念模型(CDM)

概念模型主要是基于客观世界实际存在的事物或场景进行的描述,不涉及到具体的DBMS和实现步骤。表示概念模型最常用的形式是使用E-R(实体-关系)图,包含以下三个要素:

  • 实体:矩形
  • 属性:椭圆
  • 关系:菱形
    • 一对一:根据一个实例,只能找到一个对应实例(如:一个学生 -> 一个班级)
    • 一对多:根据一个实例,能够找到多个对应实例(如:一个班级 -> 多个学生)
    • 多对多:根据一个实例,能够找到多个对应实例,反过来亦然(如:一个学生 -> 选多门课,一门课 -> 被多人选)

敲黑板:由于在数据库中直接表示两个多对多实体的关系会产生数据冗余,所以一般会有中间表的存在。

2. 逻辑模型(LDM)

逻辑模型指的是数据的逻辑结构,目的在于根据概念模型(E-R图表)进一步分解和细化,可以窥见到表结构的雏形与表间关系(数据实例)。如果存在多对多关系,也必须在这一阶段细化出中间表,在描述表间关系时,根据实际数据的可能情况可以划分为如下情况:

  • 刻画一对一
    • 0或1个:找不到或只能找到一个
    • 唯一:有且只能找到一个
  • 刻画一对多
    • 0或多个:找不到或能找到多个
    • 1或多个:能找到一个或多个
    • 多个:一定存在多个

敲黑板:以上只是根据业务分析和数据的预期情况确定出的表间关系,用于展现整体业务情况。

3. 物理模型(PDM)

物理模型是对真实数据库的描述,要根据具体的数据库生成具体的表、字段、数据类型、数据长度、主键、外键、索引、约束条件等。

敲黑板:可以直接使用Navicat或PowerDesigner工具根据生成的物理模型导出对应的SQL或直接实施到数据库。

在这里插入图片描述

小山猪的沙塔 CSDN认证博客专家 全栈开发工程师 大数据高级开发 大数据金牌讲师
若非一番寒彻骨,哪得梅花扑鼻香。全栈开发工程师,大数据高级开发工程师。大数据金牌讲师,知名机构合作讲师,各云大学及平台合作讲师,高校外聘讲师。微信公众号:微光点亮星辰,在学习的道路上一同见证点点滴滴。