新手学习数据库(一)用Powerdesigner设计数据库
说明:
一.学会用开发语言进行数据库编程,其关键是在于学会sql语言,开发语言只不过给程序员提供了一个操作数据库的接口罢了。
二. 本人也是初学者,采用的数据库设计软件是powerdesigner。利用该软件用户可以设计E-R图,然后软件会自动根据E-R图生成创建数据库表,即表间约束的sql语句。
三.由于powerdesigner安装软件大于220M,无法上传,所以请使用者自己百度下载。
四.学习数据库的数据。本人用的是微软的sql2000.sql语句的参考书籍是《SQL Server 2005基础教程》闪四清编著,清华大学出版社。数据库理论概念学习用的教材是数据库系统概念《DATABASE SYSTEM CONCEPTS》作者:Abraham Silberschatz, Henry F.Korth ,S.Sudarshan 高教出版社,本人用的是英文版本的。强烈向大家推荐这本书。之前在大学的时候学数据库用的是王珊,萨师宣编著的那本,结果学完了还是一头雾水。对于《DATABASE SYSTEM CONCEPTS》初级学习者只需要学习 2,3,4,6,7,14,15,16,10章即可。北京邮电大学计算机系的本科生,也是学的这几章。
五.本人下面设计的数据库,是对《DATABASE》书第三章的E-R图进行的实现(初学者也可直接从我的CSDN下载空间下载数据库生成代码,直接生成该数据库,直接用于各种操作练习,毕竟一个规模小的数据库,更适合初学者进行操作)
六.如果大家有学习需要建议到我指定的下载地址去下载我的powerdesigner设计工程,以此为实例进行学习,因为在博客中只能将重点略加说明。
具体设计:
打开POWERDESIGNER软件,文件菜单->新模型->概念数据模型,设置E-R图
设计E-R图的时候要注意三点:1:属性名不能重复例如:table 1 有一个属性叫做 customer-id ,那么table 2 中就不能有名字为customeer-id这个属性了,否则设计软件将会出差。
2:我们下面说一下关系的 maping cardinality ,以及 cardinality constraint
以实体customer和loan为例。
customer和loan 之间的映射关系应为many to many .即一个顾客可以有1个多个或是没有贷款,一个贷款可以属于一个或多个用户。所以 customer->loan的映射限制应为0,n。即一个customer最少可以有0个贷款,最多可以有很多(n)个贷款;loan->customer的映射限制为(1,n)。即一个贷款可以被至少一个客户所拥有,或被很多个用户所拥有。(注意:如果一个贷款没有用户,那么它在作为loan实体集的一个实体的意义也就没了)。如下图所示

3:我们要说一下Mandatory的意思。它的本意是必须,在这里只不为空的意思。即NOT null.我们再举一个例子进行说明:
在银行实体中,每个银行实体的branch-city选项都应该不为空,assets选项可以为空(银行可能刚建立,没有资产。但是银行一旦建立,就应该有所在地,不可能在天上建!)如下图所示:

在我们设计好了E-R 图之后,选择菜单tools->generate physical data model。如下图所示
我们可以看到一共六个表。原 E-R 图中有四个实体(branch ,customer,loan,account)四个关系(branch-loan,branch-account,borrower,depositer。由于loan 与branch的关系是many to one ,并且,loan实体集中的每个loan实体都参与到了branch-loan关系中,所以这个关系对应的表和“many” 一方的实体集所对应的表进行了合并,正如《database》一书中2.9.3.2 combination of tables 一节中所描述的理论那样。关系branch-account也是这样弱化的。
细心观察可以发现:上图中的account,loan表中的属性,比E-R图中account,loan实体多了一个branch-name属性。
上面的现象我们也可以这样总结:E-R 图中的MANY TO MANY 关系映射成关系数据库中的表,MANY TO ONE 关系映射成关系数据库中,代表MANY 一方实体集的表中的一个外键约束。
最后一步:在physical data design 模式下。即powerdesign当前客户区显示的是.pdm文件。选择database菜单->generatedatabase选项,即可产生 构建数据表,以及数据表中各种约束的sql语句。
还要补充说明一下:
我们在产生physical data model 时,会出现如下对话框,在DBMS 下拉列表中,我们要选择Mrosoft sql server2000。

新手学习数据库(一)用Powerdesigner设计数据库的更多相关文章
- 采用PowerDesigner 设计数据库
PowerDesigner设计数据库的教程网上都有,最好的是我一位同学写的,地址: 点击这里 我的大致流程如下: 首先要以管理员的身份打开PowerDesigner,如果没这么做,将导致后面无法创建S ...
- PowerDesigner 设计数据库中常用脚本
PowerDesigner 设计数据库中常用脚本 数据库设计 物理模型设置 Name转Comment脚本 '********************************************** ...
- 学习笔记31_ORM框架ModelFirst设计数据库
ModelFirst就是先设计实体数据类型,然后根据设计的数据类型,生成数据库表 1.新建项--ADO.NET实体数据模型--空数据模型--进入模型设计器(点击xxx.edmx文件也能进入设计器). ...
- 使用POWERDESIGNER设计数据库的20条技巧(转)
1.PowerDesigner使用MySQL的auto_increment ◇问题描述: PD怎样能使主键id使用MySQL的auto_increment呢? ◇解决方法: 打开table prope ...
- 利用PowerDesigner设计数据库
PowerDesigner非常强大, 可以利用它完成数据库的设计. 1.下载地址:http://pan.baidu.com/s/1DsLrg 2.表设计: 建立概念数据模型(Conceptual Da ...
- 使用PowerDesigner设计数据库
1.快捷键CTRL+N 创建 New Model 选择如下图,并设置 Model name 单击OK 2.使用工具添加实体 双击Entity_1,填上如下图信息 切换选项卡,添加属性信息 其中 M ...
- 如何使用PowerDesigner设计数据库关系模式
/*==============================================================*/ /* DBMS name: Microsoft SQL Serve ...
- PowerDesigner设计Name和Comment 替换
这两天在用powerdesigner设计数据库.一直以为name就是注释名字来着.后来生成sql语句 怎么就没有注释信息那. 后来看了半天才知道自己范2了. 通过各种信息查找.大多都是改databas ...
- 使用PowerDesigner设计建造MySQL数据库
使用PowerDesigner设计建造MySQL数据库 一.使用PowerDesigner制作建库脚本 1.设计CDM(Conceptual Data Model) 2.选择 Tools -> ...
随机推荐
- excle,aspose.cells 公式字段值取不到 xmls转xml
问题: 一,单元格如果是公式的,读出值为0 aspose.cells 4.4.0.5版本 由于太低,读xmls后缀的excel文件时,发现如果此列是公式算出来的,值是获取不到的.获取到的值一直是0 二 ...
- html 页面 ajax 方法显示遮罩
showLoading.css 样式: ;;list-style-type:none;} a,img{;} .overlay{;;;;;width:100%;height:100%;_padding: ...
- 在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新。
UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0 ...
- Fail-fast的原因及解决方法
[转载]:http://blog.csdn.net/chenssy/article/details/38151189 在JDK的Collection中我们时常会看到类似于这样的话: 例如,ArrayL ...
- API断点大全
1.限制程序功能函数 EnableMenuItem 允许.禁止或变灰指定的菜单条目EnableWindow 允许或禁止鼠标和键盘控制指定窗口和条目(禁止时菜单变灰) 2.对话框函数 CreateDia ...
- Android 环境搭建 版本问题
jdk1.6 1.7 eclipse 3.7.2 SDK-r12 ADT 12 SDK和ADT必须配套 搭建环境需要四个软件: 1.JDK(这是最新版本jdk1.7官方下载地址:http:// ...
- ECNU-2574 Principles of Compiler
题意: 给出编译规则,求是否满足条件 A:= '(' B')'|'x'. B:=AC. C:={'+'A}. 其中{}表示里面的内容可以出现0次或者多次 注意点见代码注释 #include ...
- POJ3697+BFS+hash存边
/* 疾速优化+hash存边 题意:给定一个包含N(1 ≤ N ≤ 10,000)个顶点的无向完全图,图中的顶点从1到N依次标号.从这个图中去掉M(0 ≤ M ≤ 1,000,000)条边,求最后与顶 ...
- FreeMarker 乱码解决方案 生成静态html文件
读取模板的时候有一个编码: Template template = this.tempConfiguration.getTemplate(templatePath,"UTF-8") ...
- 13. 求链表倒数第k个节点
题目:输入1个链表,输出该链表倒数第k个节点,有头指针和尾指针.链表倒数第0个节点是链表的尾指针节点. 代码: /* 尾指针是倒数第0个,则倒数第k个是正数第len-k个,计算len */ #incl ...