小帳本軟件設計之數據庫設計模式構建

編寫目的

該博客是小帳本在前期開發階段針對用戶所進行的數據庫設計,經過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

小帳本數據表

數據表的設計經過數據流圖和數據字典分別設計數據庫設計

數據字典

用戶表

字段名工具

中文名ui

數據類型spa

主鍵設計

外鍵code

說明blog

U_idip

用戶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`);
相關文章
相關標籤/搜索