说明:

一.学会用开发语言进行数据库编程,其关键是在于学会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. oracle linux了解基本命令行

    1.      Linux的版本:核心(kernel)版本和发行(distribution)版本 2.      复制.删除和移动文件的命令 cp [选项] 源文件或目录  目标文件或目录 -R,-r ...

  2. 拉链法解决Hash节点冲突问题

    <?php /* * hash::拉链法解决hash节点存储冲突问题 * ::2014-07-02 * ::Small_Kind */ class small_hash { private $s ...

  3. "!x++" 我之见解

    "!x++"之说,各人见解不同,但真理只有一个.我只尝试着说出一种见解,未知真相. 何如? "!x++"等价于"!(x++)". 理论分析 ...

  4. mysql优化之sakila测试数据库

    下载地址,选择相应的版本来进行安装测试 http://dev.mysql.com/doc/index-other.html 相关说明 http://dev.mysql.com/doc/sakila/e ...

  5. EXTJS 资料 Ext.Ajax.request 获取返回数据

    下面是一个登陆页面调用的EXTJS login function,通过 url: '/UI/HttpHandlerData/Login/Login.ashx',获取返回登陆账户和密码! Ext.onR ...

  6. Timeline

    Timeline面板   Chrome开发者工具详解(3)-Timeline面板 注: 这一篇主要讲解面板Timeline,参考了Google的相关文档,主要用于公司内部技术分享.. 更新时间:201 ...

  7. python学习笔记26(python中__name__的使用)

    在python中,每个py文件都是一个模块,也都是一个可执行文件,即包含main方法.因此,对每个py文件,可以单独运行,也可以import它给其他客户使用,这两种情况不一样. 1. 如果模块是被导入 ...

  8. Qt智能指针简明说明

    下面的智能指针分别对应boost库,Qt库,c++11的智能指针 boost::scoped_ptr  QScopedPointer unique_ptr 在其生命期结束后会自动删除它所指的对象(确定 ...

  9. Android开发之onClick事件的三种写法(转)

    package a.a; import android.app.Activity; import android.os.Bundle; import android.view.View; import ...

  10. ue标签不见了,如何解决?

    小问题,但是很恶心...如下图: 解决方法: 右键点击[菜单栏]右边的空白处,选择advanced,默认是basic,这时菜单栏中的菜单条目会变多,然后选择[视图]---[视图/列表]---[打开文件 ...