本科生事务管理系统数据库的设计与部分实现

本文详细介绍了本科生事务管理系统数据库的设计与部分实现,包括MySQL概述、系统需求分析、概念设计、逻辑设计和物理设计。重点阐述了MySQL的安全机制、备份与恢复策略,并详细解析了学工部、团委、教务处、宿管科等功能模块的需求,以及相关表的逻辑设计和视图创建。此外,还探讨了基于3NF的材料、产品和仓库管理系统的数据库逻辑设计。
摘要由CSDN通过智能技术生成

本科生事务管理系统数据库的设计与部分实现

第一部分 主流数据库管理系统MySQL概述

1.1 所支持的编程接口或编程语言

  为了方便应用程序的开发,MySQL提供了用C编程语言编写的客户机库,它允许从任何C程序的内部访问MySQL数据库。客户机库实现应用程序接口(API),API定义客户机程序如何建立和执行与服务器的通信。然而,使用C语言来编写MySQL程序并不受限制。许多其他语言处理器本身也是由C语言编写的,或具有是有C库的能力。所以MySQL客户机库提供了这个方法,由此,MySQL对这些语言的约束可以建立在C API的上面。这就为与MySQL服务器通信而编写应用程序提供了许多选择。客户机程序的API是用Perl、PHP、Java、Python、C++、TCL和其他一些语言编写的。

1.2 数据字典(或元数据)的组织管理方式、主要内容和查询方法

  MySQL与其它的数据库一样,需要一个储存元数据的地方。在MySQL8之前,它们以各种文件的形式保存在不同的地方,例如FRM,TRG,TR等等。随着时间的推移,这些文件逐渐成为了各种环境中的瓶颈。MySQL8推出了支持事务的数据字典。
  描述数据库的任何数据—作为数据库内容的对立面—是元数据。因此,列名、数据库名、用户名、版本名以及从SHOW语句得到的结果中的大部分字符串是元数据。还包括INFORMATION_SCHEMA数据库中的表中的内容,因为定义的那些表存储关于数据库对象的信息。
  查询方法:各种show,各种select,MySQL的命令行下的命令。

1.3 安全机制

(1)权限表
(2)用户管理
  ① 登陆和退出MySQL
  ② 创建用户、删除用户、修改密码
(3)权限管理
  ① 权限的给予
  ② 权限列表
  ③ 权限的回收

1.4 备份与恢复机制。

  目前 MySQL支持的免费备份工具有: mysqldump、mysqlhotcopy,还可以用 SQL 语法进行备份: BACKUP TABLE或者SELECT INTO OUTFILE,又或者备份二进制日志(binlog),还可以是 直接拷贝数据文件和相关的配置文件。MyISAM 表是保存成文件的形式,因此相对比较容易备份,上面提到的几种方法都可以使用。Innodb所有的表都保存在同一个数据文件ibdata1中(也可能是多个文件,或者是独立的表空间文件),相对来说比较不好备份,免费的方案可以是 拷贝数据文件、备份binlog,或者用mysqldump。
  mysqldump 是采用SQL级别的备份机制,它将数据表导成 SQL 脚本文件,在不同的 MySQL 版本之间升级时相对比较合适,这也是最常用的备份方法。
  用mysqldump备份出来的文件是一个可以直接倒入的SQL脚本,有两种方法可以将数据导入。一是直接用mysql客户端,二是用SOURCE语法
  mysqlhotcopy是一个PERL程序,最初由Tim Bunce编写。它使用LOCK TABLES、FLUSH TABLES和cp或scp来快速备份数据库。它是备份数据库或单个表的最快的途径,但它只能运行在数据库文件(包括数据表定义文件、数据文件、索引文件)所在的机器上。 mysqlhotcopy只能用于备份MyISAM,并且只能运行在类Unix和NetWare系统上。mysqlhotcopy备份出来的是整个数据库目录,使用时可以直接拷贝到mysqld指定的 datadir目录下即可,同时要注意权限的问题。
  BACKUP TABLE语法其实和mysqlhotcopy的工作原理差不多,都是锁表,然后拷贝数据文件。它能实现在线备份,但是效果不理想,因此不推荐使用。它只拷贝表结构文件和数据文件,不同时拷贝索引文件,因此恢复时比较慢。用BACKUP TABLE方法备份出来的文件,可以运行RESTORE TABLE语句来恢复数据表。
  相较前几种方法,备份数据文件最为直接、快速、方便,缺点是基本上不能实现增量备份。为了保证数据的一致性,需要在靠背文件前,执行以下SQL语句:FLUSH TABLES WITH READ LOCK;也就是把内存中的数据都刷新到磁盘中,同时锁定数据表,以保证拷贝过程中不会有新的数据写入。这种方法备份出来的数据恢复也很简单,直接拷贝回原来的数据库目录下即可。
  对于中等级别业务量的系统来说,备份策略可以这么定:第一次全量备份,每天一次增量备份,每周再做一次全量备份,如此一直重复。而对于重要的且繁忙的系统来说,则可能需要每天一次全量备份,每小时一次增量备份,甚至更频繁。为了不影响线上业务,实现在线备份,并且能增量备份,最好的办法就是采用主从复制机制( replication ),在slave机器上做备份。

第二部分 本科生事务管理系统的设计与部分实现

2.1 需求分析

2.1.1数据库管理对象及其基本信息

  学生信息:学号、姓名、性别、籍贯、出生日期、所属专业、所属学院、就业去向
  宿舍信息:宿舍编号(楼号-层号-房间号)、类型(男宿舍、女宿舍)、管理员工号、管理员姓名、管理员性别、总房间数、空余房间数
  课程信息:课程号、课程名、学分、开课学期
  项目信息:项目号、项目名、项目级别(重点、一般)、期限、验收等级(优、良、中、合格、不合格)
  教师信息:工号、姓名、性别、职称、专长、所属学院

2.1.2功能需求

  学工部管理学生的学号、姓名、性别、籍贯、出生日期、所属专业、所属学院、就业去向。并且,学工部可经常查看:各籍贯的生源情况、所属专业及就业去向;统计各籍贯的生源数及男女比例。
  团委管理学生的学号、姓名、职务,项目及学生参加项目的情况,教师指导项目的情况。其中,一个学生可以参加多个项目,一个项目可以有多个学生参加。学生参与项目有角色之分(负责人或参与人)。并且,一个教师能指导多项学生项目,一个项目只能有一个指导教师。此外,团委可经常查看:各项目的项目号、项目名、负责人学号、参与人数、指导教师姓名;统计各验收等级的项目数。
  教务处管理学生的学号、姓名,课程及学生选课情况,教师情况及教师任课情况。其中,一个学生选修多门课,一门课有多个学生选修。学生每选一门课都有唯一的成绩,成绩按百分制记。并且,一个教师可以多讲授多门课,一门课可以由多个教师讲授。此外,教务处可经常查看:学号、姓名、课程号、课程名、成绩;统计各课程的最高成绩、最低成绩和平均成绩。
  宿管科管理学生的学号、姓名、性别,宿舍及学生住宿情况。其中,一个学生只能住一个房间,一个房间可住多个学生(不超过6人),学生住宿有年缴费金额;插入记录时,如果缴费金额高于或低于1200元,将之改为1200元。此外,宿管科可经常查看:总房间数、已住了男生的房间数、已住了女生的房间数、空余房间数及空房间编号;按年度统计学生缴费金额。

2.1.3数据库系统用户

  管理员:学工部、团委、教务处、宿舍科的管理员(各部门都只有一位管理员)
  一般用户:学工部、团委、教务处、宿舍科的工作人员、教师、学生
  超级管理员

2.1.4对数据库系统的操作及权限要求

(1)查询
  学工部可查询:各籍贯的生源情况、所属专业及就业去向;统计各籍贯的生源数及男女比例。
  团委可查询:各项目的项目号、项目名、负责人学号、参与人数、指导教师姓名;统计各验收等级的项目数。
  教务处可查询:学号、姓名、课程号、课程名、成绩;统计各课程的最高成绩、最低成绩和平均成绩。
  宿管科可查询:总房间数、已住了男生的房间数、已住了女生的房间数、空余房间数及空房间编号;按年度统计学生缴费金额。
  各部门信息的查询在部门内不设置权限,但不能跨部门查询。
(2)增加、删除、更改
  各部门都有一位管理员负责相关数据的添加、修改、删除

2.1.5总体概述流程图

图1 整体概述流程图

2.1.6完整性需求

  录入数据采用表格方式,限制录入数据类型及取值范围以确保数据完整性及准确性。
  域完整性:从语义出发,规定属性是否可以为null。
  一般化完整性约束:(

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
数据库应用系统设计实现 实验类型:设计型 实验地点:2楼312 实验时间:12月14日、21日周五1-3/5-7节 实验内容: 系统概述: 某银行需要开发ATM存取款机系统实现如下功能: 1)开户(到银行填写开户申请单,卡号自动生成) 2)取款 3)存款 4)查询余额 题目要求: 一、建库、建表、建约束 1、使用SQL创建表 客户信息表userinfo 字段名称 说明 备注 customerID 顾客编号 自动编号(标识列),从1开始,主键 用序列sequence实现,用其属性:nextval customerName 开户名 必填 PID 身份证号 必填,智能是18位或15位,唯一约束 check约束length()函数 telephone 联系电话 必填,11位手机号 check约束,’[0-9]’ address 居住地址 银行卡信息表cardinfo 字段名称 说明 cardID 卡号 必填,主键,银行的卡号规则和电话好吗一样,一般前8位代表特殊含义,如某综合某支行等,假定该行要求其营业厅的卡号格式为10103576**** ***开始,每4位号码后有空格,卡号一般是随机产生。 curType 货币种类 必填,默认为RMB savingTate 存款类型 活期/定活两便/定期 openDate 开户日期 必填,默认为系统当前日期 openMoney 开户金额 必填,不低于1元 balance 余额 必填,不低于1元,否则将销户 pass 密码 必填,6位数字,开户时默认为6个“6” IsReportloss 是否挂失 必填,是/否值,默认为“否” customerID 顾客编号 外键,必填,表示该卡对应的顾客编号,一位顾客允许办理多张卡号 交易信息表transinfo 字段名称 说明 transDate 交易日期 必填,默认为系统当前日期 cardID 卡号 必填,外键 transType 交易类型 必填,只能是存入/支取 transMoney 交易金额 必填,大于0 remark 备注 可选,其他说明 2、使用SQL语言在每个表上添加约束 主键约束、外键约束、CHECK约束、默认约束、非空约束 二、插入测试数据 使用SQL语言向每个表中插入至少3条记录 三、模拟常规业务 1)修改客户密码 2)办理银行卡挂失 3)统计银行资金流通余额和盈利结算 银行资金流通余额=总存入金额-总支取金额 盈利结算=总支取金额 * 0.008 – 总存入金额 * 0.003 4)查询本周开户的卡号,显示该卡相关信息 5)查询本月交易金额最高的卡号 6)查询挂失账号的客户信息 四、利用视图实现数据查询 1)为客户提供以下3个视图供其查询该客户数据 客户基本信息:vw_userInfo 银行卡信息:vw_cardInfo 银行卡交易信息:vw_transInfo 2)提供友好界面,要求各列名称为中文描述 3)调用创建的视图获得查询结果 五、用存储过程实现业务处理 1)完成开户业务 2)完成取款或存款业务 3)根据卡号打印对账单 4)查询、统计指定时间段内没有发生交易的账户信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热河路的IT男

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值