本项目为本人数据库开发技术大作业,2024-1-11

CS和BS结构的区别

CS即Client/Server(客户机/服务器)结构,C/S结构在技能上非常成熟,它的重要特征就是交互性强、拥有安全的存取形式、网络通信数量低、响应速度快、利于处置大量数据。可是这个结构的程序就是针对性开发,变更不够灵活,维护与管理的难度较大。常常只局限在小型局域网,不利于扩展。而且,因为这个结构的每台客户机全部须要安装相对应的客户端程序,分布功能弱并且兼容性差,不可以完成迅速部署安装与配置,因为这样缺少通用性,拥有比较大的局限性。请求拥有肯定专业水准的技能人员去结束。

BS即Browser/Server(浏览器/服务器)结构,就是只安装维护一个服务器(Server),而客户端选用浏览器(Browse)运行软件。B/S结构应用程序相对于传统的C/S结构应用程序就是一个特别大的进步。 B/S结构的重要特征就是分布性强、维护方便、开发简单并且共享性强、总体拥有费用低。但数据安全性问题、对服务器需要过高、数据传输速度慢、软件的个性化特征明显减少,这些缺点就是有目共睹的,难以完成传统形式下的特殊功能请求。比如通过浏览器实行大量的数据输入或实行报表的应答、专用性打印输出全部相对比较困难与不便。另外,完成复杂的应用构造有较大的困难。

根据题目要求,我们需要开发的是CS结构,即开发窗体应用程序,连接服务器

一、 数据库规划

给出系统开发的目标、任务和定义。

系统开发目标:

收集、存储和控制医院住院病人产生的数据,为病人提供出院住院功能,创建病人对应的住院信息表,对病房进行管理,提供辅助医师、护士等的业,方便医生对病人情况的掌握,方便医院对病床的管理。

住院管理系统主要实现住院病人从入院登记到出院处理的流程管理,贯穿于住院病人从入院到出院的整个住院过程。住院处管理系统不只以费用管理为主,医护人员每天所开具的医嘱以及病人的转床转科转院等大量信息最后归集到住院管理系统

系统开发任务:

  1. 确保所有必要的信息都存储在数据库中。

    病房管理

    ​ 病房所属科室

    ​ 病床信息

    ​ 在住病人

  2. 确保获得有关所有必要请求的数据的可能性。

  3. 减少数据的冗余和重复。

  4. 确保数据库完整性

  • 实体完整性,同一数据表中不可有多项记录拥有相同识别。
  • 域完整性,限制字段中的数据必须乎合预设的数据类型,例如:日期。
  • 参照完整性,如两个数据表是有关联的,父数据表中的记录必须存在,子数据表的记录才有存在。

​ 5.数据访问速度优化

任务描述:

1.病房管理,区分病房所属科室,记录其包含病床信息,在住病人等;

病房表(病房号、科室、位置、床位数、在住人数)
病床表(床号、在住病人号、规格)

2.医疗人员信息管理,区分大夫和护士角色,所在科室等;

管理员(id,密码)
医护表(医护号、姓名、科室、角色(大夫/护士))

3.辅助业务办理的住院登记、入住病房时主治医生下医嘱单、护士执行医嘱单后录入诊断信息等功能,分配住院号,分配病房病床,安排主治医生。

住院表(住院号,病人号,姓名,年龄,性别,主治医生)

医嘱表(医嘱号、医嘱内容、开嘱时间、开嘱医护)

体征表(测量编号,血压,体重,其他)

诊断表(诊断号、诊断时间、诊断结果、诊断医师)

4.建立住院账号,在该账号下预缴住院费。

住院账号(id,密码)

缴费表(编号,需缴金额,缴费时间,缴费项目)

建表脚本

数据库名称:Hosp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
-- 病房表
CREATE TABLE Ward (
WardId VARCHAR(50) PRIMARY KEY, -- 病房号
Department VARCHAR(50) , -- 科室
Location VARCHAR(50) , -- 位置
BedCount VARCHAR(50) , -- 床位数
OccupiedBeds VARCHAR(50) -- 在住人数
);

-- 病床表
CREATE TABLE Bed (
BedId VARCHAR(50) PRIMARY KEY, -- 床号
PatientId VARCHAR(50), -- 在住病人号
BedType VARCHAR(50) -- 规格
);

-- 管理员账号
CREATE TABLE Admin (
ID VARCHAR(50) , -- id
PWD VARCHAR(50) -- 密码
);

-- 医护表
CREATE TABLE Medical_Staff (
Staff_Id VARCHAR(50) PRIMARY KEY, -- 医护号
Name VARCHAR(50) , -- 姓名
Department VARCHAR(50) , -- 科室
Role VARCHAR(50) -- 角色
);

-- 住院表
CREATE TABLE Hospitalization (
HospitalizationId VARCHAR(50) PRIMARY KEY, -- 住院号
Patient_Id VARCHAR(50) , -- 病人号
Name VARCHAR(50) , -- 姓名
Age VARCHAR(50) , -- 年龄
Gender VARCHAR(10) , -- 性别
AttendingPhysician VARCHAR(50) , -- 主治医生
bedid VARCHAR(50) -- 床号
);

-- 医嘱表
CREATE TABLE Doctor_Order (
Order_Id VARCHAR(50) PRIMARY KEY, -- 医嘱号
Order_Content VARCHAR(500) , -- 医嘱内容
Order_Time DATETIME , -- 开嘱时间
Ordered_By VARCHAR(50) -- 开嘱医护
);

-- 体征表
CREATE TABLE VitalSigns (
MeasurementId VARCHAR(50) PRIMARY KEY, -- 测量编号
BloodPressure VARCHAR(50) , -- 血压
Weight FLOAT , -- 体重
OtherMeasurements VARCHAR(500) -- 其他
);

-- 诊断表
CREATE TABLE Diagnosis (
Diagnosis_Id VARCHAR(50) PRIMARY KEY, -- 诊断号
Diagnosis_Time DATETIME , -- 诊断时间
Diagnosis_Result VARCHAR(500) , -- 诊断结果
Diagnosed_By VARCHAR(50) -- 诊断医师
);

-- 住院账号
CREATE TABLE Hospital_Account (
Id VARCHAR(50) , -- id
PWD VARCHAR(50) -- 密码
);

-- 缴费表
CREATE TABLE Payment (
Payment_Id VARCHAR(50) PRIMARY KEY, -- 编号
Amount_Due MONEY , -- 需缴金额
Payment_Time DATETIME , -- 缴费时间
Payment_Item VARCHAR(50) -- 缴费项目
);

测试数据

1
2
3
4
5
6
7
8
9
-- 插入病房数据
INSERT INTO Ward (Department, Location, BedCount, OccupiedBeds) VALUES
('内科', '住院楼3楼', '20', '15'),
('外科', '住院楼4楼', '25', '18'),
('妇产科', '住院楼5楼', '15', '10'),
('儿科', '住院楼6楼', '10', '8'),
('骨科', '住院楼7楼', '18', '12');


二、数据库设计

(一)概念结构设计

1,绘制ER图

管理员

用户表

分配表(住院号、缴费单编号、床号、医护号)

病人表(、、联系方式、身份证号、病历号、医护编号、科室、病房号)

缴费单(缴费单编号,金额,缴费项目,缴费时间)

(1)划分系统模块;
(2)每个模块的功能确定;
(3)用户使用界面概要设计;
(4)输人、输出数据的概要设计;
(5)报表概要设计;
(6)数据之间的联系、流程分析;
(7)文件和数据库表的逻辑设计;
(8)硬件、软件开发平台的确定;
(9)有规律数据的规范化及数据唯一性要求。
系统的详细设计是对系统概要设计的进一步具体化,其主要工作有以下4项:
(1)文件和数据库的物理设计;
(2)输人输出记录的方案设计;
(3)对各子系统的处理方式和处理内容进行细化设计;
(4)编写程序设计任务书,通常包括程序规范功能说明程序结构图,通常用 HPIPO(Hierarchy Plus Input Process Output)图来描述。
系统详细设计阶段的规范化文档称为软件系统详细设计说明书

逻辑结构设计

雏形参考,不可直接使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
病房表(病房号,科室,位置,床位数,在住人数)
Primary Key 病房号
Foreign Key 科室 references 医护表(科室)

病床表(床号,病人号,规格)
Primary Key 床号

管理员账号(id,密码)

医护表(医护号,姓名,科室,角色)
Primary Key 医护号

住院表(住院号,病人号,姓名,年龄,性别,主治医生)
Primary Key 住院号
Foreign Key 病人号 references 病人表(病人号)
Foreign Key 主治医生 references 医护表(医护号)

医嘱表(医嘱号,医嘱内容,开嘱时间,开嘱医护)
Primary Key 医嘱号
Foreign Key 开嘱医护 references 医护表(医护号)

体征表(测量编号,血压,体重,其他)
Primary Key 测量编号

诊断表(诊断号,诊断时间,诊断结果,诊断医师)
Primary Key 诊断号
Foreign Key 诊断医师 references 医护表(医护号)

住院账号(id,密码)

缴费表(编号,需缴金额,缴费时间,缴费项目)
Primary Key 编号

医护人员维护

1
2
3
4
5
6
-- 医护表
CREATE TABLE Medical_Staff (
Staff_Id VARCHAR(50) PRIMARY KEY, -- 医护号
Name VARCHAR(50) , -- 姓名
Department VARCHAR(50) , -- 科室
Role VARCHAR(50) -- 角色

添加datagrideview

住院登记

校验:住院号规则:<年度>-ZC-<科室编号>-XXXXX号。比如:2022年-0001科-12345号

表名 字段名 类型长度 是否关键字 说明
Ward WardId VARCHAR(50) 主键 病房号
Ward Department VARCHAR(50) 外键 科室
Ward Location VARCHAR(50) 位置
Ward BedCount VARCHAR(50) 床位数
Ward OccupiedBeds VARCHAR(50) 在住人数
Bed BedId VARCHAR(50) 主键 床号
Bed PatientId VARCHAR(50) 外键 在住病人号
Bed BedType VARCHAR(50) 规格
Admin ID VARCHAR(50) 主键 管理员账号
Admin PWD VARCHAR(50) 密码
Medical_Staff Staff_Id VARCHAR(50) 主键 医护号
Medical_Staff Name VARCHAR(50) 姓名
Medical_Staff Department VARCHAR(50) 科室
Medical_Staff Role VARCHAR(50) 角色
Hospitalization HospitalizationId VARCHAR(50) 主键 住院号
Hospitalization Patient_Id VARCHAR(50) 外键 病人号
Hospitalization Name VARCHAR(50) 姓名
Hospitalization Age VARCHAR(50) 年龄
Hospitalization Gender VARCHAR(10) 性别
Hospitalization AttendingPhysician VARCHAR(50) 主治医生
Hospitalization BedId VARCHAR(50) 外键 床号
Doctor_Order Order_Id VARCHAR(50) 主键 医嘱号
Doctor_Order Order_Content VARCHAR(500) 医嘱内容
Doctor_Order Order_Time DATETIME 开嘱时间
Doctor_Order Ordered_By VARCHAR(50) 开嘱医护
VitalSigns MeasurementId VARCHAR(50) 主键 测量编号
VitalSigns BloodPressure VARCHAR(50) 血压
VitalSigns Weight FLOAT 体重
VitalSigns OtherMeasurements VARCHAR(500) 其他
Diagnosis Diagnosis_Id VARCHAR(50) 主键 诊断号
Diagnosis Diagnosis_Time DATETIME 诊断时间
Diagnosis Diagnosis_Result VARCHAR(500) 诊断结果
Diagnosis Diagnosed_By VARCHAR(50) 诊断医师
Hospital_Account Id VARCHAR(50) 住院账号
Hospital_Account PWD VARCHAR(50) 密码
Payment Payment_Id VARCHAR(50) 主键 缴费号
Payment Amount_Due MONEY 需缴金额
Payment Payment_Time DATETIME 缴费时间
Payment Payment_Item VARCHAR(50) 缴费项目
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
表名(字段1,字段2,,,,)
Primary Key 关键字名
Alternate Key 候选键名1,候选键名2
Foreign Key 外键名 references 被参照表名(主键) ON UPDATE CASCADE ON DELETE NO ACTION
病房表(病房号,科室,位置,床位数,在住人数)
主键:病房号
候选键:位置

病床表(床号,在住病人号,规格)
主键:床号
外键:在住病人号 references 住院表(病人号) ON UPDATE CASCADE ON DELETE NO ACTION

管理员账号表(ID,密码)
主键:ID
候选键:密码

医护表(医护号,姓名,科室,角色)
主键:医护号
候选键:姓名

住院表(住院号,病人号,姓名,年龄,性别,主治医生,床号)
主键:住院号
候选键:姓名
外键:病人号 references 病人表(病人号) ON UPDATE CASCADE ON DELETE NO ACTION
外键:主治医生 references 医护表(医护号) ON UPDATE CASCADE ON DELETE NO ACTION
外键:床号 references 病床表(床号) ON UPDATE CASCADE ON DELETE NO ACTION

医嘱表(医嘱号,医嘱内容,开嘱时间,开嘱医护)
主键:医嘱号
候选键:医嘱内容
外键:开嘱医护 references 医护表(医护号) ON UPDATE CASCADE ON DELETE NO ACTION

体征表(测量编号,血压,体重,其他)
主键:测量编号

诊断表(诊断号,诊断时间,诊断结果,诊断医师)
主键:诊断号
外键:诊断医师 references 医护表(医护号) ON UPDATE CASCADE ON DELETE NO ACTION

住院账号表(ID,密码)
主键:ID
候选键:密码

缴费表(编号,需缴金额,缴费时间,缴费项目)
主键:编号