数据库的简单建模

网友投稿 599 2022-05-30

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

对于文章中出现的任何错误请大家批评指出,一定及时修改。

有任何想要讨论和学习的问题可联系我:zhuyc@vip.163.com。

发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。

数据库的简单建模

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

文章目录

数据库的简单建模

一、什么是数据库建模

1. 需求分析阶段

2. 概念结构设计阶段

3. 逻辑结构设计阶段

4. 物理结构设计阶段

5. 数据库实施阶段

6. 数据库运行和维护

二、数据库模型的分类

1. 概念模型(CDM)

2. 逻辑模型(LDM)

3. 物理模型(PDM)

一、什么是数据库建模

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

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或直接实施到数据库。

数据库

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:银行卡信息精准识别-智能快速绑卡【玩转华为云】
下一篇:docker,k8s部署Apollo
相关文章