数据库课设作业《公寓管理系统》

文章描述了乌鸦中学高中部公寓管理数据库系统的设计,包括需求分析、数据库概念和逻辑结构设计、E-R图、关系图,以及视图和触发器的创建。系统关注公寓住宿信息、费用缴纳、设施配置和学生变动等管理功能,实现了数据的规范化和高效查询。
摘要由CSDN通过智能技术生成

《数据库原理与应用》

课程设计报告

设计题目:乌鸦中学(高中部)公寓管理数据库系统设计


公寓管理数据库系统设计(小二号宋体加粗)

一.数据库需求分析(4号黑体)

1.调查对象基本情况说明 (小4号黑体)

    调查对象包括具体单位和业务,可自选。

① 调查单位:乌鸦中学(高中部)2019级-2022级公寓住宿信息

② 调查业务:学校公寓楼分布情况、2019-2022学校公寓住宿资费标准、2019-2022入住学生登记信息、学校公寓负责人信息、公寓宿舍配置信息(房间物品、床位数、储物柜、座椅数、阳台、独卫情况)、学生住宿缴费交易订单记录、宿舍变动情况(搬入/搬出、床位/楼号变动)等

③ 调查说明:该学校住宿模式采取年级轮转,即每年随着年级升迁,也随即搬迁宿舍

2.数据库系统应具备的具体功能(小4号黑体)

   分析并画出系统的功能需求图

本次系统设计涉及公寓、房间、房间物品、床位、住宿及住宿变动情况、收费标准、应交住宿费计算、实际交费情况及过程、欠费情况等。因此按照题目要求分析功能需求图如下:

二.数据库设计(4号黑体)

   1.数据库的概念结构设计(小4号黑体)

      分析并画出数据库的E-R图

通过分析功能和需求,具体确认实体、属性、实体之间的关系,根据对功能的分析列出数据库关系图如下:

图表 1:数据库基本关系图

将需求分析得到的用户需求抽象为信息结构,分析数据字典中数据字典间内在语义关联,并将其抽象表示为数据的概念模式,进行连接从而得到数据库E-R图

图表 2:数据库的E-R图

   2.数据库的逻辑结构设计(小4号黑体)

      根据概念结构转化成数据库的逻辑结构,并指出每个表的主键和外键。同时分析每个表是否满足第三范式的要求。给出每个表的表名、各列的列名、数据类型、长度以及必要的约束,并说明各表的作用。

数据字典

表 1:公寓分布信息

列名

数据类型

允许Null值

备注

公寓编号

varchar(5)

主键

公寓属性

varchar(5)

约束(男/女)

宿舍号

varchar(5)

注:宿舍号与公寓编号无关,例如3、4号公寓均含211房间

(1)满足第三范式:满足第一范式;且不存在部分依赖(即非主属性必须完全依赖于主属性);满足第二范式;且不存在传递依赖(即非主属性不能与非主属性之间有依赖关系,非主属性必须直接依赖于主属性,不能间接依赖主性。)

(2)表的作用:储存学校公寓楼以及每个公寓楼住宿属性以及公寓里的房间编号

表 2:学生个人信息

列名

数据类型

允许Null值

备注

学号

varchar(10)

主键

姓名

varchar(10)

性别

varchar(5)

约束(男/女)

联系电话

varchar(20)

级别

varchar(10)

约束(19-22)

(1)满足第三范式:满足第一范式;且不存在部分依赖;满足第二范式;且不存在传递依赖

(2)表的作用:储存有住宿记录学生的基本个人信息。

表 3:宿舍物品信息

列名

数据类型

允许Null值

备注

公寓号

varchar(5)

主键

宿舍号

varchar(5)

主键

床位数

varchar(5)

桌子数

varchar(5)

椅子数

varchar(5)

储物柜

varchar(5)

阳台

varchar(5)

约束(有/无)

独卫

varchar(5)

约束(有/无)

(1)满足第三范式:满足第一范式;且不存在部分依赖;满足第二范式;且不存在传递依赖

(2)表的作用:储存各公寓各公寓的住宿条件设备情况

表 4:入住登记信息

列名

数据类型

允许Null值

备注

学号

varchar(10)

主键

公寓编号

varchar(5)

约束(在表1中)

宿舍号

varchar(5)

约束(在表1中)

床位号

varchar(5)

入住时间

varchar(20)

宿舍住人数

varchar(5)

(1)满足第三范式:满足第一范式;且不存在部分依赖;满足第二范式;且不存在传递依赖

(2)表的作用:储存有住宿记录学生的基本个人信息。

表 5:宿管个人信息

列名

数据类型

允许Null值

备注

宿管工号

varchar(10)

主键

公寓号

varchar(5)

约束(在表1中)

姓名

varchar(10)

性别

varchar(5)

年龄

varchar(5)

联系电话

varchar(20)

(1)满足第三范式:满足第一范式;且不存在部分依赖;满足第二范式;且不存在传递依赖

(2)表的作用:储存各公寓对应管理员的个人信息

表 6:固定住宿资费标准

列名

数据类型

允许Null值

备注

年份

varchar(5)

主键

管理费

varchar(5)

房费

varchar(5)

空调租赁费

varchar(5)

(1)满足第三范式:满足第一范式;且不存在部分依赖;满足第二范式;且不存在传递依赖

(2)表的作用:储存2019-2022期间每年的住宿资费标准

表 7:住宿缴费信息

列名

数据类型

允许Null值

备注

订单编号

varchar(20)

主键

公寓编号

varchar(5)

宿舍号

varchar(5)

约束(在表1中)

水费

varchar(5)

电费

varchar(5)

维修费

varchar(5)

缴费状态

varchar(5)

约束(已缴/未缴)

缴费时间

varchar(20)

(1)满足第三范式:满足第一范式;且不存在部分依赖;满足第二范式;且不存在传递依赖

(2)表的作用:储存每一笔缴费订单中的费用明细

 3.数据库的关系图设计(小4号黑体)

给出数据库的关系图结构。

图表 3关系结构图

三.主要视图设计(4号黑体)

对设计的每个视图分析建立视图的目的、写出创建命令、数据图示并进行必要性说明

(1)视图1:公寓入住登记簿

①目的:显示学生入住详细信息(学号、姓名、公寓号、床位号、入住时间、在校状态),清晰记录每个学生入住情况

②创建命令:

CREATE VIEW 公寓入住登记簿

AS(

SELECT 

       B.学号,C.姓名,C.级别,

       B.公寓编号,D.姓名 AS 宿管姓名,A.公寓属性,

   B.宿舍号,B.床位号,B.入住时间,

   C.联系电话,'在读' AS 状态

FROM  入住登记信息 B

JOIN  公寓分布信息 A

ON  A.公寓编号=B.公寓编号 AND A.宿舍号=B.宿舍号

JOIN  学生个人信息 C

ON C.学号=B.学号 AND C.级别 >19

JOIN 宿管个人信息 D

ON D.公寓号=A.公寓编号

UNION

SELECT TOP 100

       B.学号,C.姓名,C.级别,

       B.公寓编号,D.姓名 AS 宿管姓名,A.公寓属性,

   B.宿舍号,B.床位号,B.入住时间,

   C.联系电话,'已毕业' AS 状态

FROM  入住登记信息 B

JOIN  公寓分布信息 A

ON  A.公寓编号=B.公寓编号 AND A.宿舍号=B.宿舍号

JOIN  学生个人信息 C

ON C.学号=B.学号 AND C.级别 <=19

JOIN 宿管个人信息 D

ON D.公寓号=A.公寓编号

GROUP BY C.级别,B.入住时间,B.学号,B.公寓编号,A.公寓属性,B.宿舍号,B.床位号,C.姓名,C.联系电话,D.姓名

ORDER BY B.入住时间 DESC ,C.级别 ASC, B.学号 ASC

)

③数据图示:

(2)视图二:宿舍变动明细

①目的:查询学生住宿变动明细(公寓、宿舍、床位),搬入搬出及原因

②创建命令:

CREATE VIEW 宿舍变动明细

AS(

SELECT TOP 1000

     A.学号,A.姓名,C.性别,

     YEAR(A.入住时间) AS 搬入年份, YEAR(A.入住时间)-(A.级别*1+2000-6-1) AS 当时年级,

 A.公寓编号,A.宿舍号,A.床位号,

 YEAR(A.入住时间)+1 AS 搬出年份,

 '升学'AS 搬出原因, '未毕业'AS 在校状态

FROM  公寓入住登记簿  A

JOIN 入住登记信息 B

ON B.公寓编号=A.公寓编号 AND A.宿舍号=B.宿舍号

JOIN 学生个人信息 C

ON C.学号=A.学号

WHERE A.级别>19

GROUP BY 

YEAR(A.入住时间), YEAR(A.入住时间)-(A.级别*1+2000-6-1),

 A.学号,A.姓名,

     A.公寓编号,A.宿舍号,A.床位号,

     A.级别,C.性别

UNION

SELECT  TOP 1000

     A.学号,A.姓名,C.性别,

     YEAR(A.入住时间) AS 搬入年份, YEAR(A.入住时间)-(A.级别*1+2000-6-1) AS 当时年级,

 A.公寓编号,A.宿舍号,A.床位号,

 YEAR(A.入住时间)+1 AS 搬出年份,

 '毕业'AS 搬出原因, '已离校'AS 在校状态

FROM  公寓入住登记簿  A

JOIN 入住登记信息 B

ON B.公寓编号=A.公寓编号 AND A.宿舍号=B.宿舍号

JOIN 学生个人信息 C

ON C.学号=A.学号

WHERE A.级别 <= 19

GROUP BY 

YEAR(A.入住时间), YEAR(A.入住时间)-(A.级别*1+2000-6-1),

 A.学号,A.姓名,

     A.公寓编号,A.宿舍号,A.床位号,

     A.级别,C.性别

ORDER BY 学号 DESC,搬入年份 DESC

)

③数据视图:

(3)视图3:宿舍设施登记表

①目的:查询公寓每个房间的硬件设备、管理人员信息

②创建命令:

CREATE VIEW 宿舍设施清单

AS(

SELECT 

     A.公寓号,A.宿舍号,

 A.床位数,A.储物柜,A.椅子数,A.桌子数,A.阳台,A.独卫,

 C.宿管工号,C.姓名,C.联系电话

FROM 宿舍物品信息 A

JOIN 公寓分布信息 B

ON A.公寓号=B.公寓编号 AND A.宿舍号=B.宿舍号

JOIN 宿管个人信息 C

ON C.公寓号=B.公寓编号

GROUP BY

     A.公寓号,A.宿舍号,

 A.床位数,A.储物柜,A.椅子数,A.桌子数,A.阳台,A.独卫,

 C.宿管工号,C.姓名,C.联系电话

)

③数据视图:

(4)视图4:费用缴纳状态

①目的:查询关于缴费的明细(水费、电费、房费…)和缴费状态

②创建命令:

CREATE VIEW 费用缴纳状态

AS(

SELECT  TOP 1000

      A.订单编号,

      C.学号,C.姓名,

  B.入住时间,B.公寓编号,B.宿舍号,

  A.电费 / 6 AS 当年电费,A.水费 / 6 AS 当年水费,A.维修费 / 6 AS 当年维修费,

 (A.电费 /6+A.水费 /6+A.维修费 /6) AS 活期费用,

  D.房费,D.管理费,D.空调租赁,

 (D.房费*1 +D.房费*1 + D.空调租赁*1) AS 固定费用,

 (A.电费 /6+A.水费 /6+A.维修费 /6+D.房费*1 +D.房费*1 + D.空调租赁*1) AS 当年住宿总费用,

 A.缴费状态,A.缴费时间

FROM  住宿缴费信息 A

JOIN 入住登记信息 B

ON A.公寓编号=B.公寓编号 AND A.宿舍号=B.宿舍号

JOIN 学生个人信息 C

ON C.学号=B.学号

JOIN 固定住宿资费 D

ON D.年份=YEAR(B.入住时间)

WHERE A.缴费状态 ='已缴'

UNION

SELECT TOP 1000

      A.订单编号,

      C.学号,C.姓名,

  B.入住时间,B.公寓编号,B.宿舍号,

  A.电费 / 6 AS 当年电费,A.水费 / 6 AS 当年水费,A.维修费 / 6 AS 当年维修费,

 (A.电费 /6+A.水费 /6+A.维修费 /6) AS 活期费用,

  D.房费,D.管理费,D.空调租赁,

 (D.房费*1 +D.房费*1 + D.空调租赁*1) AS 固定费用,

 (A.电费 /6+A.水费 /6+A.维修费 /6+D.房费*1 +D.房费*1 + D.空调租赁*1) AS 当年住宿总费用,

 '未缴' AS 缴费状态,'---'AS 缴费时间

FROM  住宿缴费信息 A

JOIN 入住登记信息 B

ON A.公寓编号=B.公寓编号 AND A.宿舍号=B.宿舍号

JOIN 学生个人信息 C

ON C.学号=B.学号

JOIN 固定住宿资费 D

ON D.年份=YEAR(B.入住时间)

WHERE A.缴费时间 IS NULL

GROUP BY 

      缴费时间,缴费状态,

  B.入住时间,B.公寓编号,B.宿舍号,

      A.订单编号,C.学号,C.姓名,

  A.电费  ,A.水费 ,A.维修费 ,

 (A.电费 +A.水费 +A.维修费 ),

  D.房费,D.管理费,D.空调租赁,

 (D.房费*1 +D.房费*1 + D.空调租赁*1),

 (A.电费 /6+A.水费 /6+A.维修费 /6+D.房费*1 +D.房费*1 + D.空调租赁*1)

ORDER BY 缴费时间 ,入住时间 ASC

)

③数据视图:

(5)视图5:住宿基础信息

①目的:查询学生-公寓-管理员全面消息

②创建命令:

CREATE VIEW 住宿基础信息

AS(

SELECT TOP 1000

    A.学号,A.姓名,A.性别,A.级别,A.联系电话,

B.入住时间,B.公寓编号,B.宿舍号,

C.公寓属性,

D.床位数 AS 房间容量,D.储物柜,D.桌子数,D.椅子数,D.阳台,D.独卫,

E.姓名 AS 宿管姓名,E.联系电话 AS 宿管电话

FROM 学生个人信息 A

JOIN 入住登记信息 B

ON A.学号=B.学号

JOIN 公寓分布信息 C

ON B.公寓编号=C.公寓编号

JOIN 宿舍物品信息 D

ON D.宿舍号=B.宿舍号

JOIN 宿管个人信息 E

ON E.公寓号=B.公寓编号

GROUP BY

A.学号,A.姓名,A.性别,A.级别,A.联系电话,

B.入住时间,B.公寓编号,B.宿舍号,

C.公寓属性,

D.床位数 ,D.储物柜,D.桌子数,D.椅子数,D.阳台,D.独卫,

E.姓名,E.联系电话

ORDER BY 学号 DESC, 入住时间

)

③数据视图:

此外还设计触发器,在管理员上建立触发器,记录被修改的信息。

创建命令如下:

CREATE TRIGGER 学生

ON 学生个人信息

FOR UPDATE

AS

BEGIN

DECLARE  @学号_ VARCHAR (10)

DECLARE  @姓名_ VARCHAR (10)

DECLARE  @性别_ VARCHAR (5)

DECLARE  @联系电话_ VARCHAR(20)

DECLARE  @级别_ VARCHAR(10)

SELECT @学号_= 学号 FROM DELETED

SELECT @姓名_= 姓名 FROM DELETED

SELECT @性别_= 性别 FROM DELETED

SELECT @联系电话_= 联系电话 FROM DELETED

SELECT @级别_= 级别 FROM DELETED

INSERT INTO 学生个人信息

(学号,姓名,性别,联系电话,级别)

VALUES

(@学号_,@姓名_,@性别_,@联系电话_,@级别_)

END;

CREATE TRIGGER 公寓分布

ON 公寓分布信息

FOR UPDATE

AS

BEGIN

DECLARE @公寓编号_ VARCHAR(5)

DECLARE @公寓属性_ VARCHAR(5) 

DECLARE @宿舍号_ VARCHAR(5)

SELECT @公寓编号_= 公寓编号 FROM DELETED

SELECT @公寓属性_= 公寓属性 FROM DELETED

SELECT @宿舍号_ = 宿舍号 FROM DELETED

INSERT INTO 公寓分布信息

(公寓编号,公寓属性,宿舍号)

VALUES

(@公寓编号_,@公寓属性_,@宿舍号_)

END;

CREATE TRIGGER 宿管

ON 宿管个人信息

FOR UPDATE

AS

BEGIN

DECLARE @宿管工号_ VARCHAR(10)

DECLARE @公寓号_ VARCHAR(5)

DECLARE @姓名_ VARCHAR(10)

DECLARE @性别_ VARCHAR(5)

DECLARE @年龄_ VARCHAR(5)

DECLARE @联系电话_ VARCHAR(20)

SELECT @宿管工号_ =宿管工号 FROM DELETED

SELECT @公寓号_ =公寓号 FROM DELETED

SELECT @姓名_ =姓名 FROM DELETED

SELECT @性别_ =性别 FROM DELETED

SELECT @年龄_ =年龄 FROM DELETED

SELECT @联系电话_ =联系电话 FROM DELETED

INSERT INTO 宿管个人信息

(宿管工号,公寓号,姓名,性别,年龄,联系电话)

VALUES

(@宿管工号_,@公寓号_,@姓名_,@性别_,@年龄_,@联系电话_)

END;

CREATE TRIGGER 宿舍物品

ON 宿舍物品信息

FOR UPDATE

AS

BEGIN

DECLARE  @公寓号_ VARCHAR(5)

DECLARE  @宿舍号_ VARCHAR(5)

DECLARE  @床位数_ VARCHAR(5)

DECLARE  @桌子数_ VARCHAR(5)

DECLARE  @椅子数_ VARCHAR(5)

DECLARE  @储物柜_ VARCHAR(5)

DECLARE  @阳台_ VARCHAR(5) 

DECLARE  @独卫_ VARCHAR(5) 

SELECT @公寓号_=公寓号 FROM DELETED

SELECT @宿舍号_=宿舍号 FROM DELETED

SELECT @床位数_=床位数 FROM DELETED

SELECT @桌子数_=桌子数 FROM DELETED

SELECT @椅子数_=椅子数 FROM DELETED

SELECT @储物柜_=储物柜 FROM DELETED

SELECT @阳台_=阳台 FROM DELETED

SELECT @独卫_=独卫 FROM DELETED

INSERT INTO 宿舍物品信息

(公寓号,宿舍号,床位数,桌子数,椅子数,储物柜,阳台,独卫)

VALUES

(@公寓号_,@宿舍号_,@床位数_,@桌子数_,@椅子数_,@储物柜_,@阳台_,@独卫_)

END;

CREATE TRIGGER 入住登记

ON 入住登记信息

FOR UPDATE

AS

BEGIN

DECLARE @学号_ VARCHAR(10)

DECLARE @公寓编号_  VARCHAR(5)

DECLARE @宿舍号_  VARCHAR (5)

DECLARE @床位号_  VARCHAR (5)

DECLARE @入住时间_  VARCHAR(20)

DECLARE @宿舍住人数_  VARCHAR(5)

SELECT @学号_= 学号 FROM DELETED

SELECT @公寓编号_= 公寓编号 FROM DELETED

SELECT @宿舍号_= 宿舍号 FROM DELETED

SELECT @床位号_= 床位号 FROM DELETED

SELECT @入住时间_= 入住时间 FROM DELETED

SELECT @宿舍住人数_= 宿舍住人数 FROM DELETED

INSERT INTO 入住登记信息

(学号,公寓编号,宿舍号,床位号,入住时间,宿舍住人数)

VALUES

(@学号_,@公寓编号_,@宿舍号_,@床位号_,@入住时间_,@宿舍住人数_)

END;

 CREATE TRIGGER 住宿缴费

  ON 住宿缴费信息

  FOR UPDATE

  AS

  BEGIN

 DECLARE @订单编号_ VARCHAR(20)

 DECLARE @公寓编号_ VARCHAR(5)

 DECLARE @宿舍号_ VARCHAR(5)

 DECLARE @水费_ VARCHAR(5)

 DECLARE @电费_ VARCHAR(5)

 DECLARE @维修费_ VARCHAR(5)

 DECLARE @缴费状态_ VARCHAR(5) 

 DECLARE @缴费时间_ VARCHAR(20)

 SELECT @订单编号_ =订单编号 FROM DELETED

 SELECT @公寓编号_ =公寓编号 FROM DELETED

 SELECT @宿舍号_ =宿舍号 FROM DELETED

 SELECT @水费_ =水费 FROM DELETED

 SELECT @电费_ =电费 FROM DELETED

 SELECT @维修费_ =维修费 FROM DELETED

 SELECT @缴费状态_ =缴费状态 FROM DELETED

 SELECT @缴费时间_ =缴费时间 FROM DELETED

 INSERT INTO 住宿缴费信息

(订单编号,公寓编号,宿舍号,水费,电费,维修费,缴费状态,缴费时间)

VALUES

(@订单编号_,@公寓编号_,@宿舍号_,@水费_,@电费_,@维修费_,@缴费状态_,@缴费时间_)

END;

 CREATE TRIGGER 住宿资费

 ON 固定住宿资费

 FOR UPDATE

 AS

 BEGIN

 DECLARE @年份_ VARCHAR(5)

 DECLARE @管理费_ VARCHAR(5)

 DECLARE @房费_ VARCHAR(5)

 DECLARE @空调租赁_ VARCHAR(5)

 SELECT @年份_=年份 FROM DELETED

 SELECT @管理费_=管理费 FROM DELETED

 SELECT @房费_=房费 FROM DELETED

 SELECT @空调租赁_=空调租赁 FROM DELETED

 INSERT INTO 固定住宿资费

(年份,管理费,房费,空调租赁)

VALUES

(@年份_,@管理费_,@房费_,@空调租赁_)

END;

在原表中通过一个状态属性标示是否被删除,因此数据并不会真正被删除,只需要记录被修改的信息。利用触发器记录被修改的信息,确保数据安全备份。

四.功能模块结构设计(4号黑体) 

如图示,,其中各项从左往右前5部分功能都包括各自信息的增删改查,第六项功能为学生住宿变动信息备份,也就是已修改信息储存。

五.主要功能及程序界面说明(4号黑体) 

选择5个以上的功能及程序界面进行说明。

  1. 利用视图任意查询公寓住宿生登记入住、搬入搬出信息(时间、具体宿舍     号、变更原因、是否毕业)

例如:查询19级学号1902学生的所有入住记录中的变动原因

执行命令为:

SELECT 

A.学号, A.姓名, A.搬入年份,A.搬出原因

FROM 宿舍变动明细 A

WHERE A.学号=1902 AND A.搬入年份+2 <2022

UNION

SELECT 

A.学号, A.姓名, A.搬入年份,'升学'AS 搬出原因

FROM 宿舍变动明细 A

WHERE A.学号=1902 AND A.搬入年份+2 >=2022

程序界面:

  1. 查询公寓住宿配置详情明细

例如:分别查询七年级、八年级、九年级的住宿配置情况,以201(男)301(女)宿舍为例

执行命令为:

SELECT

 A.公寓号, '男' AS 宿舍属性,A.宿舍号,A.储物柜,A.床位数,A.桌子数,A.桌子数,A.独卫,A.阳台

FROM 宿舍设施登记表 A

WHERE A.宿舍号=201 AND A.公寓号 IN (3,7) OR A.宿舍号=211 AND A.公寓号=5

SELECT

 A.公寓号, '女' AS 宿舍属性,A.宿舍号,A.储物柜,A.床位数,A.桌子数,A.桌子数,A.独卫,A.阳台

FROM 宿舍设施登记表 A

WHERE A.宿舍号 IN (201,301,311) AND A.公寓号 IN (4,6,8) 

程序界面:

  1. 查询住宿生住宿费用并显示明细,以及查询订单缴费状态

例如:查询21级学号为2103学生的缴费订单情况

执行命令为:

SELECT 

A.学号,A.姓名,A.缴费时间,A.订单编号,A.缴费状态,A.活期费用+A.固定费用 AS 费用总和

FROM 费用缴纳状态 A

WHERE A.学号=2103

程序界面:

  1. 修改、删除、增加公寓管理数据库基本信息

例如:修改2021年的缴费标准,(2021,管理费10,房费80,空调租赁)为(2021,管理费15,房费90,空调租赁20),修改前后分别查询当年缴费订单

执行命令为:

SELECT *

FROM 费用缴纳状态;

UPDATE 固定住宿资费

SET 管理费=15,房费=90,空调租赁=20

WHERE 年份=2021;

SELECT *

FROM 费用缴纳状态;

程序界面:

注:上半部分为修改前,为半部分未修改后

  1. 统计并计算住校学生自入住以来的缴费情况(已缴费用和欠费情况)

例如:查询所有入住学生已缴总费用、欠费总数

执行命令为:

SELECT 

 A.姓名,A.学号,SUM(A.当年住宿总费用) AS 已缴总费用,NULL AS 总暂欠费用,

FROM 费用缴纳状态 A

WHERE A.缴费状态='已缴'

GROUP BY A.姓名,A.学号

UNION

SELECT 

 A.姓名,A.学号,NULL AS 已缴总费用 ,SUM(A.当年住宿总费用) AS 总暂欠费用

FROM 费用缴纳状态 A

WHERE A.缴费状态='未缴'

GROUP BY A.姓名,A.学号

程序界面:

六.总结(4号黑体)

1.设计方案的主要优点及不足(小4号黑体)

我的系统特色:

A、数据结构化 ,数据之间具有联系,面向整个系统。

B、数据的共享性高,冗余度低,易扩充 。

C、数据独立性高 。

D、数据由DBMS统一管理和控制。

缺点:在对数据库进行设计的过程中,结构比较简单,不能够应对是否能复杂的情况,只能对学生住宿的简单信息进行操作。另外,在安全性方面做得也不够完善,主要原因在于设计的重点是功能的正常执行,而不是在每一个细节做到完美。另外,执行虚度方面没有做出专门的优化。因此,这个数据库系统需要我在以后相信的去完成每一个细节。

2.收获及建议(小4号黑体)

在设计数据库的过程中我遇到过非常多的问题:

首先,在设计阶段有非常多的数据项,当时觉得不好分类和处理,而且有很多的数据项和许多实体都有关系。最后通过查看课本例题,问同学等方式将各个数据项进行归类,对于和多个实体之间都有关系的数据项可以建立一个关系表,从而完成归类。接着,在添加数据的过程中,我忽略掉了数据的参照完整性,导致许多数据不能够正常加入。后来经过同学的提示,我将数据进行了统一分析,保持所有的数据一致,最后数据可以正常输入。

最后,每个表中的数据更改完成之后,更改后的数据会丢失找不到了。对于这个问题就解决办法为加入触发器,记录表中信息的修改前的值,成功解决问题。

收获:对于一个系统,数据库的设计是非常重要的,数据库设计决定了以后数据好不好维护。后期需求好不好展。同时也决定了系统的性能。一个坏的数据库设计一个功能点的改动可能会设计多张表的改动。一不小心可能就会引起数据的不一致。为了解决这些问题。在数据库设计之初就要考虑这些问题。减少后期系统维护量。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值