商城数据库表设计介绍

前言

  一个商城系统,需要有,用户表,商品表,商品分类表,购物车表,订单表,订单明细表,支付信息表,以及物流信息表。
  使用PowerDesigner对数据表以及他们之间的关系进行了粗略的设计得出了如下E-R图:

  

1.用户表

 

2. 商品表

 

3.商品类别表

4.购物车表

 

5. 订单表

6.订单明细表

 

7.支付信息表

 

 

8.收货信息表

 

SQL实例


SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for cart
-- ----------------------------
DROP TABLE IF EXISTS `cart`;
CREATE TABLE `cart` (
  `carid` varchar(64) NOT NULL,
  `userid` varchar(64) DEFAULT NULL COMMENT '用户表id',
  `proid` varchar(64) DEFAULT NULL COMMENT '商品id',
  `quantity` int(11) DEFAULT NULL COMMENT '数量',
  `checked` int(11) DEFAULT NULL COMMENT '是否选择,1=已勾选,0=未勾选',
  `createtime` datetime DEFAULT NULL COMMENT '创建时间',
  `updatetime` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`carid`),
  KEY `FK_Reference_2` (`userid`),
  KEY `FK_Reference_3` (`proid`),
  CONSTRAINT `FK_Reference_2` FOREIGN KEY (`userid`) REFERENCES `user` (`userid`),
  CONSTRAINT `FK_Reference_3` FOREIGN KEY (`proid`) REFERENCES `product` (`proid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of cart
-- ----------------------------

-- ----------------------------
-- Table structure for category
-- ----------------------------
DROP TABLE IF EXISTS `category`;
CREATE TABLE `category` (
  `cateid` varchar(64) NOT NULL COMMENT '类别Id',
  `parentid` varchar(64) DEFAULT NULL COMMENT '父类别id当id=0时说明是根节点,一级类别',
  `name` varchar(50) DEFAULT NULL COMMENT '类别名称',
  `status` int(1) DEFAULT '1' COMMENT '类别状态1-正常,2-已废弃',
  `sortorder` int(4) DEFAULT NULL COMMENT '排序编号,同类展示顺序,数值相等则自然排序',
  `createtime` datetime DEFAULT NULL COMMENT '创建时间',
  `updatetime` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`cateid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of category
-- ----------------------------

-- ----------------------------
-- Table structure for orderitem
-- ----------------------------
DROP TABLE IF EXISTS `orderitem`;
CREATE TABLE `orderitem` (
  `id` varchar(64) NOT NULL COMMENT '订单子表id',
  `orderid` varchar(64) DEFAULT NULL COMMENT '订单id',
  `userid` varchar(64) DEFAULT NULL COMMENT '用户表id',
  `proid` varchar(64) DEFAULT NULL COMMENT '商品id',
  `proname` varchar(100) DEFAULT NULL COMMENT '商品名称',
  `proimage` varchar(500) DEFAULT NULL COMMENT '商品图片地址',
  `currentunitprice` decimal(20,2) DEFAULT NULL COMMENT '生成订单时的商品单价,单位是元,保留两位小数',
  `quantity` int(10) DEFAULT NULL COMMENT '商品数量',
  `totalprice` decimal(20,2) DEFAULT NULL COMMENT '商品总价,单位是元,保留两位小数',
  `createtime` datetime DEFAULT NULL,
  `updatetime` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `FK_Reference_5` (`orderid`),
  KEY `FK_Reference_8` (`userid`),
  KEY `FK_Reference_9` (`proid`),
  CONSTRAINT `FK_Reference_5` FOREIGN KEY (`orderid`) REFERENCES `orders` (`orderid`),
  CONSTRAINT `FK_Reference_8` FOREIGN KEY (`userid`) REFERENCES `user` (`userid`),
  CONSTRAINT `FK_Reference_9` FOREIGN KEY (`proid`) REFERENCES `product` (`proid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of orderitem
-- ----------------------------

-- ----------------------------
-- Table structure for orders
-- ----------------------------
DROP TABLE IF EXISTS `orders`;
CREATE TABLE `orders` (
  `orderid` varchar(64) NOT NULL COMMENT '订单id',
  `userid` varchar(64) DEFAULT NULL COMMENT '用户id',
  `shoppingid` varchar(64) DEFAULT NULL,
  `payment` decimal(20,2) DEFAULT NULL COMMENT '实际付款金额,单位是元,保留两位小数',
  `paymenttype` int(4) DEFAULT NULL COMMENT '支付类型,1-在线支付',
  `postage` int(10) DEFAULT NULL COMMENT '运费,单位是元',
  `status` int(10) DEFAULT NULL COMMENT '订单状态:0-已取消-10-未付款,20-已付款,40-已发货,50-交易成功,60-交易关闭',
  `paymenttime` datetime DEFAULT NULL COMMENT '支付时间',
  `sendtime` datetime DEFAULT NULL COMMENT '发货时间',
  `endtime` datetime DEFAULT NULL COMMENT '交易完成时间',
  `closetime` datetime DEFAULT NULL COMMENT '交易关闭时间',
  `createtime` datetime DEFAULT NULL COMMENT '创建时间',
  `updatetime` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`orderid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of orders
-- ----------------------------

-- ----------------------------
-- Table structure for payinfo
-- ----------------------------
DROP TABLE IF EXISTS `payinfo`;
CREATE TABLE `payinfo` (
  `payid` varchar(64) NOT NULL,
  `orderid` varchar(64) DEFAULT NULL COMMENT '订单id',
  `userid` varchar(64) DEFAULT NULL COMMENT '用户表id',
  `payplatform` int(10) DEFAULT NULL COMMENT '支付平台:1-支付宝,2-微信',
  `platformnumber` varchar(200) DEFAULT NULL COMMENT '支付流水号',
  `platformstatus` varchar(20) DEFAULT NULL COMMENT '支付状态',
  `createtime` datetime DEFAULT NULL COMMENT '创建时间',
  `updatetime` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`payid`),
  KEY `FK_Reference_6` (`orderid`),
  KEY `FK_Reference_7` (`userid`),
  CONSTRAINT `FK_Reference_6` FOREIGN KEY (`orderid`) REFERENCES `orders` (`orderid`),
  CONSTRAINT `FK_Reference_7` FOREIGN KEY (`userid`) REFERENCES `user` (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of payinfo
-- ----------------------------

-- ----------------------------
-- Table structure for product
-- ----------------------------
DROP TABLE IF EXISTS `product`;
CREATE TABLE `product` (
  `proid` varchar(64) NOT NULL COMMENT '商品id',
  `cateid` varchar(64) DEFAULT NULL COMMENT '类别Id',
  `name` varchar(100) NOT NULL COMMENT '商品名称',
  `subtitle` varchar(200) DEFAULT NULL COMMENT '商品副标题',
  `mainimage` varchar(500) DEFAULT NULL COMMENT '产品主图,url相对地址',
  `subimages` 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-删除',
  `createtime` datetime DEFAULT NULL COMMENT '创建时间',
  `updatetime` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`proid`),
  KEY `FK_Reference_1` (`cateid`),
  CONSTRAINT `FK_Reference_1` FOREIGN KEY (`cateid`) REFERENCES `category` (`cateid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of product
-- ----------------------------

-- ----------------------------
-- Table structure for shopping
-- ----------------------------
DROP TABLE IF EXISTS `shopping`;
CREATE TABLE `shopping` (
  `shoppingid` varchar(64) NOT NULL,
  `userid` varchar(64) DEFAULT NULL COMMENT '用户表id',
  `orderid` varchar(64) DEFAULT NULL COMMENT '订单id',
  `receivername` varchar(20) DEFAULT NULL COMMENT '收货姓名',
  `receiverphone` varchar(20) DEFAULT NULL COMMENT '收货固定电话',
  `receivermobile` varchar(20) DEFAULT NULL COMMENT '收货移动电话',
  `receiverprovince` varchar(20) DEFAULT NULL COMMENT '省份',
  `receivercity` varchar(20) DEFAULT NULL COMMENT '城市',
  `receiverdistrict` varchar(20) DEFAULT NULL COMMENT '区/县',
  `receiveraddress` varchar(200) DEFAULT NULL COMMENT '详细地址',
  `createtime` datetime DEFAULT NULL,
  `updatetime` datetime DEFAULT NULL,
  PRIMARY KEY (`shoppingid`),
  KEY `FK_Reference_10` (`orderid`),
  KEY `FK_Reference_4` (`userid`),
  CONSTRAINT `FK_Reference_10` FOREIGN KEY (`orderid`) REFERENCES `orders` (`orderid`),
  CONSTRAINT `FK_Reference_4` FOREIGN KEY (`userid`) REFERENCES `user` (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of shopping
-- ----------------------------

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `userid` varchar(64) NOT NULL COMMENT '用户表id',
  `username` varchar(50) NOT NULL COMMENT '用户名',
  `password` varchar(50) NOT NULL COMMENT '用户密码,MD5加密',
  `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-普通用户',
  `createtime` datetime NOT NULL COMMENT '创建时间',
  `updatetime` datetime NOT NULL COMMENT '更新时间',
  PRIMARY KEY (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user
-- ----------------------------

 

### 购物商城管理系统的实体关系图 (E-R 图) 对于购物商城管理系统而言,构建合理的实体关系图(E-R图)是数据库设计的重要环节之一。通过定义系统内的主要实体及其相互之间的联系,可以有效地支持后续的数据存储与处理需求。 #### 主要实体 1. **用户(User)** 用户表记录了所有注册用户的个人信息,包括但不限于用户名、密码哈希值、电子邮件地址以及联系方式等基本信息。 2. **订单(Order)** 订单表保存着每次交易的具体详情,如订单编号(order_no),客户编号(customer_no),下单日期(order_date),产品编号(product_no),单价(price)等内容[^1]。 3. **商品(Product)** 商品表包含了商城内销售的各种产品的详细资料,例如名称(name), 描述(description), 库存数量(stock_quantity), 单价(unit_price)等字段。 4. **分类(Category)** 分类表用来表示不同种类的商品类别,有助于更好地管理和展示商品信息。每个商品都属于某一特定的分类。 5. **评论(Review)** 评论表收集顾客对已购买商品的意见反馈,通常会关联到具体的商品和发表评论的用户。 6. **管理员(Admin)** 管理员账户拥有更高的权限,能够执行诸如添加新商品、编辑现有条目或是删除不适当的内容等功能[^4]。 7. **支付(Payment)** 支付表记录了每笔付款的信息,比如使用的支付方式(payment_method),金额(amount),时间戳(timestamp)等。 8. **配送(Delivery)** 配送表跟踪货物运输的状态更新,包含预计送达日期(expected_delivery_date),实际送达日期(actual_delivery_date),物流单号(tracking_number)等相关属性。 #### 关系说明 - 用户与订单之间存在一对多的关系,即一名用户可能会创建多个订单; - 订单与商品间形成多对多的关系,因为一笔订单可能涉及多种不同的商品;而同一件商品也可能出现在许多不同的订单之中; - 商品与其所属的分类建立了一种多对一的关系; - 用户也可以针对某个具体的产品发布一条或多条评论,因此二者构成了一对多的关系; - 管理员则具有对整个平台上的资源进行全面控制的能力,这体现在其与其他各个实体间的复杂交互上; - 每个订单仅对应一次支付行为,故两者呈现一对一的关系; - 同样地,每一个成功的订单都会触发相应的配送过程,所以订单与配送也是一对一的关系。 ```mermaid erDiagram USER ||--o{ ORDER : places ORDER }|..|{ PRODUCT : contains CATEGORY ||--o{ PRODUCT : categorizes USER ||--o{ REVIEW : writes ADMIN }|--|| MANAGE : manages ORDER ||--|| PAYMENT : pays_with ORDER ||--|| DELIVERY : ships_via ``` 上述ER图展示了购物商城管理系统中各核心组件之间的基本结构及它们如何互相连接互动。值得注意的是,在实际应用过程中还需要考虑更多细节因素,例如安全性措施、性能优化策略等方面的要求。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lansonli

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值