如何设计商城的数据库模型
让我们用一个简单的商城数据库的例子,来介绍DDM Cloud的使用方式吧。
首先我们先进行需求分析, 这个商城需要哪些功能,例如:
用户,商品,商品分类,购物车,订单等等.
用户: 用户名(用于登录),密码,登录时间
商品: 商品名称, 简介, 详细信息, 商品价格, 库存数量
商品分类: 分类名称
购物车: 购买的商品, 购买数量, 用户, 加入时间
订单: 商品集合, 价格, 数量, 支付情况, 用户, 订单生成时间和支付时间.
以上是我们最简单的商城系统所需要的内容啦。下面让我们使用DDMCloud来设计这个简单的商城系统的数据库模型。
下载客户端
软件下载页面:https://datamodeling.cn/#/main/download
创建并保存模型
要设计数据库模型,首先要在DDMCloud创建一个模型。下面以常见MySQL模型为例
创建后的模型如下所示
在属性中更改模型的名字为“商城”。然后按下Ctrl + S保存模型到模型库中
保存模型后,下次就可以直接在模型库中打开使用
数据库设计
模型创建完成后,让我们来进行表的设计。
表操作
用户
首先从用户表开始,用户表需要的字段为:用户名(username)、密码(password)、登录时间(last_login_time),此外,还需要一个主键字段,就使用MySQL自动增长类型吧。
大致的表结构设计好了,接下来我们就使用DDMCloud创建一个数据库表,直接上图
创建表
方式一:
方式二
首先,需要打开模型的数据视图,然后在开始功能区选择“实体/表“,最后在数据视图上绘制即可。
小技巧:在数据视图选择表后,按TAB键可以编辑表名、字段名和主键字段名
首先修改表名为user,然后添加相关的字段。
修改表名
创建字段
点击“确定“,基本的字段就创建完成了。
创建索引
有些字段查询的频率可能较高,我们可以创建索引来加快查询速度。MySQL常用的索引一般有主键索引、唯一索引、非唯一索引等。
例如username字段,经常需要通过用户名来查询用户的信息,而且不会重复。我们可以给username添加一个唯一索引来加快查询速度,操作如下:
可以看到,索引编辑器中显示已存在一个主键索引,这是因为上一步勾选了id为主键时,自动创建的。现在我们想要给username添加一个唯一索引,可以这样操作
现在,User表创建已经完成。
商品和商品分类
商品: 商品名称, 简介, 详细信息, 商品价格, 库存数量
商品分类: 分类名称
基于上方的信息描述,可以设计出以下数据库表:
商品(commodity) :
ID(id)、商品名(name)、简介(introduction)、价格(price)、库存(stock)、商品分类ID(category_id)
商品详细(commodity_detail): 商品ID(commondity_id)、描述(description)
商品分类(commodity_category): ID(id)、分类名字(name)
为了简单起见,我们这里统一使用MySQL的自增长类型作为表的主键。
商品的详细描述信息的体积可能会比较的大,但大多数情况的查询是不需要找到商品的详细描述的,所以我们把商品的详细分离出单个表,这样有助于提高查询效率。
首先,需要创建这3个表并设置好字段等基本信息。具体方式在上文中已描述,在此不再过多的赘述。
好了,现在我们的商城系统中已经有以下几个表:
感觉少了点什么 ??
没错,是关系!!!关系型数据库怎么能没有关系呢?
让我们把表都刚刚创建的表关联起来。
比如说,要创建表commodity和commodity_detail的关系。这两个表中commodity对与commodity_detail是一对多的关系,commodity的id字段要和commodity_detail的commodity_id字段相对应起来。
首先,先在“数据模型”窗口找到“关系”,然后点“新建“ …… 算了,还是直接上图吧:
完成创建后,这数据视图就可以看到他俩的关系啦。
好了,让我们用同样的方式创建commodity和commodity_category的关系.
到现在为止,商品的基本关系就已经创建好了,让我们进入下一个阶段。
购物车和订单
购物车: 购买的商品, 购买数量, 用户, 加入时间
订单: 商品集合, 价格, 数量, 支付情况, 用户, 订单生成时间和支付时间.
老规矩,还是先设计一下数据库表
购物车(cart):ID(id)、用户ID(user_Id)、商品ID(commondity_id)、购买的数量(quantity)、加入时间(join_time)
订单(order):
ID(id)、用户ID(user_id)、支付情况(payout_status)、订单生成时间(create_time)、订单支付时间(payment_time)
订单商品项(order_item):
ID(id)、订单ID(order_id)、商品ID(commondity_id)、购买的数量(quantity)
首先来分析一下购物车。一个用户的购物车中可以包含多个条目,而这每个条目需要包含购买的商品、购买的数量、加入购物车的时间这些信息的。所以我们可以创建一个购物车表来存储这些条目。
为了让每个用户都有一个独立的购物车,我们还需要给这个条目该条目属于哪个用户的信息。所以用户表和购物车表是个一对多的关系。
然后在再来看订单。
价格、支付情况、订单生成时间、订单支付时间,这些都可以作为表的普通字段。
但是,订单中需要包含购买商品的集合。也就是说,一个订单可以对应与多个商品,一个商品又可以对应与多个订单,订单和商品是一个多对多的关系。
完成表的设计后,我们先把表创建出来。现在我们的模型如下
然后来处理一下关系
cart和user
cart和commodity
order和user
order和order_item
order_item和commodity
关系太多,很乱?
别急,这时候打开你的数据视图就会发现表之间的关系一目了然。
好了,现在商城的数据库模型就设计好了。
将设计好的模型导入MySQL数据库
现在数据库设计好了,那么如何把他保存到数据库中呢?很简单,只需3步。
第一步
第二步 生成DDL脚本
第三步 在数据库中执行脚本,完成