数据库系统原理及MySQL应用教程
上QQ阅读APP看书,第一时间看更新

4.10 利用PowerDesigner设计数据库系统实验

一、实验目的

1)了解数据库设计的过程。

2)学会用PowerDesigner等数据库设计工具进行数据库设计。

3)学会从实际需求进行数据库的设计。

二、验证性实验

1.根据详细步骤完成奖学金模块数据库设计

用PowerDesigner软件设计奖学金模块。该模块的功能设计中有四个实体,具体信息如表4-1至表4-4所示。

表4-1 班级表(t_class)

表4-2 学生表(t_stu)

表4-3 成绩表(t_grade)

表4-4 奖学金表(t_scholarship)

(1)利用PowerDesigner软件设计概念模型

概念模型也称为信息模型,以E-R图理论为基础,并对其进行了扩充。该模型是从用户的观点对信息进行建模,主要用于数据库的概念数据模型设计。利用PowerDesigner软件设计概念模型时,一般会经过创建实体,添加实体之间的关系两个阶段。

1)创建实体。创建实体的操作如下:

打开PowerDesigner软件,选择“File”→“New Model”命令,打开“New Model”对话框,在该对话框中选择“Conceptual Data Model”模型类型,同时设置“Model name”模型名称的信息,如图4-12所示。

图4-12 选择设计概念数据模型选项

单击“OK”按钮,进入概念数据模型主界面,为了保证概念数据模型图能绘制到一个表格中,通过选择“View”→“Zoom In”命令,对图标窗口中的表格进行放大,如图4-13所示。

图4-13 在图表窗口中设置工作区

为便于查看,对中间的表格进行标注,方法是通过选择“Toolbox”面板中的Free Sym-bols中的“Text”工具按钮,对其标注为奖学金模块,如图4-14所示。如果没找到“Tool-box”面板,可以通过选择菜单View->Toolbox来调出Toolbox面板。

图4-14 利用Text工具进行标注

接着选择“Toolbox”中的“Entity”工具按钮,添加班级实体,如图4-15所示。

图4-15 添加班级实体

双击实体,弹出实体属性设置窗口。在“General”选项卡中设置用于标识实体名称的“Name”选项为“班级表”,设置用于标识实体代码的“Code”选项为“t_class”,设置用于对实体注释的“Comment”选项为“关于班级的表格”,如图4-16所示。

图4-16 “General”选项卡

切换到用来设置实体属性的“Attributes”选项卡,其中,“Name”字段用于标识字段名称,“Code”字段用于标识字段代码,“Data Type”字段、“Length”字段和“Precision”字段用于设置字段的类型。对班级表实体属性设置如图4-17所示。

图4-17 “Attributes”选项卡

单击“确定”按钮,得到最终的关于班级的实体信息,如图4-18所示。

图4-18 最终的班级实体

下面以同样的方式设计“奖学金模块”中的学生、成绩、奖学金实体,如图4-19至图4-24所示。

图4-19 学生实体普通属性

图4-20 学生实体所具有的属性

图4-21 成绩实体普通属性

图4-22 成绩实体所具有的属性

图4-23 奖学金实体普通属性

图4-24 奖学金实体所具有的属性

最终,关于奖学金模块的四个实体对象具体信息,如图4-25所示。

图4-25 奖学金模块的实体

2)添加实体之间的关系。具体操作如下:

在数据库设计中,实体之间存在三种关系,分别是“一对一关系”“一对多关系”“多对多关系”。在此次设计中,先添加班级与学生之间的关系。选择“Toolbox”中的“Rela-tionship”工具按钮,为创建好的班级实体和学生实体添加联系,如图4-26所示。

添加成功后,双击关系图标,弹出“Relationship Properties”窗口,设置班级实体与学生实体之间的属性信息。在“General”选项卡中设置用来标识实体间关系名称的“Name”选项为“班级学生关系”,设置用来标识实体间关系代码的“Code”选项为“class_stu_r”,设置对实体经行注释的“Comment”选项为“班级与学生的关系”,如图4-27所示。

在“Cardinalities”选项卡中存在一个“Cardinalities”选项组,可用来设置实体间的各种关系。班级与学生是一对多关系,选择“One-many”单选按钮,如图4-28所示。

图4-26 为班级实体和学生实体添加联系

图4-27 关系普通属性

图4-28 设置实体之间的关系

单击“确定”按钮,就设置好了班级与学生实体之间的关系,如图4-29所示。

图4-29 班级与学生实体之间的关系

以同样的方式创建并设置其他的实体之间的关系。学生实体与成绩实体是一对一关系(One-One),学生实体与奖学金实体是多对多关系(Many-Many),设置如图4-30至图4-33所示。

图4-30 关系普通属性

图4-31 设置实体之间的关系

图4-32 关系普通属性

图4-33 设置实体之间的关系

至此,关于奖学金模块的概念模型设计完成,如图4-34所示。

(2)利用PowerDesigner软件转换生成物理数据模型

物理数据模型,就是根据计算机系统的特点,为给定的概念数据模型确定合理的存储结构和存取方法。其中合理主要是指设计出的物理数据库占用的存储空间少,对数据库上数据的操作能有更高的效率。

图4-34 奖学金模块的概念模型

当概念数据模型设计完成后,选择“Tool”→“Gen-erate Physical Data Model”命令,弹出“PDM Generation Option”窗口,然后在该窗口中设置“DBMS”为“MySQL 5.0”,同时设置“Name”、“Code”都为“schol-arshipPDM”,如图4-35所示。

图4-35 选择设计物理数据模型选项

单击“确定”按钮,在物理模型主界面中会根据概念模型,结合所给出的数据库管理系统设计出合理的表和表之间的关系,具体信息如图4-36所示。

图4-36 奖学金模块的物理数据模型

至此,即完成了订单管理模块的物理数据模型。

(3)生成数据库创建脚本

生成物理数据模型后,就可以利用PowerDesigner软件将其转换为数据库脚本。打开物理数据模型scholarshipPDM,选择“Database”→“Generate Database”命令,打开图4-37所示的窗口,然后在窗口中设置数据库脚本的名称和位置。

图4-37 设置数据库的脚本信息

打开数据库脚本文件,具体内容如下:

三、设计性实验

1.用PowerDesigner软件为在线图书销售系统中的订单管理模块设计数据库。

该模块的功能设计中有四个实体,具体信息如表4-5至表4-8所示。

表4-5 用户表(t_user)

表4-6 书籍表(t_book)

表4-7 订单表(t_order)

表4-8 订单明细表(t_item)

1)利用PowerDesigner软件设计概念模型。

①创建实体。

②添加属性。

③设置每个实体的主码。

④添加实体之间的联系。

2)利用PowerDesigner软件转换成物理数据模型。

3)利用PowerDesigner软件生成创建数据库表的SQL脚本,并在MySQL中生成数据库。

2.根据图4-38所示的“交通违章处罚通知书”设计数据库。

图中显示一张交通违章处罚通知单,根据这张通知单所提供的信息,设计一个存储相关信息的E-R模型,并将E-R模型转换成关系数据模型,要求标注各关系模式的主键和外键(其中:一张违章通知书可能有多项处罚,例如,警告+罚款)。

图4-38 交通违章处罚通知书

1)找出实体、实体的属性、实体的主码。

2)找出实体间的联系及联系类型。

3)用PowerDesigner画出E-R图。

4)选择MySQL作为DBMS,把E-R图转换成物理模型,根据日常生活中的情况合理设置数据类型,其中通知书编号长度请参照示例“TZ11719”,警察编号长度是三个字符。在MySQL中创建违章数据库(wzdb),并利用PowerDesigner生成所有的数据表。

3.根据提供的网页,设计数据库(另外上交打印的报告)。

下面所提供的网页是关于图书检索的。图4-39中下拉列表框中的数据要求从数据库中读取。根据图4-39中的检索条件,在图4-40中得到符合条件的图书列表。

图4-39 检索条件选择

图4-40 图书列表

1)用PowerDesigner画出E-R图,要求包含网页中所需的所有属性,设置每个实体的主码。

2)选择MySQL作为DBMS,转换成物理模型,设置合理的数据类型。

3)生成建表SQL脚本,并在MySQL中创建readbook数据库,并生成相应数据表。

四、观察与思考

1)使用PowerDesigner将概念模型转换成物理模型后,实体、属性、联系有哪些变化?

2)PowerDesigner工具中的自动模型转换是否符合模型转换的理论规则?

3)尝试设计一个一对一的实体联系,看看PowerDesigner工具将如何处理。结合模型转换的理论规则,说说PowerDesigner工具这样处理是否妥当?你是否能想出更有创新的处理办法?