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

编写目的

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

背景

  • 待开发的软件名称为:小账本
  • 作业名称:第三次团队博客

定义

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

小账本ER图设计

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

 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`);
原文地址:https://www.cnblogs.com/pipi-pig/p/10856968.html