小账本软件设计之数据库设计模式构建

Author Avatar
Euan 10月 02, 2019
  • 在其它设备中阅读本文章

小账本软件设计之数据库设计模式构建

编写目的

该博客是小账本在前期开发阶段针对用户所进行的数据库设计,通过ER图,数据字典,数据流图来对该软件的数据库开发进行设计,并且附上部分源代码进行参考。

背景

待开发的软件名称为:小账本

定义

ER图:E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型
UML图:UML-Unified Model Language 统一建模语言,又称标准建模语言。是用来对软件密集系统进行可视化建模的一种语言。UML的定义包括UML语义和UML表示法两个元素。
数据字典:数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明,使用数据字典为简单的建模项目。
数据流图:简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。

小账本ER图设计

由于该任务的小组成员表示目前的er图已经渐渐往uml图的趋势发展,所以该er图包含了一部分uml图的特征

1

小账本数据表

数据表的设计通过数据流图和数据字典分别设计

数据字典

用户表

字段名 中文名 数据类型 主键 外键 说明
U_id 用户id int PK 不能为空
Con_id 配置id int FK1 不能为空
U_number 登录账号 varchar(20) FK2 不能为空
U_name 用户名 varchar(50) 用户昵称
U_gender 性别 char(2) 性别可为空
U_phone 电话 Char(11)

分类表

字段名 中文名 数据类型 主键 外键 说明
C_id 类别id int PK 不能为空
type 类别 varchar(255)

配置表

字段名 中文名 数据类型 主键 外键 说明
Con_id 配置id int PK 不能为空
U_id 用户id int FK 不能为空
key_ 配置信息 varchar(255) 配置信息按照键值对的形式出现 ,类型是varchar(255)
value 配置信息的值 配置信息的值, 类型是 varchar(255)

登录表

字段名 中文名 数据类型 主键 外键 说明
U_number 账号 varchar(20) PK 不能为空
U_id 用户id int FK 不能为空
U_password 密码 varchar(50) 密码要求保密性高

消费表

字段名 中文名 数据类型 主键 外键 说明
U_id 用户id int PK FK1 不能为空
C_id 类别id int PK FK2 不能为空
spend 消费金额 int
date 日期 Date 默认系统时间
Comment 备注 varchar(255)

收入表

字段名 中文名 数据类型 主键 外键 说明
U_id 用户id int PK FK1 不能为空
C_id 类别id int PK FK2 不能为空
earn 收入金额 int
date 日期 Date 默认系统时间
Comment 备注 varchar(255)

数据流图

小账本顶层数据流图

2

细化记账功能数据流图

3

再次细化该数据流图

4

用户登录数据流图

5

查询功能数据流图

6

心愿功能数据流图

7

数据库源代码设计

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
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `user`;
DROP TABLE IF EXISTS `property`;
DROP TABLE IF EXISTS `operating`;
DROP TABLE IF EXISTS `budget`;
DROP TABLE IF EXISTS `wish`;
SET FOREIGN_KEY_CHECKS = 1;

CREATE TABLE `user` (
`id` char(12) NOT NULL,
`username` char(20) NOT NULL,
`descriptin` varchar NOT NULL,
PRIMARY KEY (`id`)
);

CREATE TABLE `property` (
`id` char(1) NOT NULL,
`account` char(18) NOT NULL,
`balance` float(8) NOT NULL,
`uid` char(12) NOT NULL,
PRIMARY KEY (`id`, `uid`)
);

CREATE TABLE `operating` (
`id` char(12) NOT NULL,
`type` bool NOT NULL,
`account` float(8) NOT NULL,
`uid` char(12) NOT NULL,
`pid` char(1) NOT NULL,
PRIMARY KEY (`id`, `uid`, `pid`)
);

CREATE TABLE `budget` (
`id` char(12) NOT NULL,
`schedule` float(8) NOT NULL,
`uid` char(12) NOT NULL,
PRIMARY KEY (`id`, `uid`)
);

CREATE TABLE `wish` (
`id` char(12) NOT NULL,
`description` varchar NOT NULL,
`finishtime` date NOT NULL,
`uid` char(12) NOT NULL,
PRIMARY KEY (`id`, `uid`)
);

ALTER TABLE `property` ADD FOREIGN KEY (`uid`) REFERENCES `user`(`id`);
ALTER TABLE `operating` ADD FOREIGN KEY (`uid`) REFERENCES `user`(`id`);
ALTER TABLE `operating` ADD FOREIGN KEY (`pid`) REFERENCES `property`(`id`);
ALTER TABLE `budget` ADD FOREIGN KEY (`uid`) REFERENCES `user`(`id`);
ALTER TABLE `wish` ADD FOREIGN KEY (`uid`) REFERENCES `user`(`id`);

本文使用 CC BY-NC-SA 3.0 中国大陆 协议许可
具体请参见 知识共享协议

本文链接:https://zyhang8.github.io/2019/10/02/it-exp2/