当前位置: 首页 > 后端技术 > PHP

电商系统设计的用户系统

时间:2023-03-29 20:18:23 PHP

是电商中每个人每天都会用到的,类似于某只猫,某只狗等。电商系统的设计看似复杂,其实很简单,又看似简单又很复杂电子商务的多变性就像孩子的心情一样,变化非常快,所以在设计中需要考虑大部分的功能接入和开发,尽量减少数量重构。为老板节约成本,为程序员“珍惜生命”数据表前期业务简单时,我们可以将数据表设计成如下TableNameComments成员用户表member_address收货地址表member_card银行卡表member_cart购物车表member_cart_itemShoppingcart商品表member_collect_product商品收藏表member_collect_supplier店铺收藏表member_data用户信息表member_query_history用户搜索历史表member_wallet用户账户表member_withdrawal用户提款表user表考虑到多种登录方式,数据表中应该涉及到微信的openid和unionid,支付宝,QQ用户token等。这些前期应该会涉及到,因为后期大量用户后加一个字段是噩梦,用户状态status也是必不可少的,比较人也分好与坏不好,接着是创建时间,登录时间,等等,用户表和用户信息表是绝对绑定的,就不多说了。CREATETABLE`member`(`id`int(10)unsignedNOTNULLAUTO_INCREMENT,`tel`bigint(20)DEFAULTNULLCOMMENT'手机号码',`password`varchar(555)COLLATEutf8mb4_unicode_ciDEFAULTNULLCOMMENT'登录密码',`wx_token`varchar(125)COLLATEutf8mb4_unicode_ciDEFAULTNULLCOMMENT'WeChatTOKEN',`im_token`varchar(255)COLLATEutf8mb4_unicode_ciNOTNULLCOMMENT'用户融云令牌',`open_id`varchar(125)COLLATEutf8cimb4`DOLEF_`enum('1','-1')COLLATEutf8mb4_unicode_ciNOTNULLDEFAULT'1'COMMENT'账户状态',`created_at`timestampNULLDEFAULTNULL,`updated_at`timestampNULLDEFAULTNULL,PRIMARYKEY(`id`),UNIQUEKEY`member_tel_unique`(`tel`),UNIQUEKEY`member_wx_token_unique`(`wx_token`))ENGINE=InnoDBAUTO_INCREMENT=95DEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_unicode_ci;收货地址表收货地址相对于用户是一一对应的,在设计中添加必填字段即可,如收货人、收货人手机号、城市、详细地址等CREATETABLE`member_address`(`id`int(10)unsignedNOTNULLAUTO_INCREMENT,`member_id`int(11)NOTNULLCOMMENT'用户号码',`nick_name`varchar(255)COLLATEutf8mb4_unicode_ciNOTNULLCOMMENT'收货人姓名',`tel`varchar(255)COLLATEutf8mb4_unicode_ciNOTNULLCOMMENT'手机号码',`prov`int(11)DEFAULTNULLCOMMENT'province',`city`int(11)NOTNULLCOMMENT'city',`area`int(11)DEFAULTNULLCOMMENT'area',`address`varchar(255)COLLATEutf8mb4_unicode_ciNOTNULLDEFAULT''COMMENT'streetaddress',`number`int(11)NOTNULLCOMMENT'zipcode',`default`enum('0','1')COLLATEutf8mb4_unicode_ciNOTNULLDEFAULT'0'COMMENT'defaultshippingaddress1=>default',`deleted_at`timestampNULLDEFAULTNULL,`created_at`timestampNULLDEFAULTNULL,`updated_at`timestampNULLDEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=55DEFAULTCHARSET=utf8mb4COLLATE=utfci8银行卡表用于用户的取现业务等,记录银行卡需要的信息即可,如持卡人、卡号、归属地bank等CREATETABLE`member_card`(`id`int(10)unsignedNOTNULLAUTO_INCREMENT,`member_id`int(11)NOTNULLCOMMENT'userID',`card_name`varchar(25)COLLATEutf8mb4_unicode_ciNOTNULLCOMMENT'持卡人姓名',`card_number`varchar(25)COLLATEutf8mb4_unicode_ciNOTNULLCOMMENT'银行卡号',`created_at`timestampNULLDEFAULTNULL,`updated_at`timestampNULLDEFAULTNULL,PRIMARYKE`Y),UNIQUEKEY`member_card_card_number_unique`(`card_number`))ENGINE=InnoDBAUTO_INCREMENT=11DEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_unicode_ci;购物车表单独搭建还有一个原因。通常,只需要member_cart_item表。根据实际的线下业务场景,你需要带着购物车去超市正常购物,但是这个购物车并不属于你。开放的业务场景相对狭窄。比如JD.com和JD.com一样(我只是举个例子,不知道他们是怎么做到的)。购物车不是万能的,那怎么区分呢?应该区分在购物车上还是购物车里?区分?我想你已经明白了。CREATETABLE`member_cart`(`id`int(10)unsignedNOTNULLAUTO_INCREMENT,`member_id`int(11)NOTNULLCOMMENT'usercode',`created_at`timestampNULLDEFAULTNULL,`updated_at`timestampNULLDEFAULTNULL,PRIMARYKEY(`id`),UNIQUEKEY`member_cart_member_id_unique`(`member_id`),KEY`member_cart_member_id_index`(`member_id`))ENGINE=InnoDBAUTO_INCREMENT=28DEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_unicode_ci购物车需要注明的点就是【并不是所有的表都设计成绑定和相互依赖的】,比如购物车产品表,它不仅存储了产品代码,还存储了产品的价格,产品的介绍和规格产品(均为SKU)入库,无法发现该产品的存在,因为卖家已将该产品下架。与一切相比,用户是第一位的,用户就是上帝的原则。你不能让产品悄悄消失。所以在做购物车商品表查询的时候,切记不要使用join或者表关联查询CREATETABLE`member_cart_item`(`id`int(10)unsignedNOTNULLAUTO_INCREMENT,`cart_id`int(11)NOTNULLCOMMENT'购物车代码',`product_desc`varchar(255)COLLATEutf8mb4_unicode_ciNOTNULLCOMMENT'产品sku信息',`product_img`varchar(255)COLLATEutf8mb4_unicode_ciNOTNULLCOMMENT'产品快照',`product_name`varchar(255)COLLATEutf8cimb4_unicode产品名称',`price`decimal(8,2)NOTNULLDEFAULT'0.00'COMMENT'price',`product_id`int(11)NOTNULLCOMMENT'productcode',`supplier_id`int(11)NOTNULLCOMMENT'商店代码',`sku_id`int(11)NOTNULLCOMMENT'productskucode',`number`int(11)NOTNULLDEFAULT'1'COMMENT'numberofproducts',`created_at`timestampNULLDEFAULTNULL,`updated_at`timestampNULLDEFAULTNULL,主键(`id`),键`member_cart_item_cart_id_product_id_supplier_id_index`(`cart_id`,`product_id`,`supplier_id`))ENGINE=InnoDBAUTO_INCREMENT=24DEFAULTCHARSET=utf8mbf4ciLLhistorytablesearch搜索搜索记录是必须的,为以后的数据分析和智能推荐做准备,毕竟现在是信息共享的时代~CREATETABLE`member_query_history`(`id`int(10)unsignedNOTNULLAUTO_INCREMENT,`member_id`int(11)NOTNULLCOMMENT'usercode',`keyword`varchar(125)COLLATEutf8mb4_unicode_ciNOTNULLCOMMENT'keyword',`created_at`timestampNULLDEFAULTNULL,`updated_at`timestampNULLDEFAULTNULL,PRIMARYKEY(`id`))引擎=InnoDBAUTO_INCREMENT=11默认字符集=utf8mb4COLLATE=utf8mb4_unicode_ci;数据记录中有很多场景,必须直接存储标题和内容,类似于喜欢的商店和产品,无论卖家做什么,用户的购物车,订单都不能移动,这是基准。谢谢您阅读此篇。在下一篇文章中,我将谈谈电子商务系统的产品设计部分。大家有什么问题可以在评论区提问。谢谢

最新推荐
猜你喜欢