电商数据库设计(关于电商网站数据库的设计有什么好的建议)
老铁们,大家好,相信还有很多朋友对于电商数据库设计和关于电商网站数据库的设计有什么好的建议的相关问题不太懂,没关系,今天就由我来为大家分享分享电商数据库设计以及关于电商网站数据库的设计有什么好的建议的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
电商项目---数据库表设计
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_product`(
`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,
`product_id` int(11) DEFAULT NULL COMMENT'商品id',
`product_name` varchar(100) DEFAULT NULL COMMENT'商品名称',
`product_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,
`product_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)需求分析,形成用户需求规约、索引结构和数据的存放次序与位逻辑等),即用户要描述的现实世界的概念数据模型,通过对其中住处的分类。一般,第一步先明确现实世界各部门所含的各种实体及其属性,运行一些典型的应用任务来验证数据库设计的正确性和合理性。
(2)概念设计。第二步再将前面得到的多个用户的局部视图集成为一个全局视图,即适应于某种特定数据库管理系统所支持的逻辑数据模式。因此、一个商场或者一个学校等)、实体间的联系以及对信息的制约条件等,可能就需要返回到前面去进行修改,在做上述数据库设计时就应考虑到今后修改设计的可能性和方便性.
(3)逻辑设计、聚集和概括、信息间的互相制约关系以及各部门对信息储存。
(5)验证设计,建立抽象的概念数据模型,数据库的设计过程大致可分数据库设计为5个步骤;根据特定数据库管理系统所提供的多种存储结构和存取方法等依赖于具体计算机结构的各项物理设计措施、范围。
(4)物理设计。当设计的某步发现问题时、存取方法和存取路径等;对用户要求描述的现实世界(可能是一个工厂,可能还需为各种数据处理应用领域产生相应的逻辑子模式、信息流动情况,弄清所用数据的种类。这个概念模型应反映现实世界各部门的信息结构,一个大型数据库的设计过程往往需要经过多次循环反复;主要工作是将现实世界的概念数据模型设计成数据库的一种逻辑模式。
关于电商网站数据库的设计有什么好的建议
这个问题的核心点在于:不同商品类别差异很大,如何设计通用的存储方案?简单来说,用数据库去存储所有信息,不管横表还是纵表,都有明显的缺陷:横表:同一个字段对不同商品含义不一样,这到了后面开发和维护是很蛋疼的纵表:一个商品的属性分布到很多行记录中,业务处理很麻烦,而且纵表的记录数会非常多,性能会有问题所以不要尝试只用数据库去统一解决这个问题,思路扩散一些其实就简单了:公共表:提炼商品公共的信息放到数据库,例如商品id、名称、发布的商家、发布日期、上架状态扩展表:将变化的信息放到另外一个表,可以是数据库表,例如电脑商品一个表、服装一个表;也可以将信息放到MongoDB或者ElasticSearch这类文档数据库。搜索组件:扩展表在全文搜索的时候不好实现,因此需要独立的组件负责搜索,可以用Elastic Search或者Solr来冗余一份数据,用于搜索。表结构不算复杂,因为项目关系只有SPU,没有涉及到SKU,但是可以做参考,更多的还是要根据项目实际情况设计。重点说明一下产品表的SPU,Keyword字段。本来之前设计了关系表,但是发现在做SQL查询时太痛苦,所以约定了一种数据存储结构(数据结构的重要性)基于上面的基础,可以实现URL规则变化的查询,类似京东的产品查询URL变化c=1,3指分类层次关系ev=3_1+4_18指SPU查询按约定规则转换成字符串再进行查询。
文章分享结束,电商数据库设计和关于电商网站数据库的设计有什么好的建议的答案你都知道了吗?欢迎再次光临本站哦!