前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >谷粒商城08:PowerDesigner数据库设计极速入门

谷粒商城08:PowerDesigner数据库设计极速入门

原创
作者头像
半旧518
发布2025-02-28 15:32:04
发布2025-02-28 15:32:04
2260
举报
文章被收录于专栏:谷粒商城【重构版】

谷粒商城08:PowerDesigner数据库设计极速入门

前言:这个系列将使用最前沿的cursor作为辅助编程工具,来快速开发一些基础的编程项目。目的是为了在真实项目中,帮助初级程序员快速进阶,以最快的速度,效率,快速进阶到中高阶程序员。

本项目将基于谷粒商城项目,并且对谷粒商城项目进行二次重构,使其满足最新的主流技术栈要求。

上一篇文章我们对git进行了系统的介绍,这一篇文章,我们搭建项目,介绍数据库的设计工具powerdesigner,数据库的设计方法,进行数据库的设计实战。这一篇,补全了视频没有讲的内容,绝对超值。

1、搭建项目

上一篇文章我们已经完成远程仓库的密钥配置。先测试下github/gitee的远程代码库已经成功连接。输出命令,看到如下提示即可。

代码语言:shell
复制
半旧@banjiu MINGW64 ~
$ ssh -T git@gitee.com
Hi banjiu(@banjiu518)! You've successfully authenticated, but GITEE.COM does not provide shell access.

如果你配置的是github的ssh密钥,命令为:$ ssh -T git@github.com。

在gitee上新建一个远程仓库。注意,图中gulimall我拼写错了,请你自行修改正确。

image-20250226170903513
image-20250226170903513

在IDEA中,从远端版本库新建项目

image-20250226165021419
image-20250226165021419

复制下远端仓库的url。

image-20250226171117664
image-20250226171117664

项目建好,创建微服务。

image-20250226172841891
image-20250226172841891

导入必要的依赖,这是web项目,导入spring web。另外微服务之间进行HTTP通信要用到OpenFeign。

image-20250226173046945
image-20250226173046945

如法炮制,创建其它微服务。

image-20250227140538122
image-20250227140538122

gulimall父项目下,新建pom文件。

代码语言:xml
复制
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.banjiu</groupId>
	<artifactId>gulimall</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>gulimail</name>
	<description>gulimall聚合服务</description>
	<packaging>pom</packaging>

	<modules>
			<module>gulimall-coupon</module>
			<module>gulimall-product</module>
			<module>gulimall-ware</module>
			<module>gulimall-order</module>
			<module>gulimall-member</module>
	</modules>

</project>

reload maven project。

image-20250227140706198
image-20250227140706198

更新下.gitignore文件。

代码语言:.gitignore
复制
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
.mvn/wrapper/maven-wrapper.jar

**/mvnw
**/mvnw.cmd

**/.mvn
**/target/

.idea
**/.gitignore
**/.gitattributes

确认下。

image-20250227142427674
image-20250227142427674

全部选择,右键将剩下的文件纳入版本控制。

image-20250227143041048
image-20250227143041048

装一个Gitee插件。

image-20250227142800209
image-20250227142800209

提交并push

image-20250227143418563
image-20250227143418563

在远程库里就可以看到我们提交的代码咯

image-20250227143819390
image-20250227143819390

2、PowerDesigner的下载

image-20250227161329426
image-20250227161329426

你可以去官网下载。

https://www.powerdesigner.biz/EN/powerdesigner-resources/trial-download-167.html

image-20250227153320182
image-20250227153320182

这里还给你提供一个快速的免费PJ版链接:https://onlinedown.rbread04.cn/huajunsafe/powerdesigner1029.zip

解压后,一路傻瓜式安装。在这里全部勾选就ok。

image-20250227154023916
image-20250227154023916

为了方便学习,PJ下。将这个文件复制到PD的安装目录即可。

image-20250227161822546
image-20250227161822546
image-20250227162006887
image-20250227162006887

OK啦。

image-20250227162140794
image-20250227162140794

3、数据库模型设计方法

3.1 概念模型:就像画草图

想象你要盖一栋房子,第一步不是直接施工,而是先画个草图

  • 概念模型就是这个草图,只关心“房子有几个房间?厨房和客厅怎么连?要不要阳台?”
  • 对应数据库:比如设计一个“用户管理系统”,你只需要知道有“用户”、“订单”、“商品”这些东西,以及它们之间的大致关系(比如用户可以有多个订单)。
  • 工具:类似用白板画几个框框和连线,不需要考虑具体怎么实现。

总结:概念模型就是“想清楚要做什么,不关心怎么做”。

image-20250227164823791
image-20250227164823791

3.2 逻辑模型:画详细的施工图

草图确定后,接下来要画详细的施工图纸,标出每个房间的尺寸、门窗位置、水电走线。

  • 逻辑模型就是这个施工图,开始细化细节:
    • 比如“用户”需要哪些信息?(姓名、电话、地址)
    • “订单”和“商品”怎么关联?(一个订单可以包含多个商品)
    • 是否要避免重复数据?(比如用户地址不能重复存两遍)
  • 对应数据库:设计具体的表结构(比如用户表、订单表),定义字段(列)和关系(外键)。

总结:逻辑模型是“明确细节,但还不关心用水泥还是砖头”。

image-20250227164852923
image-20250227164852923

3.3 物理模型:实际施工

施工图纸完成后,工人要根据图纸实际盖房子,选择材料(砖头还是木头)、确定水管粗细、地板用什么材质。

  • 物理模型就是实际施工:
    • 比如用MySQL还是Oracle?
    • 用户表的“姓名”字段用VARCHAR(50)还是TEXT?
    • 要不要给“订单表”加索引加快查询速度?
  • 对应数据库:生成具体的SQL代码,创建表、索引、分配存储空间。

总结:物理模型是“具体怎么实现,落地到代码和硬件”。

image-20250227164930174
image-20250227164930174
image-20250227164952360
image-20250227164952360

3.5 为什么分三层?

  • 沟通方便:概念模型让业务人员(比如老板)和技术人员(程序员)用同一套语言讨论需求。
  • 逐步细化:先想大局,再抠细节,避免一开始被技术问题搞晕。
  • 灵活调整:如果老板突然说“加一个图书分类功能”,先在概念模型里改,不影响底层实现。

总结成一句话

数据库设计模型就像盖房子:

  1. 概念模型——画草图(确定要什么),
  2. 逻辑模型——画施工图(明确细节),
  3. 物理模型——实际盖房子(用代码和工具实现)。

3、PD搭建概念模型

上面已经介绍了数据库的模型设计的理论,是很规范的做法。下面主要为了介绍工具使用,对三层设计过程没有很严格的遵守,区分。请读者知悉。

新建模型。

image-20250227162225711
image-20250227162225711

选择概念模型。

image-20250227162554620
image-20250227162554620

将下图部分改下名,改为MySchool。

image-20250227162841899
image-20250227162841899

新建实体。

image-20250227165333732
image-20250227165333732

点小箭头,将实体微调拖动到好看的位置。

image-20250227165458510
image-20250227165458510

右击实体1,修改具体的信息。

image-20250227170626672
image-20250227170626672
image-20250227171727906
image-20250227171727906

最后三个实体设计完了。

image-20250227172017561
image-20250227172017561

接下来创建实体之间的关系。

image-20250227172040389
image-20250227172040389

学生和老师的关系是多对多。

image-20250227172419537
image-20250227172419537
image-20250227172524202
image-20250227172524202

学生和班级是多对一。

image-20250227172843538
image-20250227172843538

最后效果如图所示。

image-20250227173003626
image-20250227173003626

保存工作空间。

image-20250228132154681
image-20250228132154681

4、PD绘制物理模型

新建物理模型。

image-20250228132353118
image-20250228132353118

先绘制三个实体。

image-20250228132945707
image-20250228132945707

绘制关系。会自动生成外键,比如学生信息表,会多一个班级编号。由于学生和老师是多对多的关系,需要新增学生和老师的关系表。

image-20250228133640831
image-20250228133640831

5、概念模型和物理模型的转换

上面绘制了概念模型,再单独绘制物理模型的方法,是不是很麻烦。这节我们介绍概念模型与物理模型的转换。

5.1 将概念模型转换为物理模型

image-20250228133933510
image-20250228133933510

5.2 将物理模型转换为概念模型

image-20250228134120942
image-20250228134120942

5.3 将物理模型图转换为数据库脚本

image-20250228135249981
image-20250228135249981

是不是很牛

image-20250228135450785
image-20250228135450785

6、PD反向工程生成数据库模型

同样的道理,有sql的脚本,也可以反向生成数据库的模型。这对你理解开源项目的源码,架构很有帮助。

image-20250228135752247
image-20250228135752247

7、谷粒商城的数据库设计

这里先直接给你我们的sql文件。你就不用在画设计图了,我们直接用pd逆向,然后你理解下。

https://gitee.com/lemon_wan/gulimall/tree/dev/sql%E8%84%9A%E6%9C%AC

比如这是管理员相关的数据库表格。
image-20250228142059777
image-20250228142059777

接下来,我们连接上我们的数据库,再执行下所有的sql脚本。

我这里使用的是navicat。

先新建连接。

image-20250228150750104
image-20250228150750104

新建数据库。

image-20250228150402635
image-20250228150402635

如法炮制。

image-20250228150716746
image-20250228150716746

挨个执行sql文件。

image-20250228151037127
image-20250228151037127

刷新

image-20250228151059951
image-20250228151059951

表就都建好了。

image-20250228151203075
image-20250228151203075

如法炮制。

image-20250228151539582
image-20250228151539582

好了,这届我们就介绍到这里

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 谷粒商城08:PowerDesigner数据库设计极速入门
    • 1、搭建项目
    • 2、PowerDesigner的下载
    • 3、数据库模型设计方法
      • 3.1 概念模型:就像画草图
      • 3.2 逻辑模型:画详细的施工图
      • 3.3 物理模型:实际施工
      • 3.5 为什么分三层?
    • 3、PD搭建概念模型
    • 4、PD绘制物理模型
    • 5、概念模型和物理模型的转换
      • 5.1 将概念模型转换为物理模型
      • 5.2 将物理模型转换为概念模型
      • 5.3 将物理模型图转换为数据库脚本
    • 6、PD反向工程生成数据库模型
    • 7、谷粒商城的数据库设计
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档