实验11 数据库设计之PowerDesign使用.docx
《实验11 数据库设计之PowerDesign使用.docx》由会员分享,可在线阅读,更多相关《实验11 数据库设计之PowerDesign使用.docx(13页珍藏版)》请在冰豆网上搜索。
实验11数据库设计之PowerDesign使用
实验十一 数据库设计之PowerDesignerDataModel
姓名:
学号:
专业:
网络工程
班级:
1
同组人:
无
实验日期:
2009-11-26
【实验目的与要求】
1.熟悉PowerDesigner的操作环境与使用者接口,并学习设定PowerDesigner的操作环境与相关设定;
2.熟练掌握概念数据模型(CDM)的创建;
3.掌握如何使用PowerDesigner完成整个数据库工程的初步技能.
【实验内容与步骤】
11.1PowerDesigner环境熟悉
启动PowerDesigner,选择“File/New”命令,在弹出的对话框中选择ConceptualDataModel(概念数据模型),单击“确定”按钮,进入概念模型设计界面。
概念设计阶段是通过悼念、分析和整理数据,确定实体、属性及它们之间的联系。
概念数据模型是对实体和实体间的关系的定义(即数据库的逻辑模型),是独立于数据库和数据库管理系统的。
单击面板中的实体
,然后在画布上分别单击,创建若干个实体。
创建实体后,单击面板上的光标图标
,设置实体的属性。
双击刚才创建的实体,如“Entity_3”,弹出“实体属性”对话框。
在“General(常规)”选项卡中,修改实体的名称为“Student”;单击“Attributes(属性)”标签,设置实体的属性,输入“StudentID”、“StudentNo”、“StudentName”、“Sex”、“Grade”、“Discourse”、“Class”、“Remark”等属性,见下图。
输入属性后,要设置属性的数据类型以及主关键字。
设置属性的方法是对每个属性单击其DataType单元格,在弹出的“标准数据类型”对话框中进行配置。
例如,设置“StudentID”属性为VariableCharacter类型,长度为6位,见下图。
设置完毕后,单击“确定”按钮回到“实体属性”对话框的“属性”选项卡中。
设置主关键字的方法是,向右拖动最下边的滚动条,能看到M、P、D三个带有复选框的列。
例如:
设置“StudentID”为主关键字,则在其后边的P复选框中打勾,如下图所示。
依次设置其他实体及属性。
实体定义完成后,接下来创建实体间的关系。
单击面板上的关系图标
,在一个实体上单击鼠标左键,然后拖至另外一个实体,如图所示。
创建关系后,单击面板上的光标图标
,进一步设置实体间的关系。
例如设置“Student”实体和“Assess”实体的关系,双击关系“Relationship_1”,弹出“关系属性”对话框,如下图所示。
在“常规”选项卡中,修改关系的名称为“Student_Access”,在“详细资料”中选择“一对多”,表示“Student”实体和“Assess”实体之间是一对多的对应关系。
依次设置其他实体间的关系。
至此,概念模型设计工作完成。
设计好的概念数据模型如下图所示。
接下来,要将概念数据模型转化为物理数据模型。
物理数据模型是在概念数据模型的基础上针对目标数据库管理系统的具体化。
选择“工具/生成物理数据模型”命令,在弹出的“PDM生成选项”对话框中选择数据库管理系统的类型为MicrosoftSQLServer2000,如图所示。
生成的物理数据模型是在SQLServer2000数据库中的表结构以及完整性约束关系。
物理模型设计结束后,利用PowerDesigner的“生成数据库”功能,产生数据库中各数据对象的定义。
操作方法是选择“数据库、生成数据库”命令。
如图所示,在出现的“数据库生成”对话框中,单击“确定”按钮。
PowerDesigner几乎能够产生所有常用数据库管理系统的SQL脚本,设计人员完全可以不经过手工编写SQL脚本直接在DBMS中生成数据库。
使用记事本等文本编辑器打开生成的SQL脚本文件。
将脚本复制到查询分析器中执行,无须手工创建表、视图等数据对象。
同时PowerDesigner提供增量的数据库开发功能,支持局部更新,可以在概念模型、物理模型、实际数据库三者间完成设计的同步。
11.2使用PowerDesigner设计与实现数据库
1.参照[实验4],建立产品销售数据库CPXS的概念模型。
请给出实验结果截图:
2.参照[实验4],并根据产品销售数据库CPXS的概念模型生成其物理模型。
请给出实验结果截图:
2.参照[实验4],并根据产品销售数据库CPXS的物理模型生成数据库,请给出相应的结果语句(自动生成的SQL语句)。
/*==============================================================*/
/*DBMSname:
MicrosoftSQLServer2000*/
/*Createdon:
2009-11-269:
37:
41*/
/*==============================================================*/
ifexists(select1
fromdbo.sysreferencesrjoindbo.sysobjectsoon(o.id=r.constidando.type='F')
wherer.fkeyid=object_id('CPXSB')ando.name='FK_CPXSB_CP_CPXSB_CP')
altertableCPXSB
dropconstraintFK_CPXSB_CP_CPXSB_CP
go
ifexists(select1
fromdbo.sysreferencesrjoindbo.sysobjectsoon(o.id=r.constidando.type='F')
wherer.fkeyid=object_id('CPXSB')ando.name='FK_CPXSB_XSS_CPXSB_XSS')
altertableCPXSB
dropconstraintFK_CPXSB_XSS_CPXSB_XSS
go
ifexists(select1
fromsysobjects
whereid=object_id('CP')
andtype='U')
droptableCP
go
ifexists(select1
fromsysindexes
whereid=object_id('CPXSB')
andname='CP_CPXSB_FK'
andindid>0
andindid<255)
dropindexCPXSB.CP_CPXSB_FK
go
ifexists(select1
fromsysindexes
whereid=object_id('CPXSB')
andname='XSS_CPXSB_FK'
andindid>0
andindid<255)
dropindexCPXSB.XSS_CPXSB_FK
go
ifexists(select1
fromsysobjects
whereid=object_id('CPXSB')
andtype='U')
droptableCPXSB
go
ifexists(select1
fromsysobjects
whereid=object_id('XSS')
andtype='U')
droptableXSS
go
/*==============================================================*/
/*Table:
CP*/
/*==============================================================*/
createtableCP(
产品编号char(6)notnull,
产品名称char(30)null,
价格float(8)null,
库存量intnull,
constraintPK_CPprimarykeynonclustered(产品编号)
)
go
/*==============================================================*/
/*Table:
CPXSB*/
/*==============================================================*/
createtableCPXSB(
产品编号char(6)notnull,
客户编号char(6)notnull,
CP_产品编号char(6)null,
XSS_客户编号char(6)null,
销售日期datetimenull,
数量intnull,
销售额float(8)null,
constraintPK_CPXSBprimarykeynonclustered(产品编号,客户编号)
)
go
/*==============================================================*/
/*Index:
XSS_CPXSB_FK*/
/*==============================================================*/
createindexXSS_CPXSB_FKonCPXSB(
XSS_客户编号ASC
)
go
/*==============================================================*/
/*Index:
CP_CPXSB_FK*/
/*==============================================================*/
createindexCP_CPXSB_FKonCPXSB(
CP_产品编号ASC
)
go
/*==============================================================*/
/*Table:
XSS*/
/*==============================================================*/
createtableXSS(
客户编号char(6)notnull,
客户名称char(30)null,
地区char(10)null,
负责人char(8)null,
电话char(12)null,
constraintPK_XSSprimarykeynonclustered(客户编号)
)
go
altertableCPXSB
addconstraintFK_CPXSB_CP_CPXSB_CPforeignkey(CP_产品编号)
referencesCP(产品编号)
go
altertableCPXSB
addconstraintFK_CPXSB_XSS_CPXSB_XSSforeignkey(XSS_客户编号)
referencesXSS(客户编号)
go