⑴ 关于电商网站数据库的设计有什么好的建议
这个问题的核心点在于:不同商品类别差异很大,如何设计通用的存储方案?简单来说,用数据库去存储所有信息,不管横表还是纵表,都有明显的缺陷:横表:同一个字段对不同商品含义不一样,这到了后面开发和维护是很蛋疼的纵表:一个商品的属性分布到很多行记录中,业务处理很麻烦,而且纵表的记录数会非常多,性能会有问题所以不要尝试只用数据库去统一解决这个问题,思路扩散一些其实就简单了:公共表:提炼商品公共的信息放到数据库,例如商品id、名称、发布的商家、发布日期、上架状态扩展表:将变化的信息放到另外一个表,可以是数据库表,例如电脑商品一个表、服装一个表;也可以将信息放到MongoDB或者ElasticSearch这类文档数据库。搜索组件:扩展表在全文搜索的时候不好实现,因此需要独立的组件负责搜索,可以用Elastic Search或者Solr来冗余一份数据,用于搜索。表结构不算复杂,因为项目关系只有SPU,没有涉及到SKU,但是可以做参考,更多的还是要根据项目实际情况设计。重点说明一下产品表的SPU,Keyword字段。本来之前设计了关系表,但是发现在做SQL查询时太痛苦,所以约定了一种数据存储结构(数据结构的重要性)基于上面的基础,可以实现URL规则变化的查询,类似京东的产品查询URL变化c=1,3 指分类层次关系ev=3_1+4_18 指SPU查询 按约定规则转换成字符串再进行查询。
⑵ 电子商务的交易记录,数据库怎么设计
首先来说对于这种场景有两种设计方法,这两种方法都能够满足扩展性要求
1. 把原有的横表转化为纵表存储属性,即
产品表:(proct_id, proct_name, proct_class)
产品属性表:(proct_id, property_id , property_name , property_value)
2. 保持原有横表设计思路,但是弹性字段含义单独元数据表存储
产品表:(proct_id, proct_name, proct_class, prop1, prop2, .... propn)
产品属性含义元数据表
(proct_class , prop1_name ,prop2_name, ..... propn_name)
对于两种设计方法,个人理解为
a. 对于首页打开就必须要能够快速查询出来的属性,而且这些属性本身各类产品差异不大。而对于差异大的属性基本都是针对特定一个产品查询。可以采用方案1来做。
b. 首页显示产品列表时候就存在要显示出不同产品属性情况,采用方案2来做。当我们处理的是一个proct list的时候,由于存在数据表本身的关联场景,用方案1会比麻烦,也影响性能。
⑶ 电商项目---数据库表设计
CREATE TABLE `mmall_user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户表id',
`username` varchar(50) NOT NULL COMMENT '用户名',
`password` varchar(50) NOT NULL COMMENT '用户密码,MD5加密',
`email` varchar(50) DEFAULT NULL,
`phone` varchar(20) DEFAULT NULL,
`question` varchar(100) DEFAULT NULL COMMENT '找回密码问题',
`answer` varchar(100) DEFAULT NULL COMMENT '找回密码答案',
`role` int(4) NOT NULL COMMENT '角色0-管理员,1-普通用户',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_time` datetime NOT NULL COMMENT '最后一次更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `user_name_unique` (`username`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;
CREATE TABLE `mmall_proct` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '商品id',
`category_id` int(11) NOT NULL COMMENT '分类id,对应mmall_category表的主键',
`name` varchar(100) NOT NULL COMMENT '商品名称',
`subtitle` varchar(200) DEFAULT NULL COMMENT '商品副标题',
`main_image` varchar(500) DEFAULT NULL COMMENT '产品主图,url相对地址',
`sub_images` text COMMENT '图片地址,json格式,扩展用',
`detail` text COMMENT '商品详情',
`price` decimal(20,2) NOT NULL COMMENT '价格,单位-元保留两位小数',
`stock` int(11) NOT NULL COMMENT '库存数量',
`status` int(6) DEFAULT '1' COMMENT '商品状态.1-在售 2-下架 3-删除',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8;
CREATE TABLE `mmall_category` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '类别Id',
`parent_id` int(11) DEFAULT NULL COMMENT '父类别id当id=0时说明是根节点,一级类别',
`name` varchar(50) DEFAULT NULL COMMENT '类别名称',
`status` tinyint(1) DEFAULT '1' COMMENT '类别状态1-正常,2-已废弃',
`sort_order` int(4) DEFAULT NULL COMMENT '排序编号,同类展示顺序,数值相等则自然排序',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=100031 DEFAULT CHARSET=utf8;
CREATE TABLE `mmall_order` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '订单id',
`order_no` bigint(20) DEFAULT NULL COMMENT '订单号',
`user_id` int(11) DEFAULT NULL COMMENT '用户id',
`shipping_id` int(11) DEFAULT NULL,
`payment` decimal(20,2) DEFAULT NULL COMMENT '实际付款金额,单位是元,保留两位小数',
`payment_type` int(4) DEFAULT NULL COMMENT '支付类型,1-在线支付',
`postage` int(10) DEFAULT NULL COMMENT '运费,单位是元',
`status` int(10) DEFAULT NULL COMMENT '订单状态:0-已取消-10-未付款,20-已付款,40-已发货,50-交易成功,60-交易关闭',
`payment_time` datetime DEFAULT NULL COMMENT '支付时间',
`send_time` datetime DEFAULT NULL COMMENT '发货时间',
`end_time` datetime DEFAULT NULL COMMENT '交易完成时间',
`close_time` datetime DEFAULT NULL COMMENT '交易关闭时间',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `order_no_index` (`order_no`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=118 DEFAULT CHARSET=utf8;
CREATE TABLE `mmall_order_item` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '订单子表id',
`user_id` int(11) DEFAULT NULL,
`order_no` bigint(20) DEFAULT NULL,
`proct_id` int(11) DEFAULT NULL COMMENT '商品id',
`proct_name` varchar(100) DEFAULT NULL COMMENT '商品名称',
`proct_image` varchar(500) DEFAULT NULL COMMENT '商品图片地址',
`current_unit_price` decimal(20,2) DEFAULT NULL COMMENT '生成订单时的商品单价,单位是元,保留两位小数',
`quantity` int(10) DEFAULT NULL COMMENT '商品数量',
`total_price` decimal(20,2) DEFAULT NULL COMMENT '商品总价,单位是元,保留两位小数',
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `order_no_index` (`order_no`) USING BTREE,
KEY `order_no_user_id_index` (`user_id`,`order_no`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=135 DEFAULT CHARSET=utf8;
CREATE TABLE `mmall_cart` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`proct_id` int(11) DEFAULT NULL COMMENT '商品id',
`quantity` int(11) DEFAULT NULL COMMENT '数量',
`checked` int(11) DEFAULT NULL COMMENT '是否选择,1=已勾选,0=未勾选',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `user_id_index` (`user_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=127 DEFAULT CHARSET=utf8;
CREATE TABLE `mmall_pay_info` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) DEFAULT NULL COMMENT '用户id',
`order_no` bigint(20) DEFAULT NULL COMMENT '订单号',
`pay_platform` int(10) DEFAULT NULL COMMENT '支付平台:1-支付宝,2-微信',
`platform_number` varchar(200) DEFAULT NULL COMMENT '支付宝支付流水号',
`platform_status` varchar(20) DEFAULT NULL COMMENT '支付宝支付状态',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=61 DEFAULT CHARSET=utf8;
CREATE TABLE `mmall_shipping` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) DEFAULT NULL COMMENT '用户id',
`receiver_name` varchar(20) DEFAULT NULL COMMENT '收货姓名',
`receiver_phone` varchar(20) DEFAULT NULL COMMENT '收货固定电话',
`receiver_mobile` varchar(20) DEFAULT NULL COMMENT '收货移动电话',
`receiver_province` varchar(20) DEFAULT NULL COMMENT '省份',
`receiver_city` varchar(20) DEFAULT NULL COMMENT '城市',
`receiver_district` varchar(20) DEFAULT NULL COMMENT '区/县',
`receiver_address` varchar(200) DEFAULT NULL COMMENT '详细地址',
`receiver_zip` varchar(6) DEFAULT NULL COMMENT '邮编',
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8;
GitHub 地址:https://github.com/Andy-leoo/NewBieJavaPro.git
⑷ 电商订单系统设计原理主要用了什么技术
电子商务系统的总体结构设计是在系统体系结构的基础上,针对企业电子商务的目标,界定系统的外部边界和接口,刻画系统的内部成及其相互关系,明确目标系统的各个组成部分、各个组成部分的作用及其相互关系。 系统总体结构设计包括如下内容: 1.确定系统的外部接口 通过分析,将电子商务系统与其外部环境区分开来,从而使总体设计有一个明确的范围。系统与其外部环境的接口包括以下方面: (1)与企业合作伙伴之间的接口; (2)与企业内部既有信息系统的接口; (3)与交易相关的公共信息基础设施之间的接口; (4)其他接口如态烂,如企业与政府或其他机构之间的接口。 2.确定系统的组成结构 系统组成结构主要说明目标系统内部的组成部分,以及系统内部与外部环境的相互关系。 方法: 随着Internet技术的发展,人们的日常生活已经离不开网络。未来闭陪社会人们的生活和工作将越来越依赖于数字技术的发展,越来越数字化、网络化、电子化、虚拟化。电子商务也随着网络的发展日益和人们的生活贴近。本设计尝试用ASP在网络上架构一个动态的电子商务网站,以使每一位顾客不用出门在家里就能够通过上网来轻松购物。在本设计中,我主要完成了后台功能的实现,实现了登录功能,图书管理,图书分类管理,订单管理,用户管理等功能。 本文中所做的主要工作如下: (1)简单介绍了电子商务,分析了电子商务的现状; (2)介绍了IIS+ASP系统的一般原理; (3)阐述整个系统的系统结构及工作原理;分析了系统实现中的特殊性、难点和重点; (4)分析并解决实现中的若干技术问题; 附: 方案设计主要依靠设计者的经验,作出技术和结构的选择,并以有组织的文档反映,作为与客户交流论证方案,交付系统开发人员实施的依据,方案设计的基础是业务环境说明书。业务环境说明书重新组织系统需求,给出解决方案的业务运作方式。在系统需求相对简单时不一定需要,如果系统需求较为复杂时,以文字和图表的方式系统地说明业务环境可以使系统需求更加清楚,业务环境说明书可以采用三种文档结构。 * 业务流程图:业务流程图描述企业的业务在新系统中如何运作,说明新系统的业务运作模式如何解决客户的要求,指出客户的业务流程因为新系统的应用而作出那些更改。业务流程图是一种直观的工具,向客户解释新系统的作用,征求使用者的配合与支持,能提高新系统的实际效能。 * 操作规程说明:相对于业务流程图这种较高层概括的文档,普通用户可能更需要一份详细的操作规程说明,以便更好地理解系统的功能与使用。操作规程说明以易被最终用户理解的词语描述,避免使用过分专业的词语。操作规程说明仍属于高层设计文档,不是最终的操作步骤说明。操作规程说明规定了系统活动的框架, * 处理流程图 : 细化操作规程中描述的活动,由事件和处理流组成。事件是活动开始的条件,处理是活动中的具体工作。处理流程图的描述层次接近详细设计。以客户在网上购货为例,最后一步是确认付款,操作规程说明只需简单地说明:“客户检查付款额后确认”,处理流程图的说明比较详细,激发活动的事件是客户按下“付额”按钮,处理是付款总额从数据库中统计出来,显示在浏览器上,最后由客户按“确认”按钮确认。 当前普遍采用对象技术描述复杂的应用结构,电子商务系统一般用Java,EJB,CORBA等对象技术实现,在系统设计阶段,编制业务环境书时采用面向对象分析和设计方法可以提高实施阶段的效率。业务环境说明书中的设计文档完成后,召开第二次项目会议,在会上以图表的形式向客户和项目开发人员介绍系统设计的概貌。着重与客户讨论两个问题,检查系统设计是否满足客户需求: 系统设计在多大程度上解决了用户的需求?是否准确地实现了客户的期望,既没有过分简单化,也没有过分复杂化。 系统设计的功能范围是否包含了用户提出的所有需求? 应用开发人员参加项目会议,可以更好地了解客户的业务环境与方案设计的总体结构,与客户和系统设计者直接交谈,减少沟通的误差,提高效渣漏率。 IBM为电子商务系统定义了一套完整的电子商务应用框架,基于三层次体系结构集成企业核心系统与互联网服务,多层次结构使企业内部应用系统无需作重大更改,通过与互联网服务器的连结就可以在互联网上提供服务,实现电子商务系统的目标。 基于电子商务应用框架的电子商务系统体系结构共有八个主要部分。直接支持应用程序运行的模块有六个:客户端、网络连接、互联网服务器、应用逻辑、中间连接件、核心数据与应用,其余两个模块安全性和系统管理与这六个模块都有关联,系统设计者可相对独立地设计安全性体系和系统管理体系,在应用程序运行支持模块的实现中加入相应的技术与处理。安全性和系统管理的效率是系统的整体性效果,应用系统运行的每一个环节都能影响系统总体的安全性和可管理性。