图书商城【3】

建议大家做这个项目之前,先看一下项目的演示,将功能及逻辑理清楚。
因为已经有了清晰的逻辑结构,我们首先来设计数据库,在设计数据库时,我们先讲出都需要哪些表。然后再细讲每一张表里的列名都需要哪些。
首先作为一个较为完整的商城项目,产品表(products)是必不可少是,我们要购物,就必须要有用户表(users),当我们购物时,订单(orders)功能就必不可少,当处理订单时,我们还需要处理 订单与产品的关系,这时就需要一张订单条目表(orderitem)表。因为之前就讲过商城需要有不同的权限,所以一张角色表(role)和权限表(privileges)及角色权限表(userprivilege)也是必不可少。至此问你将所有的表都设计了出来。
接下来我们说一下每张表里的列名都要怎么样设计。
首先是products表,一个产品肯定要有它的id,name,price,category(类别),pnum(产品数),description(描述),然后我们想到这是一个商城项目,一定要有它的imgurl。
建表语句为:
   
CREATE TABLE `products` (
  `id` varchar(100) NOT NULL,
  `name` varchar(40) DEFAULT NULL,
  `price` double DEFAULT NULL,
  `category` varchar(40) DEFAULT NULL,
  `pnum` int(11) DEFAULT NULL,
  `imgurl` varchar(100) DEFAULT NULL,
  `description` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
然后就是users表,作为一个用户表,id,name,password,nickname(昵称)一定是必不可少的。然后我们再细想一下,注册的时候是不是要进行一个email或者手机短信的激活操作,激活时候是不是都要发送一个激活链接或者验证码。还要根据user的role不同, privilege也不同。这时,我们就需要再加入email,activecode(激活码),state(是否激活),role,updatetime列。
建表语句为:
   
CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(40) DEFAULT NULL,
  `password` varchar(100) DEFAULT NULL,
  `nickname` varchar(40) DEFAULT NULL,
  `email` varchar(100) DEFAULT NULL,
  `role` varchar(100) DEFAULT NULL,
  `state` int(11) DEFAULT NULL,
  `activecode` varchar(100) DEFAULT NULL,
  `updatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `role` (`role`),
  CONSTRAINT `users_ibfk_1` FOREIGN KEY (`role`) REFERENCES `role` (`role`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
然后我们开始设计orders表,在一个订单里,id,money,receiverinfo(购买方)是不可少的,然后我们细想一下功能需求和业务逻辑,很容易想到payseate(支付状态),ordertime,user_id也必不可少。
建表语句为:
   
CREATE TABLE `orders` (
  `id` varchar(100) NOT NULL,
  `money` double DEFAULT NULL,
  `receiverinfo` varchar(255) DEFAULT NULL,
  `paystate` int(11) DEFAULT NULL,
  `ordertime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `user_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`),
  CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
接下来设计订单条目标,实在是不知道该怎么样介绍这张表,只好起了这样一个怪怪的名字,因为这张表在用户哪里的存在感并不是很强,但是对于后台来说却是必不可少的,它需要有order_id,product_id,buynum,它的用途就是当提交订单后,产品数量要有变化(一般是减少),关系一般为:现产品数量=原产品数量-用户购买数量。这部分比较抽象,但也算很容易理解。
建表语句为:
CREATE TABLE `privileges` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8
接下来就是role表、privileges表和userprivilege表,这个项目里我们只设置两种role:admin、user(游客忽略),四种权限:1.添加商品、2.查看订单、3.生成订单、4.下载榜单,其中admin享有全部权限并且可查看所有订单项,user在关键权限里只能查看自己的订单及生成订单,而游客则只能查看产品信息,可以说没有关键权限。
建表语句分别为:
CREATE TABLE `role` (
  `role` varchar(100) NOT NULL,
  PRIMARY KEY (`role`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

CREATE TABLE `privileges` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8

CREATE TABLE `userprivilege` (
  `privilege_id` int(11) NOT NULL DEFAULT '0',
  `role` varchar(100) NOT NULL DEFAULT '',
  PRIMARY KEY (`privilege_id`,`role`),
  KEY `userprivilege` (`role`),
  CONSTRAINT `userprivilege_ibfk_1` FOREIGN KEY (`privilege_id`) REFERENCES 									`privileges` (`id`),
  CONSTRAINT `userprivilege_ibfk_2` FOREIGN KEY (`role`) REFERENCES `role` (`role`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
这样,我们的数据库就设计完成。
因为主要拿这个项目练习后台,所以并不会设计太多的前端代码,特此将jsp、css、js、image文件先全部导入我们项目下的WebRoot里


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值