PowerDesigner设计数据库

PowerDesigner 15数据库建模 记录第一次使用PowerDesigner进行数据表建模。PowerDesigner版本为15.1 阅读详情
本文档不讲述如何使用PowerDesigner,而是讲述如何将PowerDesigner的特点结合数据库设计的方法更好的设计一个数据库系统。

采用PowerDesigner设计数据库

PowerDesigner作为数据库建模和设计的CASE工具之一,在数据库系统开发中发挥着重要作用。

运用PowerDesigner进行数据库设计,不但给人直观地理解模型,而且充分运用数据库的技术,优化数据库的设计。PowerDesigner支持Sybase、Oracle、Informix、SQL Server等多种数据库系统,在应用系统做数据库迁移时不必维护多个数据库脚本。

对于采用结构化分析(SA),E-R图、数据流图直至最后的数据库物理图都是系统设计时不可缺少的一个部分,当数据库物理图完成后,应该产生系统的数据字典。运用PowerDesigner完全能够完成这一设计流程。

对于采用面向对象的分析(OOA),由于数据库采用的是RDBMS,因此存在对象和关系数据库之间的映射,也需要进行数据库设计。

两种数据库模型

PowerDesigner可以设计两种数据库模型图:数据库逻辑图(即E-R图或概念模型)和数据库物理图(物理模型),并且这两种数据库图是互逆的。

数据库逻辑图是对现实世界的一种抽象,体现实体之间的关系,可以有1对1、1对多、多对多等关系。特别说一点,在扩充E-R图中有概括这种关系,体现类型之间的一种子集联系,它定义了超类和子类。在PowerDesigner设计的E-R图中,不具备这种关系,但在E-RWin设计的模型中支持这种关系,因此在用E-RWin图设计的模型转化为PowerDesigner的模型时注意这种关系。

数据库物理图中是逻辑模型的物理实现,体现了表间的参照关系。在物理模型中不可能存在多对多的关系。在逻辑图向物理图转换时,多对多的关系变成两个1对多的关系。

       逻辑模型和物理模型有着紧密的联系,也有本质的区别。逻辑模型的设计遵循数据库设计理论的第三范式(在一般的数据库应用达到第三范式即可),逻辑模型要求具有应用系统所表达的所有信息并消除数据冗余。物理模型是在逻辑模型的基础上,为了优化应用系统的性能而采用增加冗余,创建索引等数据库技术,它主要用非规范化的一些理论。

       在考虑设计的任何非规范化之前,数据库应先完全规范化,在没有完全理解数据和用户需求之前,不能进行非规范化。否则导致数据的组织越来越混乱,应用程序越来越复杂。

       因此逻辑模型和物理模型是相互矛盾又紧密联系的,这点需要设计人员好好把握。

PowerDesigner设计数据库物理图

用PowerDesigner设计数据库物理图,包括多个对象,如表(Table)、字段(Column)、域(Domain)等。设计时主要在PowerDesigner的Dictionary和Database两个菜单中。

表(Table)

       表是数据存储的一个逻辑对象,包括其它对象如字段(Column)、索引(Index)、触发器(Trigger)、存储过程(Procedure)等,表的优化设计有分割等技术,对于表的存储,如果访问数据量大,访问频率高则可考虑将表放在不同的存储(Storage)上。

       在设计表时,应该估算表的大小和增长量,便于创建数据库时分配数据库空键,这样减少了磁盘碎片的产生。

       在关系数据库中设计主键时,采用有意义的主键是致命的错误。如果用户决定改变字段的商业含义,则需要在所有使用到该信息的地方进行修改。主键的作用应是保持唯一性和作为外键使用。任何对主键的修改会导致巨大的数据库维护工作量,显然这是不合适宜的设计。就关系数据库而言,设计主键策略采用的是代理主键的方法。

       设计主键时应该避免“热点”现象,但也需要分析具体的应用系统的并发用户而定。

字段(Column)

       定义一个字段主要有字段名、字段类型及长度、是否主外键、是否空、约束、默认值、域等。

       变长和定长的数据类型在数据库设计中讨论比较多,作为一般原则,如果预期某列中的数据范围变化很大,但变化并不频繁,那末对这样的列使用变长数据类型最为适宜。

       决定行长时,既不能太浪费,又不能太吝惜。考虑到将来的需要,并且意识到,如果增加行长而没有改变一页中容纳的行数,那末增加的空间就等于免费使用。

       设计时,字段尽量使用域,方便维护字段的类型。每个字段最好将默认值加上,因为在数据库查询中,有NULL值会影响查询的性能。

       通过CHECK约束可限制字段的取值。

域(Domain)

简单地说,是用户自定义类型,但域还可以定义它的取值范围或默认值,采用域减少了维护字段类型的工作量,也减少数据的不一致性。

参照(Reference)

参照在数据库设计中是一个比较复杂的问题,它是实现数据的完整性主要要素之一,详细论述参考后面数据的约束。

在PowerDesigner中,可对参照完整性进行各项设置,参照的基数从0到n,对修改和删除约束可分别设置为None、Restrict、Cascade、Set Null、Set Default。由于INSERT包含在UPDATE操作中,因此没有单独的INSERT约束。

约束的不同设置产生不同的效果,以修改为例(删除相同):

None:父表修改,子表不影响。

Restrict:父表修改,如果子表存在,则出错。

Cascade:父表修改,如果子表存在,则相应的修改。

Set Null:父表修改,如果子表存在,则相应置空。

Set Default:父表修改,如果子表存在,则相应置默认值。

索引(Index)

       索引是优化查询时采用一种数据库技术,索引有簇索引、非簇索引、唯一索引等。

       设计索引时,要注意索引宽度,尽量减少索引的宽度。索引的宽度不是由字段的多少决定的,而是由字段的长度来决定。对于窄索引关键字,在每一索引页上放置更多的关键字和指针,这样就能花销更少的I/O找到数据。

       对于复合索引,选择首列相当重要,否则可能不能利用该索引,当利用复合索引查询时。必须确保查询从首列开始。

       索引还有一个填充因子(FillFactor),填充因子的大小视表的数据增长量和主键定义的情况而定。

触发器和存储过程(Trigger&&Procedure)

       触发器在维护数据完整性起着重要作用,它比参照更具灵活性,

也能实现三层结构中数据层的业务规则。

       存储过程是采用SQL及流程控制语句编写的完成某种业务的脚本。存储过程在数据处理上具有处理速度快、处理灵活等优点。

但是,存储过程极大地增加了与数据库之间的耦合,在数据库迁移时,需要重写存储过程,从而增加了版本维护的工作量。如果数据库要求从迁移性考虑,应尽量避免使用存储过程或者触发器。

       如果不人为修改PowerDesigner的触发器,其迁移性PowerDesigner自动解决。

存储(Storage)

不同的数据库中有不同的概念,Sybase称为设备(Device),SQL Server称为文件或文件组(File、FileGroup),而Oracle称为表空间(TableSpace)。

根据系统创建一个或多个存储,按一定的优化规则存放。

数据库的划分

       数据库的划分以它的物理分布为原则,而不应数据量、表类型等原则来划分,数据库的多少对数据库的性能影响不大。对于访问数据量大、访问频繁的表来说,I/O操作很容易形成严重的瓶颈,因此减少I/O操作和I/O操作阻塞是数据库设计考虑的主要问题,解决方法将将表放在多个设备上,设备需创建在不同的物理驱动器上,最好能用智能型或阵列。

       日志和数据分开存储在不同设备上,如果索引多且占用空间大,也可以采用如此方式。

       数据库数量少的维护成本比数量大少。

       因此数据库划分以物理分布为原则。

       在PowerDesigner提供计算数据库或表的方法(Compute Database Size),可帮助设计者完成数据库的划分。

数据库的完整性

       数据库完整性可通过存储过程、声明性参照完整性(DRI)、

数据类型、约束、规则、默认值,以及触发器来实现。在数据库内,这些功能各以特有的方式发挥作用。综合利用这些完整性功能,可以使数据库灵活,易于管理,而且很安全。

数据完整性概念分为几个方面。

◆  表域完整性

通过主键来强制表的域完整性。

◆  引用完整性

利用参照来加强表之间的逻辑关系。

◆  数值域完整性

任何输入的数据在类型和范围上必须与指定的数据类型相匹配,只有当某列被说明允许NULL值,才允许向该列输入NULL。

数据库的性能测试

       生成数据库之后,应进行数据库性能测试,以便优化数据库的设计,因此需要生成测试数据,由于是性能测试,数据的规范性要求不高。通过PowerDesigner可方便地生成测试数据(Generate Test Data),完成性能测试。

数据的约束

O-O约束

对父表的INSERT、UPDATE、DELETE操作没有限制。

M-O约束

对父表操作的约束:

父表的INSERT操作,对M-O约束,父表中间的记录可以没有任何约束地添加到表中,因为这种约束中不一定必须有子女。

    父表的键值修改操作,只有在子表中其所有的子女对应均做修改后,才能修改,即一般采用级联更新的方法。

    父表的删除,父亲只有在其所有子女均被删除或重新分配之后该父亲才能被删除。

强制对可选(M-O)约束

O-M约束

    父表操作的约束:

父表的INSERT操作,对O-M约束,一个父亲只有当至少当它的一个、子女同时被加入或至少存在一个合法的子女时,才能被加入。

父表的键值修改操作,只有当一个子女被创建或已经有一名子女存在才行。

父表的删除,理论上删除父亲是没有限制的,实际上,删除主表记录时,不采用级联删除子表的方案,而采用将子表的外键置空。


           可选对强制(O-M)约束

 


M-M约束

父表操作的约束:

父表的INSERT操作,可能随后需要生成子女,即在子表中创建新的行。也可能通过对子表的重新分配来实施完整行限制。

父表的键值修改操作,只有在子表对应的外键的值修改成新值时才能进行。实际可能是先创建新的父表纪录,接着修改子表所有对应的纪录,使其与父表的新纪录关联,最后删除原父表纪录。

父表的删除,只有在子表中所有相关的行全部删除或重新分配之后,才能删除父表中的纪录,一般对子表也进行删除操作。


           强制对强制(M-M)约束

 


在四类约束:M-M、M-O、O-M、O-O。键值的修改可能会改变表之间的关系,而且可能违反一些约束。违反约束的操作是不允许的。具体的应用必须根据实际的要求和商业规则进行适当的选择。但在设计和开发时,必须考虑所分析的约束。

物理图的组织

数据库物理的组织以功能来组织为好,让人很容易就明白该功能需要操作哪些表,数据是如何流向的,但是按此组织,可能有些参照建立比较乱,其实有些参照可以不必建立,如在写入一个表时,其数据的来源就是从另一个查询得到的,可以保证数据的正确性,从功能划分来组织物理图,就可以不建立这个参照。

数据库的生成

有了数据库物理图,在生成数据库或数据库脚本时,应注意如下的问题:

参照完整性的实现,可以采用声明性参照实现或触发器实现,至于两种实现的优缺点,前面已经论述过,这里仅说一点,如果采用触发器实现需要在生成数据库后再生成触发器。

当参照含有级联(Cascade)删除或修改时,其实现要分情况处理:

Sybase、SQL Server不支持声明性级联(Cascade)删除或修改,只能通过触发器(Trigger)来实现。

Oracle、Informix支持声明性级联(Cascade)删除,但不支持

级联(Cascade)修改,也只能通过触发器(Trigger)来实现。

    当定义了用户自定义类型时,在生成数据库时,最好转换成数据库基本类型,对数据库性能和迁移都有利。

数据字典

       数据字典作为产品的一个归档文档,它定义应用系统数据库的各个方面。数据库物理模型建好后,就可以生成数据字典,数据字典的内容和形式可以在PowerDesigner定义模板,依据模板生成数据字典,再处理一下文档格式。

       在PowerDesigner用Create Report生成数据字典。

目前系统需要处理和优化的地方

主键的定义:

由于对业务了解的深度不够,某些表的主键建立存在一些问题,随着业务的深入逐步完善。

       参照的建立:

主键的定义不完善导致了参照建立的不完善,这也只能以后组不完善。

       数据库的划分:

       数据库的划分前面已经谈过,由于这个划分影响着服务器和客户端的程序,也只能以后的新版中解决。

       表结构的调整:

       对于有些表,如系统设置表,可以将它的横向结构改为纵向结构,这样增加了系统的灵活性。



Trackback: http://tb.blog.youkuaiyun.com/TrackBack.aspx?PostId=653826

数据库建模之PowerDesigner创建概念模型 实体(Entity),也称为实例,对应现实世界中可区别于其他对象的"事件”或"“事物"。例如,学校中的每个学生,医院中的每个手术。每个实体都有用来描述实体特征的一组性质,称之为属性,一个实体由若干个属性来描述。如学生实体可由学号、姓名、性别、出生年月、所在系别、入学年份等属性组成。实体集(Entity Set)是具体相同类型及相同性质实体的集合。例如学校所有学生的集合可定义为"学生"实体集 ,"学生"实体集中的每个实体均具有学号、姓名、性别、出生年月、所在系别、入学年份等性质, 阅读详情

相关推荐

PowerDesigner 数据库建模使用详解

PowerDesigner 数据库建模使用详解

congge 7081

PowerDesigner数据库设计

手把手教你PowerDesigner数据库设计,明白简单的使用方法以及相关的概念模型和物理模型的概念~

进一步有一步的欢喜 4752

深入解析PowerDesigner 15的数据库设计技巧

本文还有配套的精品资源,点击获取 简介:PowerDesigner 15是一款强大的数据库设计与建模工具,广泛用于系统分析、数据库设计和数据建模领域。本书深入讲解了概念模型、物理模型、逻辑模型的创建方法,逆向工程、数据库脚本生成、数据流图、业务流程建模、性能分析、版本控制和报表及文档生成等关键功能。读者通过学习PowerDesigner 15的应用,可以全面掌握数据库设计的...

weixin_36288992的博客 893

数据库设计软件Power Designer详解教程(附源码)

Power Designer 是美国Sybase公司的CASE工具集,利用Power Designer可分别从概念数据模型(Conceptual Data Model)和物理数据模型(Physical Data Model)两个层次对数据库进行设计。其中,概念数据模型描述的是独立于数据库管理系统(DBMS)的实体定义和实体关系定义;物理数据模型是在概念数据模型的基础上针对目标数据库管理系统的具体化。

谷哥的小弟 2万+

全面掌握PowerDesigner数据库设计与建模技术

本文还有配套的精品资源,点击获取 简介:PowerDesigner是一款用于软件开发和数据分析的数据库设计与逆向工程工具,涵盖数据建模、业务流程建模及系统分析等多种功能。本中文教程深入解释了PowerDesigner的核心概念和操作流程,旨在引导用户学会使用该软件,包括概念数据模型(CDM)、物理数据模型(PDM)的建立,业务流程(BPM)与数据流(DFD)建模,报表和图表...

weixin_42509507的博客 2242

全面掌握PowerDesigner数据库设计工具实战

PowerDesigner是SAP公司推出的一款强大的数据建模工具,广泛应用于企业级信息系统的架构设计中。它将数据架构、应用程序架构和业务流程建模集成在一个环境中,极大地提高了模型设计的效率和质量。逆向工程(Reverse Engineering),在软件工程领域,指的是通过分析已存在的系统来创建抽象表示的一种技术。在数据库领域,逆向工程特指从现有数据库结构导出概念数据模型(CDM)、逻辑数据模型(LDM)或物理数据模型(PDM)的过程。

weixin_42589700的博客 1567

PowerDesigner加速IQ数据仓库设计与实现

http://tech.it168.com/a2009/0210/264/000000264865.shtml 一、       数据仓库设计概况   数据仓库的作用在于从企业的应用系统中获取信息并转换到一个新的数据库,通过对新库中的历史信息和面向主题的信息进行分析,为领导层决策提供支持。数据仓库的设计不同于传统的数据库设计,数据库是为捕获数据而设计,数据仓库是为分析数据而设计

jackyxu_2008的专栏 902

Flowable多数据源实战:从配置到指定Schema的避坑指南

本文详细介绍了Flowable多数据源配置的实战指南,包括基础配置、数据源Bean创建、指定Schema的进阶配置以及常见问题排查。通过具体代码示例和避坑建议,帮助开发者高效实现多租户系统中的工作流引擎集成,特别强调了schema设置和事务管理的注意事项。

weixin_30824599的博客 486

【亲测免费】 PowerDesigner 16.7:数据库设计的强大助手

PowerDesigner 16.7:数据库设计的强大助手 【下载地址】PowerDesigner16.764位安装包分享 PowerDesigner是由Sybase公司开发的一款重量级CASE(计算机辅助软件工程)工具集,它是信息管理系统设计和数据库设计的强大助手。本资源提供了PowerDesigner 16.7版本的...

gitblog_06606的博客 755

pyecharts可视化图表-tree:从入门到精通

本文系统介绍了树图(Tree Chart)的可视化技巧,包含基础实现、方向定制和环形布局等实例。树图能清晰展示层次结构数据,适用于组织架构、文件系统等场景。教程详细解析了pyecharts树图的核心配置项,包括数据准备、方向设置(下上、右左)和样式定制,并提供了完整代码示例。通过本指南,读者可快速掌握专业树图的构建方法,实现复杂层次数据的可视化呈现。

大数据内容个人总结与分享 1970

葵花 Himawari 8/9号数据学习记录-01-数据初识

葵花卫星学习记录,第一章:卫星的来源与卫星数据的波段介绍

weixin_44111909的博客 534

利用PowerDesigner反向生成DB设计文档

从开发流程上来说,通常是先做设计书,在进行开发。 但是还是有很多项目由于各种各样的原因,需要后期补设计书。 本文的所述的方式是,通过PowerDesigner直连Mysql数据库(以此为例)。将DB结构导入到PowerDesigner中,而后通过vbs脚本,逆向生成Execl的DB设计书。 第一步:连DB。 关于 ODBC连接的配置方式 参考:https://blog.youkuaiyun.com/weixin_42517649/article/details/114475744 第二步:引入表结构之后

m0_60196931的博客 308

Windows下Python多版本共存与切换的终极指南(含环境变量详解)

本文详细解析了在Windows系统下实现Python多版本共存与切换的完整方案。通过深入讲解环境变量Path的底层机制,提供了从安装策略、精细化Path管理到创建快速切换脚本的实战指南,并介绍了py启动器和虚拟环境等高级技巧,帮助开发者彻底解决版本冲突问题,提升开发效率。

v6b7n8m9q0的博客 537

使用PowerDesigner设计数据库保姆级教程

使用PowerDesigner设计数据库 一、前言 使用PowerDesigner进行数据库设计,学《数据库技术》这门课时,使用它完成了一次小型的数据库设计。这次是第二次使用,中间间隔了一年多,再次打开PowerDesigner时,已经把使用步骤忘记个差不多了,有些还需要再去查找一下资料。为了让自己下次再次使用PowerDesigner时能快速上手,写此笔记便于后面使用时能快速上手! 1、powerDesigner设计软件介绍 数据库设计(DataBase Designe)是根据用户的需求,在某一

程序员小王的博客 2万+

TDDFT计算软件Octopus学习笔记(二):基态计算(Si)

本文以硅为例,来进行基态计算。

陈啸的博客 7307

Anolis 8系统下,手把手搞定Nginx、Redis、JDK8和Tomcat9的完整安装与配置(含开机自启)

本文详细介绍了在Anolis 8系统下搭建Java Web全栈环境的完整流程,包括JDK8、Tomcat9、Nginx和Redis的安装与配置,并实现系统级服务管理。通过深入每个组件的配置细节,揭示服务间的协同关系,最终打造一个生产级可用的标准化环境。

weixin_42556197的博客 158

Powerdesigner 数据库设计

本文档不讲述如何使用PowerDesigner,而是讲述如何将PowerDesigner的特点结合数据库设计的方法更好的设计一个数据库系统。 采用PowerDesigner设计数据库 PowerDesigner作为数据库建模和设计的CASE工具之一,在数据库系统开发中发挥着重要作用。运用PowerDesigner进行数据库设计,不但给人直观地理解模型,而且充分运用数据库的技术,优化...

weixin_30746117的博客 353

【WLAN】【测试】WPS测试方法小结

手机 一般稍微老的手机会支持,新手机反而不支持。 比如小米6(系统版本新的话不支持)在设置——高级设置——WPS连接。 笔记本 有些笔记本(如Surface Laptop 3)天生支持WPS,比如在连接某SSID的时候,会有“也可以通过按路由器上的按钮连接”这样的字样,出来后按AP的WPS按键即可以进行连接。 Qss软件 AP mesh组网中,Controller和Agent之间通过WIFI组网,可使用WPS的方式进行连接。可利用这点用Agent来测试AP的WPS功能。 ...

一介草民,只为生活。 1万+

db powerdesigner设计mysql数据库表

1.  开始   file->new model     2. 设计表之间关系3. 自增4. 索引及索引唯一

mengzuchao的专栏 3215

9.16华为OD机试真题 新系统 - 矩阵螺旋遍历 (Java/Py/C/C++/Js/Go)

9.16华为OD机试真题 新系统 - 矩阵螺旋遍历 (Java/Py/C/C++/Js/Go)

算法大师! 646

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: 如何让PowerDesigner支持自动生成含SQL Server 2000的表和列注释的角本
下一篇: 男女对话,随便扁
trf
trf
博客等级 码龄21年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值