说明:

一.学会用开发语言进行数据库编程,其关键是在于学会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设计数据库的更多相关文章

  1. 采用PowerDesigner 设计数据库

    PowerDesigner设计数据库的教程网上都有,最好的是我一位同学写的,地址: 点击这里 我的大致流程如下: 首先要以管理员的身份打开PowerDesigner,如果没这么做,将导致后面无法创建S ...

  2. PowerDesigner 设计数据库中常用脚本

    PowerDesigner 设计数据库中常用脚本 数据库设计 物理模型设置 Name转Comment脚本 '********************************************** ...

  3. 学习笔记31_ORM框架ModelFirst设计数据库

    ModelFirst就是先设计实体数据类型,然后根据设计的数据类型,生成数据库表 1.新建项--ADO.NET实体数据模型--空数据模型--进入模型设计器(点击xxx.edmx文件也能进入设计器). ...

  4. 使用POWERDESIGNER设计数据库的20条技巧(转)

    1.PowerDesigner使用MySQL的auto_increment ◇问题描述: PD怎样能使主键id使用MySQL的auto_increment呢? ◇解决方法: 打开table prope ...

  5. 利用PowerDesigner设计数据库

    PowerDesigner非常强大, 可以利用它完成数据库的设计. 1.下载地址:http://pan.baidu.com/s/1DsLrg 2.表设计: 建立概念数据模型(Conceptual Da ...

  6. 使用PowerDesigner设计数据库

    1.快捷键CTRL+N 创建 New Model 选择如下图,并设置 Model name 单击OK 2.使用工具添加实体 双击Entity_1,填上如下图信息   切换选项卡,添加属性信息 其中 M ...

  7. 如何使用PowerDesigner设计数据库关系模式

    /*==============================================================*/ /* DBMS name: Microsoft SQL Serve ...

  8. PowerDesigner设计Name和Comment 替换

    这两天在用powerdesigner设计数据库.一直以为name就是注释名字来着.后来生成sql语句 怎么就没有注释信息那. 后来看了半天才知道自己范2了. 通过各种信息查找.大多都是改databas ...

  9. 使用PowerDesigner设计建造MySQL数据库

    使用PowerDesigner设计建造MySQL数据库 一.使用PowerDesigner制作建库脚本 1.设计CDM(Conceptual Data Model) 2.选择 Tools -> ...

随机推荐

  1. unity脚本的基础语法

    基本的回调方法 Strat()方法:在游戏场景加载时被调用,在该方法内可以写一些游戏场景初始化之类的代码. update():在每一帧渲染之前被调用,大部分游戏代码在这里执行,除了物理部分的代码. F ...

  2. Jplayer(转)

    Jplayer必须要加载 1.样式  jplayer.blue.monday.css 2.jq jquery.1.6.2.min.js 当前最新版本为1.6.2 3.jplayer的js jquery ...

  3. 【规范】javascript 变量命名规则(转)

    匈牙利命名法 语法 变量名 = 类型 + 对象描述 类型指变量的类型 对象描述指对象名字全称或名字的一部分,要求有明确含义,命名要容易记忆容易理解. 通过在变量名前面添加相应小写字母的符号标示作为前缀 ...

  4. VS asp.net 连接64位oracle 11g

    vs2010 vs2013 vs2015 无法连接oracle 11g 64bit 尝试加载 Oracle 客户端库时引发 BadImageFormatException......... A.安装o ...

  5. protobuf 向前兼容向后兼容

    http://blog.163.com/jiang_tao_2010/blog/static/12112689020114305013458/ 不错的protobuf.. protobuf的编码方式: ...

  6. 如何使用 APM 搞定 PHP 应用的性能优化?

    APM 究竟是什么? 很多人都是第一次听说 APM 的概念,本文主要阐述如何使用 APM 的解决方案来实现 PHP 应用性能的优化.首先先介绍一下 APM (Application Performan ...

  7. DIY Ruby CPU 分析——Part III

    [编者按]作者 Emil Soman,Rubyist,除此之外竟然同时也是艺术家,吉他手,Garden City RubyConf 组织者.本文是 DIY Ruby CPU Profiling 的第二 ...

  8. POJ2031Building a Space Station

    http://poj.org/problem?id=2031 题意:你是空间站的一员,太空里有很多球形且体积不一的“小房间”,房间可能相距不近,也可能是接触或者甚至是重叠关系,所有的房间都必须相连,这 ...

  9. Amzon MWS API开发之订单接口

    Amazon订单接口是Amazon MWS 开发接口中的一大块,我们可以通过接口调用来获得订单数据. 在调用接口之前,首先我们要获得相关店铺商家的店铺密钥等信息.如下: 在此我将所有信息定义在一个类中 ...

  10. uEditor独立图片上传

    项目中.上传图片,非常希望有一款比较兼容的查件. 网上找了一些,图片上传立刻显示的js代码,还有uploadify.都会碰到这样那样的不兼容和其它头疼的问题. 后来想,干脆就用php的上传类最干脆.但 ...