SCAU2021数据库综合性实验报告
实验内容及完成情况:
一、 需求分析
设计一个简单的游戏数据库。可以为用户提供登录游戏、游戏充值、参与游戏活动的功能。并记录这些行为发生的数据。可以对这些数据进行查询、增加、修改、删除。并记录用户在游戏中产生的与游戏相关的数据,例如游戏角色等内容。
二、 概念设计——ER图
三、 逻辑设计——关系模式
四、 SQL代码
1、 建表
/1用户表/
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,`name` char(20),account char(20),money DOUBLE,`password` char(20),identity char(10),type char(10),`creat_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)engine = innodb,default charset utf8;
/*2游戏类型表*/
CREATE TABLE game_type(id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,`name` char(10),`creat_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)engine = innodb,default charset utf8;
/*3在线表*/
CREATE TABLE online(id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,`status` char(4),user_id INTEGER,game_id INTEGER,FOREIGN KEY(user_id) REFERENCES user (id)on DELETE set null on UPDATE CASCADE,FOREIGN KEY(game_id) REFERENCES game (id)on DELETE set null on UPDATE CASCADE,`creat_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)engine = innodb,default charset utf8;
/*4游戏表*/
CREATE TABLE game(id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,introduce char(40),type_id INTEGER ,`name` char(10),FOREIGN KEY(type_id) REFERENCES game_type (id)on DELETE set null on UPDATE CASCADE,`creat_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)engine = innodb,default charset utf8;
/*5活动表*/
CREATE TABLE activity(id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,`name` char(10),introduce char(40),game_id INTEGER,FOREIGN KEY(game_id) REFERENCES game (id)on DELETE set null on UPDATE CASCADE,`creat_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)engine = innodb,default charset utf8;
/*6用户道具表*/
CREATE TABLE user_props(id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,num INTEGER,user_id INTEGER,props_id INTEGER,
FOREIGN KEY(user_id) REFERENCES user (id)on DELETE set null on UPDATE CASCADE,
FOREIGN KEY(props_id) REFERENCES props (id)on DELETE set null on UPDATE CASCADE,`creat_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)engine = innodb,default charset utf8;
/*7道具表*/
CREATE TABLE props(id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,`function` char(20),/*功能*/`name` char(20),`how_get` char(20),`pay` char(20),game_id INTEGER,FOREIGN KEY(game_id) REFERENCES game (id)on DELETE set null on UPDATE CASCADE,`creat_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)engine = innodb,default charset utf8;
/*8用户数据表*/
CREATE TABLE user_data(id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,game_part INTEGER, /*游戏关卡*/recode DOUBLE, /*成绩记录*/user_id INTEGER,game_id INTEGER,FOREIGN KEY(user_id) REFERENCES user (id)on DELETE set null on UPDATE CASCADE,
FOREIGN KEY(game_id) REFERENCES game (id)on DELETE set null on UPDATE CASCADE,`creat_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)engine = innodb,default charset utf8;
/*9充值表*/
CREATE TABLE recharge(id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,money DOUBLE,user_id INTEGER,game_id INTEGER,FOREIGN KEY(user_id) REFERENCES user (id)on DELETE set null on UPDATE CASCADE,
FOREIGN KEY(game_id) REFERENCES game (id)on DELETE set null on UPDATE CASCADE,`creat_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)engine = innodb,default charset utf8;/*用户活动表*/CREATE TABLE user_activity(id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,user_id INTEGER,activity_id INTEGER UNSIGNED,FOREIGN KEY(user_id) REFERENCES `user` (id)on DELETE set null on UPDATE CASCADE,
FOREIGN KEY(activity_id) REFERENCES activity (id)on DELETE set null on UPDATE CASCADE,`creat_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)engine = innodb,default charset utf8;
2、 SQL查询
SELECT COUNT(*) login_num from `online` WHERE TO_DAYS(creat_time) = TO_DAYS(NOW());/*当天所有人的登录人数*/
SELECT COUNT(*) `online_num` FROM `online` WHERE `status` = 1 AND game_id = 1;/*当前游戏1的在线人数*/
SELECT sum(money) FROM recharge WHERE game_id = 1 AND TO_DAYS(creat_time) = TO_DAYS(NOW());/*游戏1当天的付款总额*/
SELECT `user`.type `类型`,COUNT(*) 数量 FROM `online`,`user` WHERE `user`.id = `online`.user_id AND TO_DAYS(`online`.creat_time) = TO_DAYS(NOW())GROUP BY `user`.type;/*付费与非付费的用户登录统计*/
SELECT COUNT(*) 人数 FROM user_activity,`online` WHERE `online`.user_id = user_activity.user_id AND `online`.game_id = 1;/*登录了游戏1且参与了活动*/
3、 存储过程和函数
/*用户充值函数*/
CREATE PROCEDURE charge(in cuser_id INTEGER,in cmoney DOUBLE,in cgame_id INTEGER)
DETERMINISTICBEGININSERT INTO recharge(user_id,money,game_id) VALUE (cuser_id,cmoney,cgame_id);UPDATE `user` set user.money = user.money + cmoney WHERE user.id = cuser_id;UPDATE `user` SET `user`.type = 1 WHERE `user`.id = cuser_id;/*充值后设为付费用户*/ENDCALL charge(2,100,1);/*查询给定用户的充值次数*/
CREATE PROCEDURE user_charge_time(in cuser_id INTEGER,out time INTEGER)BEGINSELECT COUNT(*) into time FROM recharge WHERE user_id = cuser_id;ENDCALL user_charge_time(1,@time);SELECT @time;
五、 测试结果
1、 创建语句测试结果:
成功创建
2、 查询语句测试结果:
当天登录游戏1的人数
游戏1的当前在线人数
用户1的充值总金额
1为充值用户,0为非充值用户
的统计结果。
当天登录了游戏A的并且参与了活动的人数
3、 存储过程函数测试结果:
调用充值函数:
充值记录:
用户记录:
测试成功,刚才第三个用户为非充值用户。
SCAU2021数据库综合性实验报告相关推荐
- 计算机文献检索综合性实验报告,文献检索综合性实验报告模板.doc
文献检索综合性实验报告模板 文献检索综合性实验报告 实验名称:文献综述课题多数据库检索 实验性质:综合性实验 实验学时:4 所属课程:文献检索 开设时间:2009年秋 授课班级:06动医1, 2, 3 ...
- mysql数据库原理实验报告_数据库原理实验报告(Mysql).doc
数据库原理实验报告(Mysql).doc 实验项目列表 序号实验项目名称指导教师1实验一 数据库的定义实验(验证性)2实验二 数据库的建立和维护实验(验证性)3实验三 数据库的查询实验(验证性)4实验 ...
- 文献综合报告 计算机类,计算机文献检索综合性实验报告.docx
文档介绍: 计算机文献检索综合性实验报告实验2访问校园网[实验目的]熟悉校园网及其拥有的信息资源,掌握校内数字资源的使用方法学时安排:2学时[实验内容]观看武汉工业学院校园网首页,图书馆首页,了解网站 ...
- c语言综合性实验数字益智游戏排行榜,C语言综合性实验报告1.doc
C语言综合性实验报告1.doc 华北科技学院计算机系综合性实验 实 验 报 告 课程名称 C程序设计 实验学期 至 学年 第 学期 学生所在系部 年级 专业班级 学生姓名 学号 任课教师 实验成绩 计 ...
- oracle数据库环境实验报告,《Oracle数据库》实验报告二
<<Oracle数据库>实验报告二>由会员分享,可在线阅读,更多相关<<Oracle数据库>实验报告二(5页珍藏版)>请在金锄头文库上搜索. 1.第 1 ...
- 华北科技c语言综合实验报告,C语言综合性实验报告1.doc
C语言综合性实验报告1.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档 ...
- 计算机网络实验思科实验报告,计算机网络思科综合性实验报告
软件学院综合性实验报告 专业年级/班级:12级软件学院 2013-2014学年第学1期 课程名称指导教师 学号姓名 实验地点实验时间 项目名称综合性实验实验类型综合性 一.实验目的 假设某校园网通过1 ...
- 程序设计语言c课程综合性实验报告,c语言综合性实验总结
华北科技学院计算机学院综合性实验 实 验 报 告 课程名称 程序设计语言(C) 实验学期 2011 至 2012 学年 第 二 学期 学生所在学院 建筑工程学院 年级 11级 专业班级 土木B112班 ...
- mysql的触发器实验报告_数据库原理实验报告s11-数据库触发器的创建.doc
数据库原理实验报告s11-数据库触发器的创建.doc 数据库管理系统SQLSERVER实验报告第1页2011年5月4日实验11数据库触发器的建立实验日期和时间20141128实验室软件工程室班级12计 ...
最新文章
- 20张图助你了解JVM运行时数据区,你还觉得枯燥吗?
- oracle分区表执行计划分区合并,利用ORACLE分区技术提高管理和性能_PART2
- 读德鲁克的《管理的实践》,我才明白,这些年,我错过了什么
- zabbix安装--LAMP环境下
- 什么是用户对计算机进行配置的重要工具,《计算机常用工具软件》试题1
- 机房收费--上机状态查询
- 圣母大学应用计算机数学统计,圣母大学(美国)应用、计算数学与统计学本科专业.pdf...
- 2015-03-18 - Deliberately pass a wrong note type for my task creation
- 关于各种JOIN连接的解释说明【原创】
- 如何让Visitor变得可爱1
- 安装Linux后windows在哪启动,在Linux下安装windows后解决Linux不能启动能问题
- 第二届构建之法论坛预告(草案)
- 逆序对java_逆序对
- 在scrapy中parse函数里面xpath的内容打印不出来_如何正确的使用Scrapy ?
- java mvc mvp_MVC和MVP设计模式
- 信息学奥赛一本通 1117:整数去重 | OpenJudge NOI 1.9 13
- 没想到你是这样的Nginx!
- 从0-1入门python爬虫,看这篇就够了!
- Modules Of YoloV5 Architecture
- 解决Odoo出现的Unable to send email, please configure the sender's email address or alias.
热门文章
- 疑难杂症:同网段ping不通,跨网段建不了链,怎么破?
- Python学习D-1
- HDU2099 整除的尾数
- GLES2.0中文API-glGetUniformLocation
- 计算机应用基础0039答案,计算机应用基础-0039(贵州电大-课程号:5205004)参考资料.docx...
- 亚信实习——初来乍到
- 在html页面插入flv播放器。ie火狐均可用
- 注意:近期QQ陌生人经常发送QQ文件名为“果冻.r22”等文件!大家千万别接收或打开!
- Thinkphp 表名下滑杠处理
- 如何myabtis使用注解对数据库进行操作呢?