![数据库系统原理及MySQL应用教程](https://wfqqreader-1252317822.image.myqcloud.com/cover/866/33892866/b_33892866.jpg)
4.10 利用PowerDesigner设计数据库系统实验
一、实验目的
1)了解数据库设计的过程。
2)学会用PowerDesigner等数据库设计工具进行数据库设计。
3)学会从实际需求进行数据库的设计。
二、验证性实验
1.根据详细步骤完成奖学金模块数据库设计
用PowerDesigner软件设计奖学金模块。该模块的功能设计中有四个实体,具体信息如表4-1至表4-4所示。
表4-1 班级表(t_class)
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/89_01.jpg?sign=1738900391-uXNyZcpA5spAjcBU5IzTWGyVMzbxjDIK-0-0fad432fd77514a1ee1cd9b92c0f8070)
表4-2 学生表(t_stu)
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/89_02.jpg?sign=1738900391-MOVphXznXkpUHT3VaLZcRH6KZU1ceE02-0-d5e93d21784ef0b0e7994f733ebf58b8)
表4-3 成绩表(t_grade)
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/89_03.jpg?sign=1738900391-rNZ48wLEftkQz8IDZbXtZEWO4oYipDDj-0-5f534466ecce901af260895b8cfecee2)
表4-4 奖学金表(t_scholarship)
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/89_04.jpg?sign=1738900391-uQw6CuvMepZv9KpAb5G9jwgjQ0OnlV9s-0-3fbd258f2f3d3e7c80d6992c3ad202d2)
(1)利用PowerDesigner软件设计概念模型
概念模型也称为信息模型,以E-R图理论为基础,并对其进行了扩充。该模型是从用户的观点对信息进行建模,主要用于数据库的概念数据模型设计。利用PowerDesigner软件设计概念模型时,一般会经过创建实体,添加实体之间的关系两个阶段。
1)创建实体。创建实体的操作如下:
打开PowerDesigner软件,选择“File”→“New Model”命令,打开“New Model”对话框,在该对话框中选择“Conceptual Data Model”模型类型,同时设置“Model name”模型名称的信息,如图4-12所示。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/90_01.jpg?sign=1738900391-ycXvLBi14oy8eeTihNRsOpeqeyE9stbA-0-b15dae3e037a95f95eabf5a56503a2cd)
图4-12 选择设计概念数据模型选项
单击“OK”按钮,进入概念数据模型主界面,为了保证概念数据模型图能绘制到一个表格中,通过选择“View”→“Zoom In”命令,对图标窗口中的表格进行放大,如图4-13所示。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/90_02.jpg?sign=1738900391-MeYJNEFLxjrhTQ6gscp2pyniCUqn5SJk-0-7144dc931c5316b16cb0efc38435f3d4)
图4-13 在图表窗口中设置工作区
为便于查看,对中间的表格进行标注,方法是通过选择“Toolbox”面板中的Free Sym-bols中的“Text”工具按钮,对其标注为奖学金模块,如图4-14所示。如果没找到“Tool-box”面板,可以通过选择菜单View->Toolbox来调出Toolbox面板。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/91_01.jpg?sign=1738900391-MmDZUhCKzxqdOZoynAgdXl0uwmNiGIPX-0-e84ea213bfe5b60509404eba740970ea)
图4-14 利用Text工具进行标注
接着选择“Toolbox”中的“Entity”工具按钮,添加班级实体,如图4-15所示。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/91_03.jpg?sign=1738900391-WyTBZu9uBq6SLceReHx6qgZAeUCtzIKB-0-63f3962055a2a0c39b9a3426cc41af4b)
图4-15 添加班级实体
双击实体,弹出实体属性设置窗口。在“General”选项卡中设置用于标识实体名称的“Name”选项为“班级表”,设置用于标识实体代码的“Code”选项为“t_class”,设置用于对实体注释的“Comment”选项为“关于班级的表格”,如图4-16所示。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/91_04.jpg?sign=1738900391-MTkrz6n3F3kQVMb5EhrcOkzB1HXMLcfa-0-aa68001f6a7dc313a9bd6de4282d964e)
图4-16 “General”选项卡
切换到用来设置实体属性的“Attributes”选项卡,其中,“Name”字段用于标识字段名称,“Code”字段用于标识字段代码,“Data Type”字段、“Length”字段和“Precision”字段用于设置字段的类型。对班级表实体属性设置如图4-17所示。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/92_01.jpg?sign=1738900391-iYNxCOkDbq8VCVrZEmmWKyK9Yr6E5nVO-0-85d4544ab90ef2b4ba3439bf8755307c)
图4-17 “Attributes”选项卡
单击“确定”按钮,得到最终的关于班级的实体信息,如图4-18所示。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/92_02.jpg?sign=1738900391-WgNgDPF83MQ4mC4XlzwDZYTa4QlKtNWf-0-db441a8405aefca4849220cbad301cc9)
图4-18 最终的班级实体
下面以同样的方式设计“奖学金模块”中的学生、成绩、奖学金实体,如图4-19至图4-24所示。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/92_03.jpg?sign=1738900391-iVtln66A3gZyDSttYsGtUvGYxkfWVQZs-0-6bd3febc129b115f37fe89a1387a0ca0)
图4-19 学生实体普通属性
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/93_01.jpg?sign=1738900391-n9fEF0oZddK1pYTFqFE7OHR2YKj49Dyf-0-b0ef27aec512028b9bcefd81b914c850)
图4-20 学生实体所具有的属性
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/93_02.jpg?sign=1738900391-mD1IG4eQQ5r6TWeXJCeWfcUwa8BczKcY-0-95c775d1df3adef9a3d991e5d3d4ab82)
图4-21 成绩实体普通属性
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/93_03.jpg?sign=1738900391-wpUNMjsdbnkSCcz7J0AO6fo5OuGMxqOg-0-263ebc22f0248e43d478999528ca4bbf)
图4-22 成绩实体所具有的属性
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/93_04.jpg?sign=1738900391-D7xayxczJGXCBotwLyLFLClhBlD6GsX6-0-b1dcf822f39b967a4dd0b88175490f29)
图4-23 奖学金实体普通属性
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/94_01.jpg?sign=1738900391-7VKJkXY4xnmp1CuxbhaVcmT26zwvUUgg-0-74fed4b52729900174ec6fc5fa468ed0)
图4-24 奖学金实体所具有的属性
最终,关于奖学金模块的四个实体对象具体信息,如图4-25所示。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/94_02.jpg?sign=1738900391-5E6zhz7kiM54hJM5nVU3d4l34Yvg3vC3-0-3740862f4f5dadf9b92077f59cc9a4f8)
图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所示。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/95_01.jpg?sign=1738900391-ZOOE2lZwi0GzwExnaEoTJ0IPEpgM5qcy-0-c9aeeec92017a7444cb5fee1abeecf57)
图4-26 为班级实体和学生实体添加联系
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/95_02.jpg?sign=1738900391-5TPykckQVU3qO13aisaBwTE9DEyYrptm-0-a1697d1f9868ad3380437ff05c7e51b3)
图4-27 关系普通属性
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/95_03.jpg?sign=1738900391-VHEtiwldsEiG3tnvlFvUq9QaFBivjFVq-0-f0a7472f914240b14beee4cab1d10e59)
图4-28 设置实体之间的关系
单击“确定”按钮,就设置好了班级与学生实体之间的关系,如图4-29所示。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/95_04.jpg?sign=1738900391-bcI9T80ssigN9iMRxBTPLaEUvK5P70Cz-0-30f89865f684f59faec0415e984506f6)
图4-29 班级与学生实体之间的关系
以同样的方式创建并设置其他的实体之间的关系。学生实体与成绩实体是一对一关系(One-One),学生实体与奖学金实体是多对多关系(Many-Many),设置如图4-30至图4-33所示。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/96_01.jpg?sign=1738900391-R68BBYGAOpeKLZJR4jaRUIXUJj8xLt7L-0-d92ed6deee5dfe75dc4266bc623522b2)
图4-30 关系普通属性
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/96_02.jpg?sign=1738900391-k7ind66Hzh4LmZB8QrgUmsxQ3nO5F0Kv-0-014915e3c1a8e4c13f534441c6737efa)
图4-31 设置实体之间的关系
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/97_01.jpg?sign=1738900391-UYjyVxmXgnxjWwpCrWjpCj6D8UMDuD7F-0-0c8d7c610ee5d75a569b16af352b7c03)
图4-32 关系普通属性
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/97_02.jpg?sign=1738900391-gg5aw2ktwan0KcQZxkaUZvYFK8Ik1qpZ-0-4ef0fd399e9dc4a8fb586b08d7433df8)
图4-33 设置实体之间的关系
至此,关于奖学金模块的概念模型设计完成,如图4-34所示。
(2)利用PowerDesigner软件转换生成物理数据模型
物理数据模型,就是根据计算机系统的特点,为给定的概念数据模型确定合理的存储结构和存取方法。其中合理主要是指设计出的物理数据库占用的存储空间少,对数据库上数据的操作能有更高的效率。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/98_01.jpg?sign=1738900391-k5dYs6A1ljYhj6bamVLyyf7p5Edq0KDe-0-874e69bc4a7c1cd28d0767866a28b5e8)
图4-34 奖学金模块的概念模型
当概念数据模型设计完成后,选择“Tool”→“Gen-erate Physical Data Model”命令,弹出“PDM Generation Option”窗口,然后在该窗口中设置“DBMS”为“MySQL 5.0”,同时设置“Name”、“Code”都为“schol-arshipPDM”,如图4-35所示。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/98_02.jpg?sign=1738900391-BLHI43xVmomkavIClAowpbWneLO8NWEt-0-4edf2e6ca7e427e1ffe968c1672d9490)
图4-35 选择设计物理数据模型选项
单击“确定”按钮,在物理模型主界面中会根据概念模型,结合所给出的数据库管理系统设计出合理的表和表之间的关系,具体信息如图4-36所示。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/98_03.jpg?sign=1738900391-PNuTSX2C4DFbWG1wzGeXWY9BExju3PHu-0-fecda03a288b92b8aec728c03d9121de)
图4-36 奖学金模块的物理数据模型
至此,即完成了订单管理模块的物理数据模型。
(3)生成数据库创建脚本
生成物理数据模型后,就可以利用PowerDesigner软件将其转换为数据库脚本。打开物理数据模型scholarshipPDM,选择“Database”→“Generate Database”命令,打开图4-37所示的窗口,然后在窗口中设置数据库脚本的名称和位置。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/99_01.jpg?sign=1738900391-uoPSWnKNimnInacrbarPm35p298VBCGE-0-d7049ed7bd76660ee58863ba28cb3d8a)
图4-37 设置数据库的脚本信息
打开数据库脚本文件,具体内容如下:
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/99_02.jpg?sign=1738900391-vRCHSIVJ9fHx6wQneHktSebRkGfOUCuH-0-f576be988ea888a3474f17c57235419e)
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/100_01.jpg?sign=1738900391-M7DAztvL61c1p9PPcDWGrVAyOz5CKyQG-0-e10c0402ff3309fa24927facf9b3f825)
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/101_01.jpg?sign=1738900391-JA8KoMoZmCGhSm9RS8H2OyGoAGF1v3dv-0-727131d80cc407bb28a8c55313f4f6b2)
三、设计性实验
1.用PowerDesigner软件为在线图书销售系统中的订单管理模块设计数据库。
该模块的功能设计中有四个实体,具体信息如表4-5至表4-8所示。
表4-5 用户表(t_user)
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/101_02.jpg?sign=1738900391-wkA6FDyoOv3cM8mj7k8QCRDa8FJ5SuT9-0-44ba525b29f3b40ddd2245bf9d7db1fa)
表4-6 书籍表(t_book)
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/101_03.jpg?sign=1738900391-qwjvTOnRyaZJTqKm8BowXww7AgtRcfGy-0-a822da41d69dc65703d168df24f51d39)
表4-7 订单表(t_order)
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/102_01.jpg?sign=1738900391-GByM41O9Tv0jAmB9hurFI5YcJqNpsPIm-0-aeaa1cb4eba1c445e6ab66ddd2fe9aee)
表4-8 订单明细表(t_item)
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/102_02.jpg?sign=1738900391-CKIaHZZlIXtjQM8PRxtdmnyamONyrZwJ-0-88570064c4be2469e5842dc1606f267e)
1)利用PowerDesigner软件设计概念模型。
①创建实体。
②添加属性。
③设置每个实体的主码。
④添加实体之间的联系。
2)利用PowerDesigner软件转换成物理数据模型。
3)利用PowerDesigner软件生成创建数据库表的SQL脚本,并在MySQL中生成数据库。
2.根据图4-38所示的“交通违章处罚通知书”设计数据库。
图中显示一张交通违章处罚通知单,根据这张通知单所提供的信息,设计一个存储相关信息的E-R模型,并将E-R模型转换成关系数据模型,要求标注各关系模式的主键和外键(其中:一张违章通知书可能有多项处罚,例如,警告+罚款)。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/102_03.jpg?sign=1738900391-arbqKcrt6Uw1cmKMjy2uy69fZLjH3TyA-0-766e4431dd206d71ead58a3fc8768c04)
图4-38 交通违章处罚通知书
1)找出实体、实体的属性、实体的主码。
2)找出实体间的联系及联系类型。
3)用PowerDesigner画出E-R图。
4)选择MySQL作为DBMS,把E-R图转换成物理模型,根据日常生活中的情况合理设置数据类型,其中通知书编号长度请参照示例“TZ11719”,警察编号长度是三个字符。在MySQL中创建违章数据库(wzdb),并利用PowerDesigner生成所有的数据表。
3.根据提供的网页,设计数据库(另外上交打印的报告)。
下面所提供的网页是关于图书检索的。图4-39中下拉列表框中的数据要求从数据库中读取。根据图4-39中的检索条件,在图4-40中得到符合条件的图书列表。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/103_01.jpg?sign=1738900391-VKbAk6RFAfiv93b1pHp8DsaJrJhX74Ox-0-c8e57812d83fee22af72390cbe7b0d91)
图4-39 检索条件选择
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/103_02.jpg?sign=1738900391-vYHPbn8UF2pq2gLsYnj5413rwGXH8LyE-0-0d931f849ad752a687be5f0f7407dbee)
图4-40 图书列表
1)用PowerDesigner画出E-R图,要求包含网页中所需的所有属性,设置每个实体的主码。
2)选择MySQL作为DBMS,转换成物理模型,设置合理的数据类型。
3)生成建表SQL脚本,并在MySQL中创建readbook数据库,并生成相应数据表。
四、观察与思考
1)使用PowerDesigner将概念模型转换成物理模型后,实体、属性、联系有哪些变化?
2)PowerDesigner工具中的自动模型转换是否符合模型转换的理论规则?
3)尝试设计一个一对一的实体联系,看看PowerDesigner工具将如何处理。结合模型转换的理论规则,说说PowerDesigner工具这样处理是否妥当?你是否能想出更有创新的处理办法?