《VUE+Django:手把手教你打造自己的电商独立站》2.6 数据结构设计

210 阅读5分钟

《VUE+Django:手把手教你打造自己的电商独立站》专栏写作大纲

《VUE+Django:手把手教你打造自己的电商独立站》2.5 私有页面设计

本来数据结构是在后端才会用到,但是在实际项目中,由于前后端分离,这部分的设计都是在开发之前就要达成一致的,因此我放在前面进行说明。

由于我们在后端选择的是Django框架,接下来设计数据结构的时候会结合Django提供的特性进行说明。Django对各种数据库提供了很好的支持,包括PostgreSQL、MySQL、SQLite和Oracle,而且为这些数据库提供了统一的API方法,这些API统称为ORM框架。通过使用Django内置的ORM框架可以实现数据库连接和读写操作。

ORM框架是一种程序技术,用于实现面向对象编程语言中不同类型系统的数据之间的转换。从效果上说,它创建了一个可在编程语言中使用的“虚拟对象数据库”,通过对虚拟对象数据库的操作从而实现对目标数据库的操作,虚拟对象数据库与目标数据库是相互对应的。

基于概要设计的用户旅程和上一节的页面设计,有以下类别的数据结构需要设计

1.用户信息

2.商品信息

3.订单信息

4.购物车信息

5.收藏夹信息

6.询单信息

2.6.1 用户信息表

用户信息表保存了用户的基本信息。可以把内部员工的账号和客户的账号分开管理,也可以合一。由于我们在后端使用了Django框架,而Django提供了一个默认的AbstractUser,提供了一些基本字段。我们可以在继承这个模型的基础上,在增加一些个性化的字段。

No.字段含义类型
1username用户名CharField
2password密码CharField
3last_login上次登录时间DateTimeField
4is_superuser是否超级用户BooleanField
5first_nameCharField
6last_nameCharField
7email邮箱地址CharField
8is_staff是否员工BooleanField
9is_active是否激活BooleanField
10date_joined首次生成时间DateTimeField
11phone电话CharField
12user_status用户登录状态CharField
13user_avatar用户头像CharField
14nickname用户昵称CharField

2.6.2 商品信息表

商品应该具备基本的名称、价格、类别、库存字段,由于在首页的不同位置显示,以及随时间有不同的销售类别,需要额外增加一些字段。

No.字段含义类型
1product_name商品名称CharField
2price价格FloatField
3type商品物理类别CharField
4catagory商品销售类别CharField
5size商品尺寸CharField
6show_flag首页展示类别CharField
7img_path商品大图CharField
8batch_imgs商品轮播图CharField
9remained_nums库存数量IntegerField
10desp商品描述CharField

2.6.3 订单信息

订单可能在用户浏览商品时生成,也可能是用户把商品加入购物车之后从购物车生成,支付还涉及电子支付的信息

No.字段含义类型
1orderid订单流水号CharField
2ordertime订单生成时间DateTimeField
3ordername订单商品名称CharField
4orderprice订单总价格FloatField
5orderstatus订单支付状态CharField
6orderqrcode订单支付的二维码图片CharField
7nums订单商品数量IntegerField
8orderuser_id订单关联的用户idCharField
9cart_id订单关联的购物车记录idCharField
10product_id订单关联的商品idCharField

2.6.4 购物车信息

用户把商品加入购物车之后,生成一条记录,需要记录用户选择的商品信息、数量信息和后续生成订单的状态信息

No.字段含义类型
1cartid购物车记录流水号CharField
2carttime生成时间DateTimeField
3cartname关联的商品名称CharField
4singleprice商品单价FloatField
5totalprice商品总价FloatField
6nums商品数量IntegerField
7cartstatus是否生成订单CharField
8cartuser_id关联的用户idCharField
9product_id关联的商品idCharField

2.6.5 收藏夹信息

收藏夹信息比较简单,主要是方便用户收藏感兴趣的商品

No.字段含义类型
1status收藏商品状态CharField
2product_id关联的商品idForeignKey
3user_id关联的用户idForeignKey

2.6.6 询单信息

用户在浏览某些商品的详情页面时,如果对这个商品很有兴趣,希望了解更多信息,可以在这里发起询单。商家在查看询单后进行回复,用户查看商家回复后可以继续追加问题。整体类似一个博客的结构。包含了原始询单和关联的多个评论信息

No.字段含义类型
1time询单生成的时间DateTimeField
2customername客户名字CharField
3country客户国家CharField
4email客户邮箱地址CharField
5productname商品名称CharField
6user_id关联的用户idForeignKey
7product_id关联的商品idForeignKey

每个评论下可以添加多个评论回复,评论的数据结构如下表

No.字段含义类型
1time询单生成的时间DateTimeField
2description评论内容CharField
3productname商品名称CharField
4user_id关联的用户idForeignKey
5enquiry_id关联的询单idForeignKey

到这里,所有会使用到的数据表结构都设计好了,在后端开发中,我们将基于Django的models实现它们。