小账本软件设计之数据库设计模式构建
编写目的
该博客是小账本在前期开发阶段针对用户所进行的数据库设计,通过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`);
小账本软件设计之数据库设计模式构建相关推荐
- java 账本 创建数据库_小账本软件设计之数据库设计模式构建
编写目的 该博客是小账本在前期开发阶段针对用户所进行的数据库设计,通过ER图,数据字典,数据流图来对该软件的数据库开发进行设计,并且附上部分源代码进行参考. 背景 待开发的软件名称为:小账本 作业名称 ...
- 软件设计之 数据库设计
[按语:在软件设计或是动态网站开发中,数据库设计时很重要,我觉得可以说是开发工作的核心部分,所以学好数据库设计,是很重要的,也是大有前途的...] ◆.概念 首先要搞清楚容易混淆的两个概念:&quo ...
- 软件设计原则及设计模式
一. 软件六大设计原则(SOLID) Single Responsibility Principle:单一职责原则 Open Closed Principle:开闭原则 Liskov Substitu ...
- 软件设计23种设计模式
工厂方法模式(创建型) 定义了一个接口用于创建对象,该模式由子类决定实例化哪个工厂类.该模式把类的实例化推迟到了子类. 抽象工厂模式(创建型) 该模式提供了一个接口用于创建一组相关或相互依赖的对象:该 ...
- 软件设计模式——软件设计原则
摘要 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.无数工程师实践的代码设计经验的总结,它是面向对象思想的高度提炼和模板化,使用设计模式是为了让代码具有更高的可重用性,更好的 ...
- 软件设计是怎样炼成的(6)——打造系统的底蕴(数据库设计)(上篇)
摘要: 数据库是系统的根基,如果需求变更导致你要经常修改数据库的字段,甚至需要修改表及表关系,相信多折腾几次谁都受不了!因为数据库结构的变化,不仅仅是数据库本身的变更,实体类.数据操作层.逻辑层和表现 ...
- 【设计模式系列24】GoF23种设计模式总结及软件设计7大原则
设计模式总结及软件设计七大原则 设计模式系列总览 前言 软件设计7大原则 开闭原则(Open-Closed Principle,OCP) 里氏替换原则(Liskov Substitution Prin ...
- 软件设计原则(一)开闭原则(Open-Closed Principle, OCP)
狭义理解:对扩展开发,对修改封闭 在学习设计模式之前,应该先对软件设计原则有一定的了解,设计模式在一定程度上是迎合软件设计原则而产生的,脱离了软件设计原则,设计模式是没有意义的. 开-闭原则(Open ...
- 软件设计原则 —— 迪米特原则和合成复用原则
迪米特法则(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP),一个类对于其他类知道的越少越好,就是说一个对象应当对其他对象有尽可能少的 ...
最新文章
- datagenerator解决训练时候内存不足问题
- Java面试题技术类一
- 著名加密库收集 Encrypt
- vue城市三级联动组件 vue-area-linkage
- wxWidgets:wxEraseEvent类用法
- 【MFC】利用MFC向导生成单文档应用程序框架
- MySQL+HandlerSocket=MySQL的功能+NoSQL的性能
- 有一种陪伴不在身边,却在心间
- Punycode与中文互转
- “iQOO”怎么读?vivo官宣“发音”视频
- python版本时间_python 获取文件版本号和修改时间
- 打印机服务器启用后自动关闭,Win7打印机服务自动关闭了怎么打开|Win7打开打印机服务的简单方法...
- 性能分析之排队论应用
- flutter之dart语言发展
- ECharts饼状图legend显示Value所占百分比
- ios点击推送闪退_iOS 13.4 Beta 4 发布,闪退问题修复!
- [附源码]Python计算机毕业设计电影票购票系统
- python raise和except区别_python raise和assert的区别
- 关于RInda和dRuby(DRB)
- PS 常用工具使用汇总
热门文章
- 产品及项目管理定位规划工作分工
- bugku-杂项-很普通的数独(ISCCCTF)(01转换、画二维码)
- 开一家披萨店需要多少钱,都要什么设备?【Lucy比萨】
- 数据库 SQL Server 视图 创建视图 查询视图 修改视图 删除视图
- 智能优化算法:正余弦优化算法-附代码
- linux 下通过smbclient访问windows共享目录
- python汉诺塔算法解析,python实现的汉诺塔算法示例
- jq删除数组中的指定元素
- 定位(定位组成【定位模式(静态定位,相对定位,绝对定位,固定定位,粘性定位,定位总结),位偏移】,)
- 移动机器人gazebo仿真(3)—替换地图并建图