小账本软件设计之数据库设计模式构建
编写目的
该博客是小账本在前期开发阶段针对用户所进行的数据库设计,通过er图,数据字典,数据流图来对该软件的数据库开发进行设计,并且附上部分源代码进行参考。
背景
- 待开发的软件名称为:小账本
- 作业名称:第三次团队博客
定义
- er图:e-r图也称实体-联系图(entity relationship diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型
- uml图:uml-unified model language 统一建模语言,又称标准建模语言。是用来对软件密集系统进行可视化建模的一种语言。uml的定义包括uml语义和uml表示法两个元素。
- 数据字典:数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明,使用数据字典为简单的建模项目。
- 数据流图:简称dfd,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。
小账本er图设计
由于该任务的小组成员表示目前的er图已经渐渐往uml图的趋势发展,所以该er图包含了一部分uml图的特征
小账本数据表
数据表的设计通过数据流图和数据字典分别设计
数据字典
用户表
字段名 |
中文名 |
数据类型 |
主键 |
外键 |
说明 |
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) |
数据流图
小账本顶层数据流图
细化记账功能数据流图
再次细化该数据流图
用户登录数据流图
查询功能数据流图
心愿功能数据流图
数据库源代码设计
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`);