数据库设计心得——微信销售小程序

我们团队项目是微图书销售小程序,根据需求一共设计了12个表和两个视图(cart_view,order_detail_view)。

小组:3班6组

我们小团队在设计数据库所花花时间一共是两周,从设计到完成导入数据进行测试。

在设计这个数据库过程有挺多挫折的,首先就是需求的变化,在每一次见指导老师都会有需求的变化,导致数据库之前设计出的版本继续修改,但是这样我们团队在设计数据库过程中学会了考虑需求变化而对数据库进行可拓展的设计。

接下来讲一下我们的数据库:

一共 12个表:

分别是用户信息表,收货地址表,用户收藏表,购物车表,店铺信息表,图书基本信息表,图书类型表,图书详情与图书类型关系表,图书评价表,订单表,订单明细表,消息队列表

  1. 用户信息表:

实体描述:

实体编号

实体名称

实体命名

01

用户表

user_table

实体说明

用户的基本信息

用户实体属性列表

属性名

类型

是否

主键

是否外键

可否

为空

默认值

说明

备注

user_id

varchar(30)

用户id

为用户在微信小程序中的openid,唯一标识用户

store_id

int

店铺id

当用户为卖家时该值指向用户的店铺

birthday

date

生日

用户的出生日期

sex

char(1)

性别

用户的性别

user_type

int

0

用户类型

设定了四种用户类型,对应0-3

phone

varchar(11)

电话号码

用户的电话号码

vip_level

int

0

vip等级

用户的vip等级

consumption

double

0

消费总计

用户从注册到目前消费的总额

单一个 用户信息表可以实现用户登录和用户基本信息修改功能,用户登录时候获取他的user_id,这个user_id将作为小程序端的全局变量,在以后的交互过程中经常调用。比如修改用户基本信息。这时候需要用到该表的birthatsexphone字段,用户的操作会影响这些字段的更新。其次,user_type字段是我们考虑到,二期迭代开发每个用户可以有其他用户模式,比如图书管理模式,就是商家,或者是高级管理员模式,亦或是同时是商家也是高级管理员模式(这3种用户本身也有普通用户模式),商家和高级管理员模式可以行使不同的功能,比如商家可以拥有自己的店铺,就是表中的store_id,而高级管理员是对软件的维护。而表中的consumption是记录用户消费金额,这个会影响用户的Vip_level

2.收货地址表:

实体描述:

实体编号

实体名称

实体命名

01

address_table

address_table

实体说明

用户收货地址表

收货地址实体属性列表

属性名

类型

是否

主键

是否外键

可否

为空

默认值

说明

备注

address_id

int

地址编号

唯一标识地址信息

user_id

varchar(30)

用户编号

用户编号

phone

varchar(11)

手机号码

收货人电话

recevier

varchar(30)

收货人姓名

收货人的姓名

receiver_address

Varchar(100)

收货人地址

收货人地址

收货地址表与用户信息表关联,外键user_id确定是哪个用户,然后找到该用户的具体收货地址,这个表可以实现用户对自己收货地址的增删改查的操作

3.用户收藏表:

实体描述:

实体编号

实体名称

实体命名

02

collect_table

collect_table

实体说明

用户收藏书籍或者店铺表

用户收藏实体属性列表

属性名

类型

是否

主键

是否外键

可否

为空

默认值

说明

备注

collect_id 

int

收藏编号

收藏信息唯一标识符

user_id

varchar(30)

用户编号

用户唯一标识符

object

int

收藏物品

收藏物品

collect_type

int

收藏类型

收藏的类型

主键是collect_id,外键是user_id,与用户信息表关联,可以实现用户对自己收藏的增删改查操作,同时collect_type是区分用户收藏的是书籍还是店铺,object就是书籍或店铺的id

4.购物车表:

实体描述:

实体编号

实体名称

实体命名

02

购物车表

shopping_cart

实体说明

购物车信息

购物车实体属性列表

属性名

类型

是否

主键

是否外键

可否

为空

默认值

说明

备注

book_id

int

图书id

唯一标识图书信息的符号

user_id 

varchar(30)

用户id

唯一标识用户信息的符号

number

int

图书数量

记录购物车中每一种图书的数量

购物车表相对简单,通过user_idbook_id找到用户购物车中的商品数量和信息

5.店铺信息表:

实体描述:

实体编号

实体名称

实体命名

02

店铺表

store_table

实体说明

店铺的基本信息

店铺实体属性列表

属性名

类型

是否

主键

是否外键

可否

为空

默认值

说明

备注

store_id

int

店铺id

用于唯一标识店铺的id,设定了自增

store_name

varchar(30)

店铺名称

注册店铺时设置的店铺名称

description

varchar(200)

店铺描述

注册店铺时设置的店铺描述

create_time

date

店铺注册时间

注册店铺时的时间

star_level

int

1

店铺星级

表示店铺质量的店铺星级

店铺信息表store_id是主键,和用户信息表里面的store_id联系起来,可以知道店铺的拥有者,其他字段即为店铺基本信息

6、图书基本信息表:

实体描述:

实体编号

实体名称

实体命名

01

图书基本信息表

Book_table

实体说明

图书基本信息

 图书实体属性列表

属性名

类型

是否

主键

是否外键

可否

为空

默认值

说明

备注

book_id

int

自增

唯一标识图书的符号

store_id

int

店铺id

店铺id

book_name

varchar(40)

图书名

图书名

book_description

varchar(2000)

图书文字描述

图书文字描述

picture_description

varchar(100)

图片描述

图片描述

inventory

int

库存

库存

book_author

varchar(50)

图书作者

图书作者

book_press

varchar(40)

图书出版社

图书出版社

price

int

价格

价格

cover

varcher(100)

封面

封面

Book_id唯一标识一本书,考虑到不同的店铺可以卖同一本书,然后对该书的其他信息描述不同(比如店家介绍,优惠价格),所以同一本书也可以有不同的book_idinventory这个库存信息是我们用来考虑给图书库存加阈值时用到的字段,阈值是多少由后台确定

7、图书类型表

实体描述:

实体编号

实体名称

实体命名

02

图书类型表

Book_type

实体说明

图书类型信息

图书类型实体属性列表

属性名

类型

是否

主键

是否外键

可否

为空

默认值

说明

备注

type_id 

int

自动编号

图书类型唯一标识符

type

varchar(20)

图书类型

单独设计一个图书类型表,考虑到第23范式,如果出现某一类书只有一种书如果下架该书籍,那个类别就会消失的问题,所以开设这样一个表

8、图书详情与图书类型关系表

实体描述:

实体编号

实体名称

实体命名

03

btrelation_table

btrelation_table

实体说明

图书详情和图书类型的关系表

图书详情与图书类型关系实体属性列表

属性名

类型

是否

主键

是否外键

可否

为空

默认值

说明

备注

book_id

int

图书编号

图书唯一标识符

type_id

int 

类型编号

类型唯一标识符

将图书详情表和图书类型表关联起来的一个表

9、图书评价表:

实体描述:

实体编号

实体名称

实体命名

01

图书评价表

evaluation_table

实体说明

图书的评价信息

图书评价实体属性列表

属性名

类型

是否

主键

是否外键

可否

为空

默认值

说明

备注

user_id

varchar(30)

用户id

唯一标识用户信息的符号

book_id

int

图书id

唯一标识图书信息的符号

content

varchar(200)

评价内容

评价内容详细信息

图书评价表,主键是user_idbook_id,这个评价不管是哪个用户登录查看某本书评价,都会看到某个用户对该书的评价,例如淘宝

10、订单表

实体描述:

实体编号

实体名称

实体命名

02

订单表

order_table

实体说明

订单信息

订单实体属性列表

属性名

类型

是否

主键

是否外键

可否

为空

默认值

说明

备注

order_id

int

订单号

订单信息唯一标识符

user_id 

varchar(30)

用户id

用户信息唯一标识符

address

varcher(100)

收货地址

收货地址信息

phone

varcher(11)

收货人手机号码

收货人手机号码信息

receiver

varcher(30)

收货人姓名

收货人姓名信息

order_time

date

 

下单时间

下单时间信息

order_state

varchar(10)

订单状态

订单状态

订单详情表根据外键user_id和用户信息表关联,用户可以查看自己的具体订单信息,也可以对订单进行增删改查,可以修改order_state,即订单状态(待付款之类的),也可以修改收货地址,手机等信息(但是具体能不能修改要看订单状态,这就是具体逻辑了,已发货肯定不能再改了)

11、订单明细表

实体描述:

实体编号

实体名称

实体命名

03

订单明细表

orderdetail_table

实体说明

订单详情信息

订单明细实体属性列表

属性名

类型

是否

主键

是否外键

可否

为空

默认值

说明

备注

book_id

int

图书标号

图书信息唯一标识符

order_id

int

订单编号

订单信息唯一标识符

book_count

int

订单中当前图书数量

book_totalprice

double

订单中本图书总价格

订单明细表就是看订单里面具体商品的信息,通过book_idorder_id看到具体的订单里面的商品信息(同一个订单里面可以有不同的书,所以这两个字段一起作为主键),然后ordder_id作为外键和订单表关联,订单表又与用户信息表关联,所以用户就可以完成查看订单里面具体商品信息的操作

12、消息队列表

实体描述:

实体编号

实体名称

实体命名

01

消息队列表

message_queue

实体说明

储存所有的消息

消息队列实体属性列表

属性名

类型

是否

主键

是否外键

可否

为空

默认值

说明

备注

message_id

int

自动递增(从1开始)

唯一标识消息的符号

sender_id

varchar(30)

发送者id

receiver_id

varchar(30)

接收者id

send_time

datetime(30)

发送消息的时间

message_detail

varchar(200)

消息内容

这个表示针对2期迭代的留言功能,具体是买家给卖家留言还是高级管理员与其他用户互动等等情况要根据send_id receiver_id而定。

猜你喜欢

转载自www.cnblogs.com/liumingjie-973234/p/10006552.html