数据库课程设计(游戏管理系统的设计与实现)

一、系统需求分析

1.1数据需求

  1. 厂商管理:厂商作为游戏发布者,每个厂商可以关联多款游戏。
  2. 游戏信息:游戏包含核心属性,如游戏名称、厂商、发售日期、价格、版本、类型、用户评价、打折信息和拓展内容(如音乐包、资源、角色等)。
  3. 拓展内容管理:厂商直接管理游戏的附加内容,可更新或修复。
  4. 用户系统:用户可以拥有游戏库,可以对游戏进行评价和评分。
  5. 社交功能:用户能通过好友系统发现新游戏,查看好友的游戏库。

1.2功能需求

游戏管理系统功能模拟图

  1. 注册模块:
  • 用户注册:为用户定制的注册流程,确保用户账户的创建并创建空的游戏库。
  • 厂商注册:为游戏发行商定制的注册流程,简化游戏上架过程。
  1. 游戏管理:
  • 游戏上架:允许厂商将新游戏提交至管理系统,以创建游戏条目。
  • 游戏下架:允许厂商将有技术问题的游戏进行下架,同时会删除当前游戏的评分等一系列内容。
  • 游戏更新:允许更新游戏信息,包括版本升级和内容更新(例如修复bug、增加新内容)。
  1. 评分与统计:
  • 游戏评分:计算并显示游戏的平均用户评分。
  • 游戏排名:
    • 综合排名:根据综合评分对所有游戏进行排名。
    • 分类排名:按游戏类型进行排名,并提供筛选功能,方便用户查看。
  1. 搜索与发现(用户):
  • 游戏搜索:
    • 用户可以通过输入游戏名称来进行搜索,并查看详细信息。
    • 用户可以通过游戏主页入库游戏,并在库中给游戏进行评价。
  • 排行榜:展示总排行榜和分类排行榜,助力用户发现热门及高评分的游戏。
  1. 购买与退款:
  • 购买游戏:用户可以通过在游戏主页购买游戏,将游戏添加到自己的游戏库。(由于没有购买服务器以及备案,无法真正实现消费功能,所以点击购买即视为成功购买入库)
  • 退款:用户可以在自己的游戏库中选定游戏进行退款申请。申请通过后将从游戏库中移除该游戏的数据。
  1. 社交互动:
  • 好友系统:用户能够通过搜索好友ID来发送好友请求,从而拓展其社交网络,也可以通过好友的游戏库查看好友对游戏的评价,寻找新的游戏入库。

二、概念结构设计

2.1数据库需求分析

  • 厂商:厂商id,密码,注册日期。
  • 用户:用户id,密码,注册日期。
  • 游戏:游戏id,类型,玩法,发售日期,配置要求。
  • 厂商发布游戏列表:厂商id,游戏id,发售日期,是否新增内容。
  • 用户关注厂商列表:用户id,厂商id。
  • 用户游戏列表:用户id,游戏id,购买日期,游戏时长。
  • 用户订单表:订单id,用户id,游戏id,操作日期,具体操作(0退款/1购买)。
  • 游戏评价列表:游戏id,用户id,评价日期,评分,评论。
  • 好友:用户id,好友(用户)id。

2.2E-R图

在这里插入图片描述

三、逻辑结构数据

3.1E-R图转换关系模式

  • 游戏厂商:(厂商编号,简介,账号,密码)
  • 游戏:(游戏编号,厂商编号,游戏名称,游戏简介,售价,发布日期)
  • 游戏类型:(游戏编号,类型名称)
  • 类型表:(类型名称,类型好感度)
  • 厂商游戏库:(厂商编号,游戏编号)
  • 用户:(用户编号,账号,密码)
  • 用户游戏库:(用户编号,游戏编号,购买日期,游戏时长)
  • 好友列表:(用户编号,好友用户编号)
  • 用户关注厂商表():(用户编号,厂商编号)
  • 订单表:(用户编号,游戏编号,购买状态,订单时间)
  • 评价表:(用户编号,游戏编号,评价,评分,发布日期)

3.2数据表设计

3.2.1游戏厂商表

字段名称数据类型长度约束备注
MANUFACTURER_IDchar10主键厂商编号
MANUFACTURER_INTRODUCTIONchar100非空简介
MANUFACTURER_ACCOUNT_NUMBERvarchar15非空账号
MANUFACTURER_PASSWORDvarchar15非空密码
CREATE TABLE MANUFACTURER(
    ID CHAR(10) PRIMARY KEY COMMENT'厂商编号',
    INTRODUCTION CHAR(100) COMMENT'简介',
    ACCOUNT_NUMBER VARCHAR(15)UNIQUE NOT NULL DEFAULT(CONCAT('MANUFACTURER',ID)) COMMENT'账号',
    PASSWORD VARCHAR(15) NOT NULL DEFAULT('123456') COMMENT'密码',
    CONSTRAINT check_id_start_with_m CHECK (ID REGEXP '^M')
);

3.2.2游戏表

字段名称数据类型长度约束备注
GAME_IDchar10主键游戏编号
MANUFACTURER_IDchar10外键厂商编号
GAME_NAMEchar10外键游戏名称
GAME_INTRODUCTIONvarchar100非空游戏简介
PRICEreal4非空售价
PUBLISH_TIMEdate8非空发布日期
CREATE TABLE GAME(
    ID CHAR(10) PRIMARY KEY COMMENT'游戏编号',
    GAME_NAME CHAR(10) NOT NULL COMMENT'游戏名',
    MANUFACTURER_ID CHAR(10) COMMENT'厂商编号',
    INTRODUCTION VARCHAR(100) COMMENT'游戏简介',
    PRICE REAL NOT NULL DEFAULT(1) COMMENT'售价',
    PUBLISH_TIME DATE NOT NULL DEFAULT('1979-10-01') COMMENT'发布日期',
    FOREIGN KEY(MANUFACTURER_ID) REFERENCES MANUFACTURER(ID) ON DELETE CASCADE ON UPDATE CASCADE,
    CONSTRAINT check_id_start_with_g CHECK (ID REGEXP '^G')
);

3.2.3游戏类型表

字段名称数据类型长度约束备注
GAME_IDchar10主键/外键游戏编号
TYPE_NAMEchar10主键/外键类型名称
CREATE TABLE GAME_TO_TYPE(
    GAME_ID CHAR(10) COMMENT'游戏编号',
    TYPE_NAME CHAR(10) COMMENT'类型名',
    FOREIGN KEY(GAME_ID) REFERENCES GAME(ID) ON DELETE CASCADE ON UPDATE CASCADE,
    FOREIGN KEY(TYPE_NAME) REFERENCES GAME_TYPE(TYPE_NAME) ON DELETE CASCADE ON UPDATE CASCADE
);

3.2.4类型表

字段名称数据类型长度约束备注
TYPE_NAMEchar10主键/外键类型名称
TYPE_SUPPORTint10非空类型好感度
CREATE TABLE GAME_TYPE(
    TYPE_NAME CHAR(10) COMMENT'类型',
    TYPE_SUPPORT INT COMMENT'类型的欢迎度',
    PRIMARY KEY(TYPE_NAME)
);

3.2.5厂商发布游戏表

字段名称数据类型长度约束备注
MANUFACTURER_IDchar10主键厂商编号
GAME_IDchar10外键游戏编号
CREATE TABLE PUBLISH_GAME(
    MANUFACTURER_ID CHAR(10) COMMENT"厂商的编号",
    GAME_ID CHAR(10) COMMENT'游戏的编号',
    PRIMARY KEY(MANUFACTURER_ID,GAME_ID),
    FOREIGN KEY(MANUFACTURER_ID) REFERENCES MANUFACTURER(ID) ON DELETE CASCADE ON UPDATE CASCADE,
    FOREIGN KEY(GAME_ID) REFERENCES GAME(ID) ON DELETE CASCADE ON UPDATE CASCADE
)COMMENT'发布的游戏表';

3.2.6用户表

字段名称数据类型长度约束备注
USER_IDchar10主键用户编号
USER_ACCOUNT_NUMBERvarchar15非空账号
USER_PASSWORDvarchar15非空密码
CREATE TABLE USER(
    ID CHAR(10) PRIMARY KEY COMMENT'用户编号',
    ACCOUNT_NUMBER VARCHAR(15)UNIQUE NOT NULL DEFAULT(CONCAT('MANUFACTURER',ID)) COMMENT'账号',
    PASSWORD VARCHAR(15) NOT NULL DEFAULT('123456') COMMENT'密码',
    CONSTRAINT check_id_start_with_u CHECK (ID REGEXP '^U')
)COMMENT'用户表';

3.2.7用户游戏表

字段名称数据类型长度约束备注
USER_IDchar10主键用户编号
GAME_IDchar10主键/外键游戏编号
BUY_TIMEdate8非空购买日期
PLAY_TIMEreal4非空游戏时长
CREATE TABLE HAVING_GAMES(
    USER_ID CHAR(10) COMMENT'用户编号',
    GAME_ID CHAR(10) COMMENT'游戏编号',
    BUY_TIME DATE NOT NULL DEFAULT('1979-10-01') COMMENT'购买日期',
    PLAY_TIME REAL NOT NULL DEFAULT(0) COMMENT'游戏时长',
    PRIMARY KEY(USER_ID,GAME_ID),
    FOREIGN KEY(USER_ID) REFERENCES USER(ID) ON DELETE CASCADE ON UPDATE CASCADE,
    FOREIGN KEY(GAME_ID) REFERENCES GAME(ID) ON DELETE CASCADE ON UPDATE CASCADE
)COMMENT'拥有的游戏表';

3.2.8用户好友表

字段名称数据类型长度约束备注
USER_IDchar10主键用户编号
FRIEND_IDchar10外键好友编号
CREATE TABLE FRIEND(
    ID CHAR(10) COMMENT'好友的编号',
    USER_ID CHAR(10) COMMENT'用户的编号',
    PRIMARY KEY(ID,USER_ID),
    FOREIGN KEY(USER_ID) REFERENCES USER(ID) ON DELETE CASCADE ON UPDATE CASCADE
)COMMENT'好友表';

3.2.9用户关注厂商表

字段名称数据类型长度约束备注
USER_IDchar10主键用户编号
MANUFACTURER_IDchar10外键厂商编号
CREATE TABLE CONCERN(
    USER_ID CHAR(10) COMMENT'用户的编号',
    MANUFACTURER_ID CHAR(10) COMMENT'厂商的编号',
    PRIMARY KEY(USER_ID,MANUFACTURER_ID),
    FOREIGN KEY(USER_ID) REFERENCES USER(ID) ON DELETE CASCADE ON UPDATE CASCADE,
    FOREIGN KEY(MANUFACTURER_ID) REFERENCES MANUFACTURER(ID) ON DELETE CASCADE ON UPDATE CASCADE
)COMMENT'关注表';

3.2.10订单表

字段名称数据类型长度约束备注
USER_IDchar10主键用户编号
GAME_IDchar10主键/外键游戏编号
STATEint1非空状态
ORDER_DATEdate8非空订单日期
CREATE TABLE ORDER_FOR_GOODS(
    USER_ID CHAR(10) COMMENT'用户的编号',
    GAME_ID CHAR(10) COMMENT'游戏的编号',
    BUY_OR_REFUND BOOLEAN COMMENT'购买或者退款,0退款,1购买',
    ORDER_TIME DATE NOT NULL DEFAULT('1979-10-01'),
    PRIMARY KEY(USER_ID,GAME_ID),
    FOREIGN KEY(USER_ID) REFERENCES USER(ID) ON DELETE CASCADE ON UPDATE CASCADE,
    FOREIGN KEY(GAME_ID) REFERENCES GAME(ID) ON DELETE CASCADE ON UPDATE CASCADE
)COMMENT'订单表';

3.2.11评价表

字段名称数据类型长度约束备注
USER_IDchar10主键用户编号
GAME_IDchar10主键/外键游戏编号
EVALUATEtext65535非空评价
SCOREreal4非空评分
EVALUATE_DATEdate8非空发布日期
CREATE TABLE EVALUATETABLE(
    USER_ID CHAR(10),
    GAME_ID CHAR(10),
    EVALUATE VARCHAR(100) COMMENT'评价',
    EVALUATE_DATE DATE NOT NULL DEFAULT('1979-10-01') COMMENT'发布日期',
    SCORE REAL NOT NULL DEFAULT(5) COMMENT'评分',
    PRIMARY KEY(USER_ID,GAME_ID),
    FOREIGN KEY(USER_ID) REFERENCES USER(ID) ON DELETE CASCADE ON UPDATE CASCADE,
    FOREIGN KEY(GAME_ID) REFERENCES GAME(ID) ON DELETE CASCADE ON UPDATE CASCADE
)COMMENT'评价表';

3.3数据插入

3.3.1厂商数据添加

INSERT INTO MANUFACTURER(ID,INTRODUCTION,ACCOUNT_NUMBER,PASSWORD) VALUES
    ('M001','','米哈游','001'),
    ('M002','','鹰角','002'),
    ('M003','','通讯','003');

3.3.2用户数据添加

INSERT INTO USER(ID,ACCOUNT_NUMBER,PASSWORD) VALUES
    ('U001','USER001','001'),
    ('U002','USER002','002'),
    ('U003','USER003','003');

3.3.3游戏数据添加

INSERT INTO GAME(ID,GAME_NAME,MANUFACTURER_ID,INTRODUCTION,PRICE) VALUES
    ('G001','原神','M001','',50),
    ('G002','明日方舟','M002','',12.9),
    ('G003','星之破晓','M003','',10);

3.3.5用户游戏表数据添加

INSERT INTO HAVING_GAMES(USER_ID,GAME_ID,BUY_TIME,PLAY_TIME) VALUES
    ('U001','G001','2001-01-01',100),
    ('U002','G002','2002-02-02',2000),
    ('U003','G003','2003-03-03',1000);

3.3.6厂商游戏表数据添加

INSERT INTO PUBLISH_GAME(MANUFACTURER_ID,GAME_ID) VALUES
    ('M001','G001'),
    ('M002','G002'),
    ('M003','G003');

3.3.7用户好友表数据添加

INSERT INTO FRIEND(USER_ID,ID) VALUES
    ('U001','U002'),
    ('U001','U003'),
    ('U002','U001'),
    ('U002','U003'),
    ('U003','U001'),
    ('U003','U002');

3.3.8用户关注厂商表数据添加

INSERT INTO concern(USER_ID,MANUFACTURER_ID) VALUES
    ('U001','M001'),
    ('U002','M002'),
    ('U003','M003');

3.3.9订单表数据添加

INSERT INTO EVALUATETABLE(USER_ID,GAME_ID,EVALUATE,EVALUATE_DATE,SCORE) VALUES
    ('U001','G001','','2001-01-01',5),
    ('U002','G002','','2002-02-02',3),
    ('U003','G003','','2003-03-03',4);

3.3.10类型表添加


INSERT INTO GAME_TYPE(TYPE_NAME,TYPE_SUPPORT) VALUES
    ('RPG',5),
    ('二次元',9999),
    ('肉鸽',5);

3.3.4游戏类型表添加

INSERT INTO GAME_TO_TYPE(GAME_ID,TYPE_NAME) VALUES
    ('G001','RPG'),
    ('G002','肉鸽'),
    ('G002','二次元'),
    ('G002','肉鸽');
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle和Eclipse都是非常流行的编程工具。Oracle是一种强大的关系数据库管理系统,而Eclipse是一种开源的集成开发环境。通过使用Oracle和Eclipse,设计一个编程课程可以变得更加容易和高效。 在设计编程课程时,Oracle可以被用来创建和管理数据库。学生可以通过使用Oracle来学习关系数据库的概念和技术,包括表格设计、查询、插入、更新和删除数据。学生可以通过编写自己的SQL代码来练习这些技术,并在Oracle中验证他们的代码是否正确,这将使他们更好地掌握数据库管理技术。 与此同时,Eclipse可以被用来编写不同类型的代码,例如Java、C++或Python等。它具有一个强大的代码编辑器和调试器,使得学生可以轻松地编写和调试代码。学生可以在Eclipse中编写Web应用程序、桌面应用程序、游戏和其他各种软件,从而拓宽他们的编程技能。 最后,通过将Oracle和Eclipse结合使用,学生可以创建高度可扩展的应用程序,这将使他们具有更深入的应用程序开发经验。例如,学生可以使用Eclipse编写Java代码,并使用Oracle作为后端数据库,以创建一个Java Web应用程序。这将使他们具备开发完整、面向生产的应用程序的能力。 总之,Oracle和Eclipse是两个非常有用的工具,它们可以用来创建和管理数据库、编写代码和开发高度可扩展的应用程序。通过将它们结合使用,可以设计出一套完整的编程课程,从而使学生获得广泛的编程技能和经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值