189 8069 5689

php电商数据库怎么设计 php电商数据库怎么设计出来

关于电商网站数据库的设计有什么好的建议?

这个问题的核心点在于:不同商品类别差异很大,如何设计通用的存储方案?简单来说,用数据库去存储所有信息,不管横表还是纵表,都有明显的缺陷:横表:同一个字段对不同商品含义不一样,这到了后面开发和维护是很蛋疼的纵表:一个商品的属性分布到很多行记录中,业务处理很麻烦,而且纵表的记录数会非常多,性能会有问题所以不要尝试只用数据库去统一解决这个问题,思路扩散一些其实就简单了:公共表:提炼商品公共的信息放到数据库,例如商品id、名称、发布的商家、发布日期、上架状态扩展表:将变化的信息放到另外一个表,可以是数据库表,例如电脑商品一个表、服装一个表;也可以将信息放到MongoDB或者ElasticSearch这类文档数据库。搜索组件:扩展表在全文搜索的时候不好实现,因此需要独立的组件负责搜索,可以用Elastic Search或者Solr来冗余一份数据,用于搜索。表结构不算复杂,因为项目关系只有SPU,没有涉及到SKU,但是可以做参考,更多的还是要根据项目实际情况设计。重点说明一下产品表的SPU,Keyword字段。本来之前设计了关系表,但是发现在做SQL查询时太痛苦,所以约定了一种数据存储结构(数据结构的重要性)基于上面的基础,可以实现URL规则变化的查询,类似京东的产品查询URL变化c=1,3 指分类层次关系ev=3_1+4_18 指SPU查询 按约定规则转换成字符串再进行查询。

建网站原本是网站策划师、网络程序员、网页设计师等,应用各种网络程序开发技术和网页设计技术配合操作的协同工作。创新互联建站专业提供网站设计制作、成都网站制作,网页设计,网站制作(企业站、自适应网站建设、电商门户网站)等服务,从网站深度策划、搜索引擎友好度优化到用户体验的提升,我们力求做到极致!

电商项目---数据库表设计

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 地址:

我是php新手每次都为了设计数据库而犯愁.请高手指点指点

1.首先要全面分析一下你的系统涉及到哪些事物对象,一般来说是为每种对象建立一张表。

2.然后是分析每个事物都有哪些属性,每个属性是什么特点,反映在数据库中这个字段是什么类型。

2.然后分析各个事物之间的关系,哪个是“一”,哪个是“多”。如班级是“一”,学生是“多”,则要在学生表中添加一个字段来保存他所属的班级。

最基本的就是这样,其他就是一些优化的问题。

建议你在网上找一些相关电子书进行系统的学些;然后就是可以下载一些程序,想dz,ecshop之类,如果让你自己来设计数据库你会怎样做,然后打开程序看别人是怎么设计的;看多了就熟悉了。


分享文章:php电商数据库怎么设计 php电商数据库怎么设计出来
分享链接:http://cdxtjz.cn/article/dohdiph.html

其他资讯