完整项目:网上图书商城(一、MySQL数据库设计)未完
一、建立数据库
CREATE DATABASE IF NOT EXISTS bookshop CHARACTER utf8;
二、建立数据库表
1、建立用户表
#用户表(用户id号,用户名,用户密码,手机号,性别,注册日期,最近登录时间)
CREATE TABLE b_user(
uId int AUTO_INCREMENT PRIMARY KEY,
uName varchar(20) NOT NULL UNIQUE KEY,
uPwd varchar(20) NOT NULL,
uPhone char(11) NOT NULL,
uSex varchar(2) DEFAULT '男',
uRegistetime datatime,
uLastdate datatime
);
2、建立图书类型表
#图书类型(图书类型id号,图书类型名,图书简介)
create table b_booktype(
typeId int auto_increment primary key,
typeName varchar(50) not null,
typeNote text
);
3、建立图书信息表
#图书信息表(书id号,书类型id,书名,简介,作者,价格)
create table b_bookinfo(
bookId int auto_increment primary key,
bookTypeid int not null,
bookName varchar(50) not null,
bookNote text,
bookAuthor varchar(10) not null default '佚名',
bookMoney float(6,2) not null,
);
4、建立管理员表
#管理员表(管理员id号,账号,密码,权限等级)
create table b_manager(
aId int AUTO_INCREMENT PRIMARY KEY,
aName varchar(10) NOT NULL UNIQUE KEY,
aPwd varchar(20) NOT NULL,
aLevel int NOT NULL default ''
);
5、建立购物车表
#购物车表(购物车id,用户id,订单总数,订单总价格,是否支付,支付方式)
create table b_shoppingcart(
sId int auto_increment primary key,
uId int not null,
sOrdercount int not null,
sTotalprice float(8,2) not null,
sIspay varchar(6) default '未支付',
sPaymethod varchar(20) default '无',
CONSTRAINT chk_sIspay CHECK (sIspay in ('未支付','已支付'))
);
6、建立订单表
#订单表(订单id,用户id,书id号,订单日期,订单数量,订单价格,备注,收件人,地址,收件人手机号,订单状态)
create table b_order(
oId int auto_increment primary key,
uId int not null,
bookId int not null,
oDate datetime not null,
oNum int not null,
oPrice float(6,2) not null,
oMessage varchar(100),
oAddressee varchar(20) not null,
oAddress varchar(100) not null,
oPhone varchar(11) not null,
oStatus varchar(6) default '未完成',
CONSTRAINT chk_oStatus CHECK (sStatus in ('未完成','已完成'))
);
三、建立触发器
1、
#1、当用户表insert一条信息之后,将数据库当前时间赋值给注册日期和最近登录日期
DELIMITER //
CREATE TRIGGER user_time
BEFORE INSERT
ON b_user FOR EACH ROW
BEGIN
UPDATE b_user SET uRegistetime=NOW(),uLastdate=NOW() WHERE uId=new.uId;
END;
//
DELIMITER ;
2、
#2、当订单表中使用insert语句之后,将所有的书价乘以数量赋值给订单价格,再将所有同一个用户id的订单放入到购物车中。
delimiter //
create trigger order_numAndShoppingcart
before insert on b_order for each row
begin
declare sum int;
declare price float;
set price=(select bookMoney from b_bookinfo as bi where bi.bookId=new.bookId);
set sum=(select count(oId) from b_order as bo where bo.uId=new.uId);
update b_order set oPrice=price*new.oNum where uId=new.uId;
if (select uId from b_shoppingcart where uId=new.uId is null) then
insert b_shoppingcart(uId,sOrdercount,sTotalprice) values(new.uId,sum,price*new.oNum);
else
update b_shoppingcart set sOrdercount=sum,sTotalprice=sTotalprice+(price*new.oNum) where uId=new.uId;
end if;
end;
//
delimiter //
3、查看触发器
show triggers from bookshop;
四、存储过程
1、
完整项目:网上图书商城(一、MySQL数据库设计)未完的更多相关文章
- python_连接MySQL数据库(未完)
1.增 # 导入库 import pymysql # 创建连接 conn = pymysql.connect(host='localhost',user='root',password='fuqian ...
- JavaWeb网上图书商城完整项目--day02-4.regist页面提交表单时对所有输入框进行校验
1.现在我们要将table表中的输入的参数全部提交到后台进行校验,我们提交我们是按照表单的形式提交,所以我们首先需要在table表外面添加一个表单 <%@ page language=" ...
- JavaWeb网上图书商城完整项目--24.注册页面的css样式实现
现在框架已经做好了,即下来我们要对页面进行装饰了,第一步给每一个元素添加id 1.最外面的div添加id为divMain 2.第二个div添加id为divTitle,里面的span对应的id为span ...
- 基于SSH的网上图书商城-JavaWeb项目-有源码
开发工具:Myeclipse/Eclipse + MySQL + Tomcat 项目简介: 技术:Java:JSP:JDBC,struts2,spring,hibernate数据库: mysqlweb ...
- 仿联想商城laravel实战---1、仿联想商城需求和数据库设计(lavarel如何搭建项目)
仿联想商城laravel实战---1.仿联想商城需求和数据库设计(lavarel如何搭建项目) 一.总结 一句话总结: composer引入lavarel.配置域名.配置apache 1.项目名 le ...
- mySql 数据库设计原则
mysql数据库设计原则: 必须使用InnoDB存储引擎 解读:支持事务.行级锁.并发性能更好.CPU及内存缓存页优化使得资源利用率更高 禁止使用存储过程.视图.触发器.Event 解读:高并发大数据 ...
- mysql数据库设计规则总结
MySQL数据库设计总结 规则1:一般情况可以选择MyISAM存储引擎,如果需要事务支持必须使用InnoDB存储引擎. 注意:MyISAM存储引擎 B-tree索引有一个很大的限制:参与一个索引的 ...
- MySQL 数据库设计的“奥秘”
2 MySQL 数据库设计的"奥秘" [主题]逻辑设计:数据类型与 Schema 所谓"万丈高楼平地起",一个稳固的建筑离不开扎实的基础.同样,良好的的「逻辑设 ...
- MySQL数据库设计复习笔记及项目实战
最近手头上有3个项目开动,其他2个都是从底层开始的,一个已经开始了一段时间的了,在小城市小团队开发的条件下,都没有专门的DBA来做数据库的设计和维护,往往都是开发人员顶上,可是看了很多的数据库的设计, ...
- SSM项目实现连接两个mysql数据库
最近做项目需要用到另一个数据库的内容,多方查找终于实现了功能. 我们都知道,在SSM框架中,我们在applicationContext.xml配置文件中添加数据源就可以实现数据库增删改查,但是只能连接 ...
随机推荐
- UVALive 3958 Weird Numbers (负进制数)
Weird Numbers 题目链接: http://acm.hust.edu.cn/vjudge/contest/129733#problem/F Description Binary number ...
- loadrunner性能测试巧匠训练营-controller
1.设置集合点 现在脚本添加集合点的函数,集合点不能添加到事务里面,负责统计事务的时候会把时间计算进去 2.IP欺骗 前言 https://www.cnblogs.com/danbing/p/7459 ...
- android开源框架thinkinandroid相关研究
和命令相关的类有: TAICommand:接口文件,一个命令接口所有命令需要从此实现,还有以下几种方法: TACommandExecutor 命令的实现类,其中含有commands这个成员变量.大部分 ...
- linux 文件相关常用命令
文件或者目录操控命令 1,cd切换目录. 其中- 代表前一个目录 2,mkdir 新建目录. 加上-p参数可以递归创建多级目录 mkdir -p test1/test2/test3 3,rmdir删除 ...
- os.environ.get()的用法
os.environ.get()是python中os模块获取环境变量的一个方法 import os JS_ADDRESS = os.environ.get("PALM_JS_ADDRESS& ...
- Python爬虫数据保存到MongoDB中
MongoDB是一款由C++语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储方式类似于JSON对象,它的字段值可以是其它文档或数组,但其数据类型只能是String文本型. ...
- codeforces 722F - Cyclic Cipher
题目链接:http://codeforces.com/problemset/problem/722/F ------------------------------------------------ ...
- Non-local Neural Networks
1. 摘要 卷积和循环神经网络中的操作都是一次处理一个局部邻域,在这篇文章中,作者提出了一个非局部的操作来作为捕获远程依赖的通用模块. 受计算机视觉中经典的非局部均值方法启发,我们的非局部操作计算某一 ...
- pom.xml文件设置
一个相对完整的maven配置文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns= ...
- kafka consumer 自动提交 offset
org.apache.kafka.clients.consumer.KafkaConsumer#pollOnce private Map<TopicPartition, List<Cons ...