![数据库系统原理及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=1738860665-kqtThXYz4KtQlPTklQnxkOJ7xYBlruNz-0-2ae49da50b349719ff36a7bc5a73fb82)
表4-2 学生表(t_stu)
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/89_02.jpg?sign=1738860665-efgHQ5XYKJ93CeYb7JH0PBPUaYWxXdWS-0-0c128a59c666e96fbfa2e53649d71e77)
表4-3 成绩表(t_grade)
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/89_03.jpg?sign=1738860665-GZx6pFTXXULBeJZtSZnjIwf5VkxTb1ty-0-5d71806df9dc5fa7e29206d2ab07aa83)
表4-4 奖学金表(t_scholarship)
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/89_04.jpg?sign=1738860665-LKQOCVf9yNpBYTN3fZJehHbDSdkXndYm-0-d7d1ed3a9d0ccb956f968f234453c9b5)
(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=1738860665-Yl66vSd9KM0uhlvvHYu2bEvKZK2JQHhV-0-1f1a0400011cec016e215c4ba5d05819)
图4-12 选择设计概念数据模型选项
单击“OK”按钮,进入概念数据模型主界面,为了保证概念数据模型图能绘制到一个表格中,通过选择“View”→“Zoom In”命令,对图标窗口中的表格进行放大,如图4-13所示。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/90_02.jpg?sign=1738860665-LudeKcZ6fxm0sh859WyOoRk6DDEMQrW7-0-15593d1e4408ceae914f10bca92a16db)
图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=1738860665-nJgC2V9m4QxkV5EzobjPhmF0OBSn4k4P-0-95c760e337a8e0ee444d6c6a34ec202b)
图4-14 利用Text工具进行标注
接着选择“Toolbox”中的“Entity”工具按钮,添加班级实体,如图4-15所示。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/91_03.jpg?sign=1738860665-AdXnob5b6UPCmv5xqLfkJIRovYBY0cSG-0-a8b5ea61a98bd41c0c4ce13f6dcf063f)
图4-15 添加班级实体
双击实体,弹出实体属性设置窗口。在“General”选项卡中设置用于标识实体名称的“Name”选项为“班级表”,设置用于标识实体代码的“Code”选项为“t_class”,设置用于对实体注释的“Comment”选项为“关于班级的表格”,如图4-16所示。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/91_04.jpg?sign=1738860665-AgTh8KyBZb61DGkwCWClruoEnjWPemEm-0-3cd7dd1b0f72a542adc03c86fc5e537d)
图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=1738860665-Ygao8ON1e8logdVUJEfgp4LRp9RHXAoV-0-e02454adfa8bad18a3d00ef2b39c7b51)
图4-17 “Attributes”选项卡
单击“确定”按钮,得到最终的关于班级的实体信息,如图4-18所示。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/92_02.jpg?sign=1738860665-jlEMJVjOgEjk5wpO42W01KA5gTfcDNMb-0-7d6435435bb3ab56b59eaaf3798fbc66)
图4-18 最终的班级实体
下面以同样的方式设计“奖学金模块”中的学生、成绩、奖学金实体,如图4-19至图4-24所示。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/92_03.jpg?sign=1738860665-qurA7EzY7ObgUowBywsfpc2bMqd9OyE5-0-1bbd991626124b2f45097dcacc9472b7)
图4-19 学生实体普通属性
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/93_01.jpg?sign=1738860665-XV8SBROqmXbXQuuodWMPBydnCe29qbuN-0-90588a4f4d1c3b25c699dae3486f2ee5)
图4-20 学生实体所具有的属性
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/93_02.jpg?sign=1738860665-4um6t3lYVO5z49UenF9kPWWEspV9X8A7-0-11f1fda05a2579fe8ede7d4f303c939a)
图4-21 成绩实体普通属性
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/93_03.jpg?sign=1738860665-MvP4w7IspfQUpy5Hajc03lBcgub2JLMT-0-b71837802937fac97a4571be6fa52254)
图4-22 成绩实体所具有的属性
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/93_04.jpg?sign=1738860665-Rh4umVlQz2kACAjxA7SnVRkivJLm2CHi-0-8c0c810dd0bad3945c2514fada6cd345)
图4-23 奖学金实体普通属性
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/94_01.jpg?sign=1738860665-Z9NOVncoPC8Rj6HX2nmuheuMvQQVEPc0-0-fabf31527591b7fcee15fdeea4588843)
图4-24 奖学金实体所具有的属性
最终,关于奖学金模块的四个实体对象具体信息,如图4-25所示。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/94_02.jpg?sign=1738860665-6XXzAu3e1cRNkisrgQcpr1lNWQzwTi7b-0-9d3ee3be426bf8029d5f82a88438f792)
图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=1738860665-cxovfmxi4ZwYOUsjabB6tBf8FBtn2Sv5-0-5d351d4ececff58f406af91991e4bb66)
图4-26 为班级实体和学生实体添加联系
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/95_02.jpg?sign=1738860665-EXXWIKDfkNfsYWlDx1IymAeMf1QgNVmy-0-a51b5e8b4c39397dfbe51925d020bd77)
图4-27 关系普通属性
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/95_03.jpg?sign=1738860665-ufk65QAor7fS02X0ZYAqwaIaERUmuvjp-0-f572e9c5c87ebca9496ad93462acc277)
图4-28 设置实体之间的关系
单击“确定”按钮,就设置好了班级与学生实体之间的关系,如图4-29所示。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/95_04.jpg?sign=1738860665-mQ5PjIQvjSv27mfQfRXkvvo4jiEkzFzy-0-cfdf5dc727e1ed75bdd6be28ee675a80)
图4-29 班级与学生实体之间的关系
以同样的方式创建并设置其他的实体之间的关系。学生实体与成绩实体是一对一关系(One-One),学生实体与奖学金实体是多对多关系(Many-Many),设置如图4-30至图4-33所示。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/96_01.jpg?sign=1738860665-OcTcvBeb7QXzVUiZ7XenXBKweQVhiokP-0-2474a96f7128f1b7a8a88661485b573d)
图4-30 关系普通属性
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/96_02.jpg?sign=1738860665-rQi4ERBXIXZKnE2OWfnluKTNy36ZtZea-0-c53f047276eaacb31308fb78f1cb035c)
图4-31 设置实体之间的关系
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/97_01.jpg?sign=1738860665-2E94DbfmiDMEvv6Cjtzgg9bYF7E1oPgt-0-fdcb8f751d696f05a35945e3ce01adca)
图4-32 关系普通属性
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/97_02.jpg?sign=1738860665-12OsT4Jdxr9VmxreXDZDQXQ4HLjNtQ8Q-0-3b76bcbc76b8b2a26984d8860bac9c2b)
图4-33 设置实体之间的关系
至此,关于奖学金模块的概念模型设计完成,如图4-34所示。
(2)利用PowerDesigner软件转换生成物理数据模型
物理数据模型,就是根据计算机系统的特点,为给定的概念数据模型确定合理的存储结构和存取方法。其中合理主要是指设计出的物理数据库占用的存储空间少,对数据库上数据的操作能有更高的效率。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/98_01.jpg?sign=1738860665-hP2RQlfeL5wnoZINF6jynKR8qb63zVl4-0-639785d2300f0bee88e0f7cb67449cb1)
图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=1738860665-l7CigylH0YxDNvJH3ZIsWRH9n8UBUsKF-0-fb4e8a5bd69dd89a31735807e60f234a)
图4-35 选择设计物理数据模型选项
单击“确定”按钮,在物理模型主界面中会根据概念模型,结合所给出的数据库管理系统设计出合理的表和表之间的关系,具体信息如图4-36所示。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/98_03.jpg?sign=1738860665-LQhdTycNUQPncIsPe1xexDpey36lNGcs-0-7e182595e33c1cd2d40a9f8c456438b0)
图4-36 奖学金模块的物理数据模型
至此,即完成了订单管理模块的物理数据模型。
(3)生成数据库创建脚本
生成物理数据模型后,就可以利用PowerDesigner软件将其转换为数据库脚本。打开物理数据模型scholarshipPDM,选择“Database”→“Generate Database”命令,打开图4-37所示的窗口,然后在窗口中设置数据库脚本的名称和位置。
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/99_01.jpg?sign=1738860665-0na2ZWuZZKzvzQj3Tmw8hDfRlMtIFAwH-0-3e9b61ae47a324145e296b18f96b82c3)
图4-37 设置数据库的脚本信息
打开数据库脚本文件,具体内容如下:
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/99_02.jpg?sign=1738860665-dJaI4dY1vaK94GmhvTnf9M2JNiXE4cIO-0-ae4d9bb44eabc8425a0101e617666a12)
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/100_01.jpg?sign=1738860665-iuNhnuebST0hHuvGRF7lKdQIbOc8Enyb-0-b26b48193034398c7be6db00e8955a36)
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/101_01.jpg?sign=1738860665-27CCblteQ8miqQPmVgrI1NujvM2dDCFx-0-a446d68df48263120ac09a51fd604fcc)
三、设计性实验
1.用PowerDesigner软件为在线图书销售系统中的订单管理模块设计数据库。
该模块的功能设计中有四个实体,具体信息如表4-5至表4-8所示。
表4-5 用户表(t_user)
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/101_02.jpg?sign=1738860665-T6fM7gdhAk1kKdWhLaISsHgfVSBDA05K-0-9fe321d69f01450ba792aa6400b0fc3e)
表4-6 书籍表(t_book)
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/101_03.jpg?sign=1738860665-HOBNQ4wHZLxEyOAQ2Frl5yefBkwJPrX0-0-f546d4b5807a8d176c1fc39d308b4736)
表4-7 订单表(t_order)
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/102_01.jpg?sign=1738860665-LCynm13QNe1CxXSHmTmCU7Qg9387R3JI-0-14ca9055e04c703558220e9ca7400dd3)
表4-8 订单明细表(t_item)
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/102_02.jpg?sign=1738860665-YpUWRsTVHMdBvb9Z4veJywyXcjTSfviK-0-9c257ecfbe335029dcd26e0caf591c17)
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=1738860665-TUBicNC2BpXRLpCjTeTVs7rmyPBe2oLb-0-4ff9273b21676188b7c2e60d5220b44c)
图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=1738860665-ov4Ol59HKaKFtPd4J8kGfp17RRpuKdOW-0-61655e9e0da81f763b2ea2e306b3e473)
图4-39 检索条件选择
![](https://epubservercos.yuewen.com/5AEB1B/18123624201956406/epubprivate/OEBPS/Images/103_02.jpg?sign=1738860665-S5I68TVj9Z8AzlGdEHUaZWvIrGU4Myex-0-b7184cc60c5b3563093ef4eec90822b2)
图4-40 图书列表
1)用PowerDesigner画出E-R图,要求包含网页中所需的所有属性,设置每个实体的主码。
2)选择MySQL作为DBMS,转换成物理模型,设置合理的数据类型。
3)生成建表SQL脚本,并在MySQL中创建readbook数据库,并生成相应数据表。
四、观察与思考
1)使用PowerDesigner将概念模型转换成物理模型后,实体、属性、联系有哪些变化?
2)PowerDesigner工具中的自动模型转换是否符合模型转换的理论规则?
3)尝试设计一个一对一的实体联系,看看PowerDesigner工具将如何处理。结合模型转换的理论规则,说说PowerDesigner工具这样处理是否妥当?你是否能想出更有创新的处理办法?