电子商城数据库设计思路

一.设计目标

    本次设计为设计一个电子商城,即我们经常在淘宝,京东等网站看到的网店。这只是一个初步的设计,跟实际上的网店还有很多的差距。主要的差距在于数据的并发处理,图片服务器,视频服务器,以及用户访问信息服务器等。在此系统中进行了用户的各个功能的模拟以及用户端和后台管理端的交互。

二.数据库设计

    

在设计数据库之前,我们需要根据页面所要实现的功能对相应的数据库进行设想。

 

首先,我们可以从用户角度去考虑。我们需要创建一个用户信息表。



CREATE TABLE `user_info` (
  `user_name` varchar(10) NOT NULL DEFAULT '' COMMENT '用户名,登录时需要用的',
  `nick_name` varchar(10) DEFAULT '' COMMENT '昵称',
  `real_name` varchar(10) DEFAULT '' COMMENT '真实姓名,别人不可见',
  `birthday` date DEFAULT NULL,
  `tel_phone` varchar(20) DEFAULT NULL,
  `email` varchar(30) DEFAULT NULL,
  `address` varchar(50) DEFAULT '' COMMENT '默认收货地址',
  `user_id` int(10) unsigned zerofill NOT NULL AUTO_INCREMENT,
  `grade` int(2) DEFAULT '1' COMMENT '会员等级',
  `password` varchar(10) DEFAULT NULL COMMENT '密码',
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=104 DEFAULT CHARSET=utf8;

在这个表中我已经做了比较详细的注释,其中我有一些想要说明的东西。user_name是我们的登录名称,而user_id是一个用户在一次访问中作为唯一标识符存在的标志,这个标志对用户并不可见。但却作为主键的形式在其他数据表中操作该用户的一些相关数据,之后的address项是默认地址。这个地址是默认的地址而不是该用户所用的全部的地址,关于用户的地址信息,我另外设计了一个新的表address_info。

CREATE TABLE `address_info` (
  `address` varchar(20) DEFAULT NULL,
  `user_id` varchar(255) DEFAULT NULL,
  `status` int(11) DEFAULT NULL COMMENT '是否为默认地址,1为默认地址,0为非默认地址',
  `tel_phone` varchar(11) DEFAULT NULL COMMENT '联系电话',
  `address_id` varchar(100) NOT NULL COMMENT '地址的id用来区分地址',
  `receiver_name` varchar(11) DEFAULT NULL COMMENT '接受者姓名',
  PRIMARY KEY (`address_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
这个表,我需要进行一下简要的解释。我们的购物地址都有默认地址。所以我选择设置一个status属性来区分默认地址和非默认地址。我的设计是一个人可以拥有五个地址。这个表中有address_id这个属性。这个是以主键的身份存在,用来对相应的地址进行操作,比如关于某一行数据的增删改查,作为前台和后台的传递标识。

接下来我想介绍一下我们都经常使用的一项功能,那就是优惠券的领取。我们知道,优惠券的业务处理也是比较复杂的,所以我为优惠券这一项专门设计了一张数据表coupon_info。

CREATE TABLE `coupon_info` (
  `preferential_amount` double(10,2) unsigned zerofill DEFAULT NULL COMMENT '优惠金额限度',
  `minimum_consumption_amount` double(10,2) unsigned zerofill DEFAULT NULL COMMENT '最低金额限度',
  `user_id` varchar(10) DEFAULT NULL COMMENT '持有者的id',
  `user_name` varchar(10) DEFAULT NULL COMMENT '持有者的姓名',
  `deadline` date DEFAULT NULL COMMENT '截止日期',
  `shop_name` varchar(10) DEFAULT NULL COMMENT '优惠券的商家名',
  `coupon_id` varchar(10) NOT NULL,COMMENT'优惠券的id'

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

关于优惠券这一项我也专门设计了一个coupon_id,这个id就是该用户所领取的优惠券类型的存在标识,用户相应的优惠券的相关操作。之后,从商家的角度考虑,我设计了一个优惠券的仓库coupon_warehouse_info,也就是所有优惠券的集合。

CREATE TABLE `coupon_warehouse_info` (
  `preferential_amount` double(10,2) DEFAULT NULL COMMENT '优惠金额限度',
  `minimum_consumption_amount` double(10,2) DEFAULT NULL COMMENT '最低金额限度',
  `deadline` date DEFAULT NULL COMMENT '截止日期',
  `shop_name` varchar(50) DEFAULT NULL,
  `count` int(10) DEFAULT NULL COMMENT '剩余的优惠券数量',
  `coupon_id` varchar(50) NOT NULL COMMENT '优惠券id便于修改优惠券的相关信息',
  PRIMARY KEY (`coupon_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

在这个表中我们同样发现了coupon_id,这个的含义和coupon_info表中的coupon_id的含义相同。用于执行相应的优惠券领取操作。

我们的淘宝账号都绑定了银行卡,银行卡为支付宝提供了操作我们的银行卡金额操作的接口。同样我设计了用户的银行卡信息数据库card_info进行模拟。

CREATE TABLE `card_info` (
  `card_no` varchar(10) DEFAULT NULL COMMENT '银行卡号',
  `card_money` double(100,0) DEFAULT NULL COMMENT '余额',
 `user_name` varchar(10) DEFAULT '' COMMENT '持有者',
  `card_name` varchar(10) DEFAULT NULL COMMENT '银行名称'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

这个数据表很好理解。

之后我从购物操作方面进行考虑。分别设计了购物车表单shopping_cart_info,收藏夹表单collection_info和订单表单order_info。

CREATE TABLE `collection_info` (
  `user_id` varchar(10) DEFAULT NULL COMMENT '收藏的用户的id',
  `img_id` varchar(10) DEFAULT NULL COMMENT '图片的名称,便于寻找图片',
  `product_name` varchar(10) DEFAULT NULL COMMENT '商品名称',
  `shopping_name` varchar(10) DEFAULT NULL COMMENT '店名',
  `product_id` varchar(10) NOT NULL COMMENT '商品号',
  PRIMARY KEY (`product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `shopping_cart_info` (
  `user_name` varchar(10) DEFAULT NULL COMMENT '用户名',
  `product_name` varchar(10) DEFAULT NULL,
  `product_number` double(10,2) DEFAULT NULL COMMENT '商品数量',
  `product_total_price` double(10,2) DEFAULT NULL COMMENT '商品的总价',
  `img_id` varchar(10) DEFAULT NULL COMMENT '商品图片名',
  `shopping_id` varchar(50) DEFAULT NULL COMMENT '购物车商品项的id'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `order_info` (
  `order_id` varchar(50) NOT NULL COMMENT '订单id',
  `product_numbers` double(10,2) DEFAULT NULL COMMENT '商品数目',
  `product_info` varchar(50) DEFAULT NULL,
  `product_total_price` double(10,2) DEFAULT '0.00',
  `order_delivery_status` varchar(10) DEFAULT NULL COMMENT '订单的状态(例如是否发货,以及发货情况)',
  `express_delivery_company` varchar(10) DEFAULT NULL COMMENT '快递公司',
  `address` varchar(20) DEFAULT NULL COMMENT '收货地址',
  `user_evaluation_grade` int(2) unsigned zerofill DEFAULT '03' COMMENT '用户评价',
  `user_evaluation_content` varchar(100) DEFAULT NULL COMMENT '用户评价内容',
  `user_id` varchar(10) DEFAULT NULL COMMENT '买家的id',
  `user_name` varchar(10) DEFAULT NULL COMMENT '买家的用户名',
  `order_payment_status` varchar(10) DEFAULT NULL COMMENT '订单的支付情况',
  `product_profit` double(10,2) DEFAULT NULL COMMENT '本订单的盈利',
  `trading_time` date DEFAULT NULL COMMENT '交易时间',
  PRIMARY KEY (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
这只是我对于该系统的初步数据库设计,当然还会有很多不足的地方,我会在业务逻辑的编写中进行不断的完善。

  • 6
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值