电商类应用
在本章节中,我们将构建一个用户在线上购买商品或者服务的应用,在应用中,用户可以浏览到不同分类的商品、查看商品的详细内容、评价,能够收藏商品,添加商品至购物车并生成订单结算,管理商品订单以及收货地址等 对于电商类应用,无论您销售什么,都会有公共和私人数据。例如,商品需要公开,因为用户必须能够搜索它们并将其添加到购物车中。但用户的购物历史记录必须仅对该用户以及商家可见。为此,我们将为数据表配置操作权限,通过权限配置来控制谁能够看到或者操作哪些数据。
常见的电商类应用数据模型设计
电商类应用的数据模型主要涉及用户、商品、购物车、订单这四张数据表,为了实现更多丰富的交互,还可以增加保存收藏记录、评论内容的数据表,为了完成商品的配送,还可以增加保存地址信息的数据表。
用户表
无论是什么应用,其使用者均为用户,在电商类应用中用户一般分为了购买者和管理者,购买者即在应用中购买商品或者服务的用户,管理者则是上传维护商品的用户。
- 如果您的应用中有会员制度,那么购买者又可以区分为普通和会员等角色
- 如果上传、维护商品时,某些操作只有特别定义的角色才可以操作,例如删除/下架商品只有超级管理员才可以才做,那么您的管理员又可以区分为普通管理员和超级管理员
常见字段
- ID:整数类型,内置默认字段;由于ID的自增且唯一的特性,用户表中的 ID 可以作为用户在整个应用逻辑中区分用户的唯一标识
- 创建时间:时间戳类型,内置默认字段;一般记录用户在完成注册后往用户表中添加这位用户数据的时间
- 修改时间:时间戳类型,内置默认字段;一般记录这条用户数据上次被修改跟新的时间
- 姓名:文本类型
- 电话号码:文本类型
- 角色:用户/管理员等,根据您的应用逻辑来定义
- 我的购物车:这是一个关系字段,是通过建立用户表与购物车表的一对多关系产生的,通过这个字段能够索引查看这个用户的购物车数据
- 我的订单:这是一个关系字段,是通过建立用户表与订单表的一对多关系产生的,通过这个字段能够索引查看这个用户的订单数据
- 我的收藏:这是一个关系字段,是通过建立用户表与商品表的一对多关系产生的,通过这个字段能够索引查看这个用户收藏的商品
- 我的评价:这是一个关系字段,是通过建立用户表与评价的一对多关系产生的,通过这个字段能够索引查看这个用户对不同订单的评价
- 其它可能配置的字段:性别、年龄、会员等级等
权限配置
在大多数的电商类应用中,我们一般不希望其他人能够看到自己的购物车或者订单记录,并且我们希望除了自己和管理员之外,其他人不能够修改我自己的隐私信息,如姓名、电话号码等。 常见的用户表权限配置,当查看者是用户自己时,则用户可以:
- 查看所有字段:是
- 修改姓名:是
- 修改电话号码:是
- 角色:否,这应该是由系统规则或者管理员来设置的,用户自己不能自行设置
- 我的购物车:是以此类推,用户可以编辑自己个性化的信息,而无法修改其他信息,当查看者是管理员时,则这位管理员可以查看用户所有信息,以及设置某个用户的角色为管理员等
商品表
在电商类应用中,用户所看到的商品信息一般都储存在一张商品表中,如商品名称、商品价格、商品描述等,您可以根据实际情况,添加尽可能多的字段来保存商品的详细信息;不仅如此,不方便让用户看到的比如商品进价、利润率等也都存储在同一张表中进行管理,我们只需要设置好对应角色的查看权限即可
常见字段
- 名称:文本类型
- 图片:图片类型
- 价格:无限精度小数类型
- 描述:文本类型
- 库存:整数类型
- 进价:无限精度小数类型
- 利润率:无限精度小数类型
- 商品分类ID:整数类型,这是一个关系字段,是通过建立商品分类表与商品表的一对多关系产生的,通过这个字段能够索引查看这个商品所属的类型
- 状态:文本类型,如上架中、已下架
权限配置
在电商类应用中,商品表中的数据对于用户来说仅是用来查看商品信息,除了在下单成功之后会扣减对应的商品库存之外,普通用户是不能够编辑修改商品信息的,但管理员可以上传、修改所有商品信息
购物车表
用户在浏览商品时,可以将商品添加至购物车之后统一进行结算操作,购物车表相当于是保存即将要购买的商品的临时数据表。通常购物车表会与用户表建立一对多关系,因为一个用户可以往购物车表里添加多条购物数据,,同理,购物车表也会与商品表建立一对多关系,因为同一个商品会被多个不同的用户购买,也会在购物车表中出现多次
常见字段
- 购买者ID/用户ID:整数类型,这是一个关系字段,是通过建立用户表与购物车表的一对多关系产生的,通过这个字段能够索引查看这个用户的基本信息
- 商品ID:整数类型,这是一个关系字段,是通过建立商品表与购物车表的一对多关系产生的,通过这个字段能够索引查看这个商品的基本信息
- 商品数量:整数类型,记录这个商品被添加的数量
权限配置
和用户表一样,购物车表的数据也非常的私密,只能被用户自己以及管理员查看以及修改。所以我们可以在权限管理中设置只有用户自己和管理员可以修改、查看用户的购物车数据。
订单表
在电商类应用中,订单表是用来记录用户成功购买商品之后的订单信息,一般包括购买者是谁,买了哪些商品,订单的支付状态、配送状态、收获信息等重要内容。由于一个订单可能会包含多个商品,所以一般还会建立一张订单详情表,订单表与订单详情表之间将建立一对多关系,用来记录这个订单所包含的商品有哪些。
常见字段
- 购买者ID:整数类型,这是一个关系字段,是通过建立用户表与订单表的一对多关系产生的,通过这个字段能够索引查看这个用户的基本信息
- 订单包含的商品:对象类型,这是一个关系字段,是通过建立订单表与订单详情表的一对多关系产生的,通过这个字段能够索引查看这个订单下包含了哪些商品
- 支付方式:文本类型,微信/支付宝等
- 支付状态:文本类型,支付成功/支付失败等
- 订单状态:文本类型,备货中/已发货/配送中/取消订单等
- 收货人姓名:文本类型
- 收货人联系方式:文本类型
- 收货人详细地址:文本类型
- 订单总价:无限精度小数类型
- 优惠价格:无限精度小数类型
- 是否使用优惠券:布尔类型
订单表权限配置
对于订单表来说,一方面订单数据比较私密,所以需要设置只能由订单所有者以及管理员能够查看或修改订单信息;另一方面,下单前后用户能够修改的信息也有所不同,下单之前,用户可以选择支付方式、收获信息,下单成功之后,用户就不能在修改支付方式了,所以再权限配置时也需要额外注意。