完整项目:网上图书商城(一、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配置文件中添加数据源就可以实现数据库增删改查,但是只能连接 ...
随机推荐
- c++ bitset——一个有趣的类型
转自:https://www.cnblogs.com/magisk/p/8809922.html 概况:一个最小可达1bit的特殊数据结构
- 「HNOI2016」矿区
https://loj.ac/problem/2052 题解 平面图转对偶图.. 首先我们转的话需要给所有的平面标号,然后找到每条边看看他们隔开了哪两个平面. 做法就是对每个点维护它的所有排好序的出边 ...
- Python 字典dict操作定义
字典是用大括号{ }来表示,它是python中最灵活的内置数据类型.它是一个无序的集合,通过键来存取值,而不能用索引. 字典的创建和使用 字典的组成:字典是由大括号{ }来包含其数据的,大括号内包含 ...
- 数据库为什么使用B+树而不是B树
B树和B+树的区别主要有两点: 在B树中,你可以将键和值存放在内部节点和叶子节点,但在B+树中,内部节点都是键,没有值.叶子节点同时存放键和值 B+树的叶子节点有一条链相连,而B+树的叶子节点各自独立 ...
- UltraISO(软碟通) 制作U盘启动盘
在使用之前我们先下载好UltraISO并安装完成. 打开软碟通,执行文件-->打开命令,找到下载好的ubuntu系统镜像文件 选择写入映象的U盘(U盘容量一定要大于镜像文件的容量),执行启动-- ...
- find查找特殊权限用法
find查找特殊权限的用法 find選項與參數: 3. 與檔案權限及名稱有關的參數: -name filename:搜尋檔案名稱為 filename 的檔案: -size [+-]SIZE:搜尋比 S ...
- 了解SELlinux
selinux是mac: mandatory access control. 强制访问控制. 是经过了20年的mac研究基础上开发的安全子系统. 访问控制分为三种: dac: di'scretiona ...
- linux中表示系统信息如cpu mem disk等内容都在 /proc
linux中表示系统信息的 内容都在 /proc 要查看系统的任何信息, 如cpu mem 磁盘等等, 都在 /proc下, 如: cpuinfo ,meminfo diskstatus 等等
- Visual Studio Code - 在 JS 源码(TS、压缩前代码)上使用断点
步骤: 在构建工具(webpack.gulp 等)的配置中开启生成 source map 将 VSCode 配置中的debug.allowBreakpointsEverywhere设置为true(重要 ...
- python-判断一个字符串是不是小数
''' 1.判断小数点个数是不是1 count 2.分割,判断小数点右边是不是整数 3.判断小数点左边 1.是整数is_digit 2.如果是负整数,按照'-'符号右边的是不会整数 ''' def i ...