实验内容及完成情况:
一、 需求分析
设计一个简单的游戏数据库。可以为用户提供登录游戏、游戏充值、参与游戏活动的功能。并记录这些行为发生的数据。可以对这些数据进行查询、增加、修改、删除。并记录用户在游戏中产生的与游戏相关的数据,例如游戏角色等内容。
二、 概念设计——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数据库综合性实验报告相关推荐

  1. 计算机文献检索综合性实验报告,文献检索综合性实验报告模板.doc

    文献检索综合性实验报告模板 文献检索综合性实验报告 实验名称:文献综述课题多数据库检索 实验性质:综合性实验 实验学时:4 所属课程:文献检索 开设时间:2009年秋 授课班级:06动医1, 2, 3 ...

  2. mysql数据库原理实验报告_数据库原理实验报告(Mysql).doc

    数据库原理实验报告(Mysql).doc 实验项目列表 序号实验项目名称指导教师1实验一 数据库的定义实验(验证性)2实验二 数据库的建立和维护实验(验证性)3实验三 数据库的查询实验(验证性)4实验 ...

  3. 文献综合报告 计算机类,计算机文献检索综合性实验报告.docx

    文档介绍: 计算机文献检索综合性实验报告实验2访问校园网[实验目的]熟悉校园网及其拥有的信息资源,掌握校内数字资源的使用方法学时安排:2学时[实验内容]观看武汉工业学院校园网首页,图书馆首页,了解网站 ...

  4. c语言综合性实验数字益智游戏排行榜,C语言综合性实验报告1.doc

    C语言综合性实验报告1.doc 华北科技学院计算机系综合性实验 实 验 报 告 课程名称 C程序设计 实验学期 至 学年 第 学期 学生所在系部 年级 专业班级 学生姓名 学号 任课教师 实验成绩 计 ...

  5. oracle数据库环境实验报告,《Oracle数据库》实验报告二

    <<Oracle数据库>实验报告二>由会员分享,可在线阅读,更多相关<<Oracle数据库>实验报告二(5页珍藏版)>请在金锄头文库上搜索. 1.第 1 ...

  6. 华北科技c语言综合实验报告,C语言综合性实验报告1.doc

    C语言综合性实验报告1.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档 ...

  7. 计算机网络实验思科实验报告,计算机网络思科综合性实验报告

    软件学院综合性实验报告 专业年级/班级:12级软件学院 2013-2014学年第学1期 课程名称指导教师 学号姓名 实验地点实验时间 项目名称综合性实验实验类型综合性 一.实验目的 假设某校园网通过1 ...

  8. 程序设计语言c课程综合性实验报告,c语言综合性实验总结

    华北科技学院计算机学院综合性实验 实 验 报 告 课程名称 程序设计语言(C) 实验学期 2011 至 2012 学年 第 二 学期 学生所在学院 建筑工程学院 年级 11级 专业班级 土木B112班 ...

  9. mysql的触发器实验报告_数据库原理实验报告s11-数据库触发器的创建.doc

    数据库原理实验报告s11-数据库触发器的创建.doc 数据库管理系统SQLSERVER实验报告第1页2011年5月4日实验11数据库触发器的建立实验日期和时间20141128实验室软件工程室班级12计 ...

最新文章

  1. 20张图助你了解JVM运行时数据区,你还觉得枯燥吗?
  2. oracle分区表执行计划分区合并,利用ORACLE分区技术提高管理和性能_PART2
  3. 读德鲁克的《管理的实践》,我才明白,这些年,我错过了什么
  4. zabbix安装--LAMP环境下
  5. 什么是用户对计算机进行配置的重要工具,《计算机常用工具软件》试题1
  6. 机房收费--上机状态查询
  7. 圣母大学应用计算机数学统计,圣母大学(美国)应用、计算数学与统计学本科专业.pdf...
  8. 2015-03-18 - Deliberately pass a wrong note type for my task creation
  9. 关于各种JOIN连接的解释说明【原创】
  10. 如何让Visitor变得可爱1
  11. 安装Linux后windows在哪启动,在Linux下安装windows后解决Linux不能启动能问题
  12. 第二届构建之法论坛预告(草案)
  13. 逆序对java_逆序对
  14. 在scrapy中parse函数里面xpath的内容打印不出来_如何正确的使用Scrapy ?
  15. java mvc mvp_MVC和MVP设计模式
  16. 信息学奥赛一本通 1117:整数去重 | OpenJudge NOI 1.9 13
  17. 没想到你是这样的Nginx!
  18. 从0-1入门python爬虫,看这篇就够了!
  19. Modules Of YoloV5 Architecture
  20. 解决Odoo出现的Unable to send email, please configure the sender's email address or alias.

热门文章

  1. 疑难杂症:同网段ping不通,跨网段建不了链,怎么破?
  2. Python学习D-1
  3. HDU2099 整除的尾数
  4. GLES2.0中文API-glGetUniformLocation
  5. 计算机应用基础0039答案,计算机应用基础-0039(贵州电大-课程号:5205004)参考资料.docx...
  6. 亚信实习——初来乍到
  7. 在html页面插入flv播放器。ie火狐均可用
  8. 注意:近期QQ陌生人经常发送QQ文件名为“果冻.r22”等文件!大家千万别接收或打开!
  9. Thinkphp 表名下滑杠处理
  10. 如何myabtis使用注解对数据库进行操作呢?