开发者社区> 悟静> 正文

从实体和关系角度看 PowerDesigner 设计数据库模型

简介: 从实体和关系角度看 PowerDesigner 设计数据库模型 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循“署名-非商业用途-保持一致”创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。
+关注继续查看

从实体和关系角度看 PowerDesigner 设计数据库模型

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)

本文遵循“署名-非商业用途-保持一致”创作公用协议

转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino否则,出自本博客的文章拒绝转载或再转载,谢谢合作。


还是从主体和关系出发,我们进行数据库建模。

和面向对象的 UML 建模有类似之处,只不过数据库建模是表间关联及最小范畴的界定。

当然五个泛式在数据库设计过程中的指导作用是不可或缺的,然而,如果你真的完全遵照五个范式设计出了数据库模型,那么你的设计本身就失败了!

因为那个结果一定是不太好用的,趋于极致的往往就是不合常理的。


适当的冗余,对于时间与空间的权衡,才是真正的数据库设计所遵循的至上法则,这其中无不时刻涉及实际业务环境因素,因地置宜,因时不同,因人而异!


马列矛盾理论告诉我们:数据库设计就是‘主体’和‘关系’的设计

这一篇中传达了主体和关系的概念。


在我所涉及到的数据库设计工具中,最喜欢 MySql WorkBench,其次是 ERWin,最后才是 PowerDesigner。

而 ERWin 当年就很难下到,现在下到了,居然没有 SQLSERVER2000的 DBLib 无法连接 SQLSERVER2008,这真有点扯了,那也是没办法的事情,有空儿再试试。


目前只能求其次,用 PowerDesigner 了。

相对 MySQL WorkBench 来讲,表的自增长 id,还是 MySQL WorkBench 做得好些,每个表都是 id,插入其它表做外键时,自动将表名加在 id 前。


即然开始用 PowerDesigner 了,那么就看看它的好吧,一步一步来做设计。


首先,我们得了解 PowerDesigner  中有概念模型、逻辑模型和物理模型,可以在概念模型中设计,并逐步生成后续两者,再由物理模型生成建库脚本或直接创建库。

反过来,从现有数据库反向生成物理模型,也是可以的。


  


上面 PowerDesigner  中表的设计,Name 和 Code 暂时都使用英文,因为我还不知道 Name 用中文,最后生成的数据库如何用 Code 中的英文。

这里的 Convert name into codes 选项勾后,也不起作用,不知是何原因。有了解的朋友,敬请指教。


从上面看出,表名 student ,自增长 id 也得加上表名 student_id,主要是这个名字全局唯一,所以都用 id 就会冲突。


下面 school 和 student 两表的关系是依赖关系,即学生因上了某所学校而称之为学生。

但实际用时,为了降低约束,不让 school_id 在 student 表中作为主键,那么 Dependent 不勾选,Mandatory 表示强制,即一个学生必须有一个学校,而学校至少有一个学生,下图中默认允许学校没学生了,新开张的吧偷笑


上面这种关系线,是一对多的关系,线即代表外键,在逻辑图和物理图中会生成这个外键 。

另一种是,一条关系线代表一种多对多的关系,会转换成一张表。


多出一张 relationship_2 的表,其中关联的两张表的主键形成了复合主键。


最终,核心在于考虑好表间的关系,这才是主要的,至于这个工具如何用,那都是其次了。




版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
LintCode 题解丨面试真题:两数之和 III-数据结构设计
LintCode 题解丨面试真题:两数之和 III-数据结构设计
200 0
power designer pdm生成sql脚本和数据库以及逆向工程
正向工程:PDM--->sql or database 项目中我们经常需要根据PDM生成sql脚本,然后由sql脚本一起执行到数据库中,如果PDM中表比较多,我们一个个去建的话会很费时间,根据需要我们也可以直接将pdm生成到数据库中。 逆向工程:sql or database --->PDM 有时我们也需要根据sql脚本生成pdm图,或者是数据库的最新信息生成到PDM中
1503 0
PowerDesigner逆向工程生成PDM模型及数据库
原文 http://www.cnblogs.com/springside4/archive/2012/04/16/2481149.html 在数据建模过程中,我们建立概念数据模型,通过正向工程生成物理数据模型,生成数据库建 库脚本,最后将物理数据模型生成关系数据库。
1416 0
html5 getComputedStyle + resize 实现动态宽高度等比响应式页面设计
序:通常我们只能控制div的宽度 而不能控制高度,在响应式页面里 如果要这个div是正方形那么必须的用媒体查询在不同的分辨率下写死宽高度 今天突发奇想研究了个 用百分比来动态控制div的高度让其与宽度相同 成为一个正方形 甚至任何你想要比例 一,背景:目前移动端大多数图片或视频列表页面的显示,列出...
1057 0
使用PowerDesigner 15对现有数据库进行反向工程(图解教程) by Yulh
原文 使用PowerDesigner 15对现有数据库进行反向工程(图解教程一) by Yulh    由于早期的一个项目在数据库设计建立时没有输出为E-R图,偶在对此项目进行二次改造升级时则使用了PD对原有的数据库进行反向工程,即根据数据源 将数据库的的所有表生成为E-R图结构,我使用的是PD 15,反向工程的命令为于“File”菜单中的"Reverse Engineer”-反向引擎。
1044 0
.net firamework 框架里面的控件的继承关系。
     记得当初学习VB6.0的时候,入门的书,一上来就是控件的介绍,控件的属性、事件的使用,拖拽一个文本框、一个按钮,然后再双击按钮,在按钮的事件里面给文本框的Text 设置一个“hello word”,第一步就OK了。
519 0
智能物流终端数据库模型
首先创建了一个数据库,然后创建了两个数据表。 create table goods(number integer,name varchar(100),re_name varchar(15),re_addr varchar(100),st_stati...
667 0
使用PowerDesigner生成数据库测试数据
原文http://blog.csdn.net/horace20/article/details/6672081 特别说明:本文产生于个人工作总结,转载请注明原文出处http://blog.csdn.net/horace20 1、环境        PowerDesigner15.2.0.3042-BEAN+ MySQL5.5 + mysql-connector-odbc-5.1.8        以上软件在网上都很容易找到,这里就不再给出相关链接!系统环境为WindowsXP。
1073 0
+关注
悟静
从事软件行业近二十年
690
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载