必威体育Betway必威体育官网
当前位置:首页 > IT技术

数据库设计说明书的编写

时间:2019-09-27 07:45:41来源:IT技术作者:seo实验室小编阅读:84次「手机版」
 

数据库设计说明书

G.1 引言

G.1.1  编写目的

数据库的表结构设计是整个项目开发中一个非常重要的环节,一个良好的数据库设计,可以提高开发效率,方便系统维护,并且为以后项目功能的扩展留下余地。我们通过书写这份文档说明,从各方面进行对校园地图的数据库设计规划,用它指导该系统在数据库各方面的内容,为系统开发的程序员、系统分析员提供基准文档。我们也希望通过写数据设计说明书,规范数据名称、数据范围、数据代码等。这份文档是项目小组共同作战的基础,有了开发规范、程序模块之间和项目成员之间的接口规则、数据方式,大家就有了共同的工作语言、共同的工作平台,使整个软件开发工作可以协调有序地进行。

G.1.2  背景

说明:

a、说明待开发的数据库的名称和使用此数据库的软件系统的名称;

b、列出该软件系统开发项目的任务提出者,用户以及将安装该软件和这个数据库的计算站(中心)。

a)    待开发的数据库名称:weixinxiaochengxu

b)  待开发系统的名称:基于微信小程序的电子科大校园地图;

c)  本项目的任务提出者:老师引导下同学们共同讨论的结果;

d)  开发者:罗子建 金成哲 陆冠臣

e)  用户:在校大学生 校外游客

G.1.3  定义

列出本文件中用到的专门术语的定义、外文首字母组词的原词组。

词汇名称

词汇定义

备注

C/S

客户端/服务器

Client/Server 的缩写

sql

SQL(structured Query Language)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

Django

Django是一个开放源代码的Web应用框架,由Python写成

Django采用了MVT的框架模式,即模型M,视图V和模版T。

E-R图

实体-联系图,提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。

Entity -Relationship 的缩写

G.1.4  参考资料

  1. 经核准的用户合同、《用户需求说明书》和《项目开发委托合同书》;
  2. 《软件工程用户手册》,《软件工程操作手册》等
  3. 参考技术书籍如下:

《玩转django2.0》——黄永翔  清华大学出版社 2018-11

《从零开始学微信小程序开发》——高洪涛 电子工业出版社 2018-2

《微信小程序快速开发》——易伟 人民邮电出版社 2017-5

G.2 外部设计

G.2.1  标识符和状态

数据库软件的名称:mysql 5.7

数据库的名称:weixinxiaochengxu

表名

标识符或名称

描述信息

状态

标记点表

标记点id

用来保存校园标记点的位置以及相关描述

使用

用户表

用户id

用来保存用户信息

使用

功能表

功能id

用来保存地点的功能描述以及标签分类

使用

讨论表

讨论id

用来保存发布的讨论

使用

讨论图片表

讨论图片id

用来保存上传的讨论图片

使用

评论表

评论id

用来保存发布的评论

使用

轮播图片表

轮播图片id

用来保存系统发布的轮播图片

使用

G.2.2  使用它的程序

列出将要使用或记问此数据库的所有应用程序,对于这些应用程序的每一,给出它的名称和版本号

应用程序

访问的数据表

版本号

系统登陆

用户表

1.0

学生认证

用户表

1.0

查看清水河地图

标记点表

1.0

查看沙河地图

标记点表

1.0

发布讨论

讨论表,讨论图片表

1.0

查看讨论

讨论表,讨论图片表

1.0

点击轮播图

轮播图片表

1.0

发布评论

评论表

1.0

查看评论

评论表

1.0

查看功能

功能表

1.0

历史关注

讨论表,评论表,讨论图片表

1.0

G.2.3  约定

陈述一个程序员或一个系统分析员为了能使用此数据库而需要了解的建立标号、标识的约定,例如用于标识数据库的不同版本的约定,用于标识库内各个文卷、记录、数据项的命名约定等。

文卷

记录

数据项的命名约定

标记点表

Location

用户表

User

功能表

Function

讨论表

Discussion

讨论图片表

DiscussionImage

评论表

comment

轮播图片表

RollingImage

G.2.4  专门指导

准备从事此数据库的生成、从事此数据库的测试、维护人员提供专门的指导。

G.2.5  支持软件

简单介绍同此数据库直接有关的支持软件,如数据库管理系统、存储定位程序、用于装入、生成、修改、更新数据库的程序等。说明这些软件的名称、版本号和主要功能我,如所用数据模型的类型、允许的数据容量等。列出这些支持软件的技术文件的标题,缩号及来源。

支持软件名称

版本号

主要功能

Mysql

5.7

建立数据库并提供数据库维护与管理功能

Django

2.2.1

后端框架,为小程序提供数据库的技术支持

Python

3.6.5

代码编写

javascript

脚本语言,提供HTTP的技术支持

navicat

管理员工具

G.3 结构设计

系统按照微信小程序官方文档的统一规划,运行在weixinxiaochengxu数据库中,采用了数据库的热备份技术,实现数据的有效和安全。

G.3.1  概念结构设计

说明本数据库将反映的现实世界中的实体,属性和它们之间的关系等的原始数据形式,包括各数据项、记录、系、文卷的标识符、定义、类型、度量单位和值哉,建立本数据库的每一幅用户视图。

用户模块

      用户信息(用户名称,学生认证状态,历史关注,用户哈希名,用户id)

                                

历史关注(我的发布,我的讨论)

                               

我的发布:功能id

我的讨论:讨论id

其中属性约束如下:

  学生认证状态:已认证,未认证

学生认证模块

  学生认证(学号,密码)

                   

发布介绍模块

      发布介绍(标签,描述)

                    

其中属性约束为:

  标签为系统固定安排的,用户不能自己添加

发布讨论模块

  发布讨论(想法,讨论图片)

                   

评论模块

      参与评论(评论内容)

             

搜索模块

      搜索(搜索目标,功能标签)

           

其中属性约束为:

  搜索目标为系统提供的标签选项,用户不能自己添加。

全局E-R 图如下

                        

G.3.2  逻辑结构设计

说明把上述原始数据进行分解、合并后重新组织起来的数据库全局逻辑结构,包括所确定的关键字和属性、重新确定的记录结构和文卷结构、所建立的各个文卷之间的相互关系,形成本数据库的数据库管理员视图。

用户表记录用户登陆账号以及学生认证等基本信息

表 User 的结构

字段名

数据类型

长度

主键

非空

描述

用户id

整数

20

自增

用户头像URL

URL

用户头像,上传到数据库转换成对应的URL格式

用户昵称

字符串

20

在讨论和评论界面里展示的用户昵称

用户哈希名

字符串

20

为维护系统安全,采用md5算法进行传输

功能表记录标记点的功能展示

表 Function 的结构

字段名

数据类型

长度

主键

非空

描述

功能id

整数

20

自增

功能描述

字符串

20

针对某地点的功能描述

地点id

整数

20

该功能对应的标记点

发布用户id

整数

20

发布用户标识符

标记点表记录校园地图的地点描述以及具体地理位置

表 Location 的结构

字段名

数据类型

长度

主键

非空

描述

标记点id

整数

20

自增

标记点名

字符串

20

标记位置的具体名称

经度

浮点类型

9

地理参数

纬度

浮点类型

9

地理参数

地点描述

字符串

20

针对该地点的地理特征描述

讨论表记录用户发布讨论的内容

表 Discussion 的结构

字段名

数据类型

长度

主键

非空

描述

讨论id

整数

20

自增

发布用户id

整数

20

发布用户,方便添加到历史关注界面中显示

地点id

整数

20

针对该地点的讨论

讨论内容

字符串

140

具体讨论内容

讨论图片表记录用户发布讨论的图片信息

表 DiscussionImage 的结构

字段名

数据类型

长度

主键

非空

描述

讨论图片id

整数

20

自增

图片URL

URL

经过md5算法处理后的图片

讨论id

整数

20

确定参与讨论的标识符

文件名

字符串

20

图片名

文件格式

字符串

20

图片格式

文件大小

文件格式

10MB

图片大小

创建时间

时间格式

图片创建时间

上传时间

时间格式

图片上传时间

评论表记录用户参与评论的信息

表 Comment 的结构

字段名

数据类型

长度

主键

非空

描述

评论id

整数

20

自增

讨论id

整数

20

用于标识参与讨论的外键

评论内容

字符串

140

参与评论的文字内容

评论者用户id

整数

20

发布评论的用户id

被评论者用户id

整数

20

被评论者用户id

轮播图片表记录小程序整体的轮播图片

表 RollingImage 的结构

字段名

数据类型

长度

主键

非空

描述

轮播图片id

整数

20

唯一标识轮播图片的标识符

标记点id

整数

20

记录该地点的轮播图

轮播图片URL

URL

转换为Md5 算法后的URL

G.3.3  物理结构设计    

数据库名称为: weixinxiaochengxu

存储位置:默认位置

建立系统程序员视图,包括:

  1. 数据在内存中的安排,包括对索引区、缓冲区的设计;
  2. 所使用的外存设备及外存空间的组织,包括索引区、数据块的组织与划分;
  3. 访问数据的方式方法。

通过上面的逻辑结构分析所得到表的关系,下面使用 Django 框架 设计并得到数据库和相应的表

创建 User

class User(models.Model):

   UserId = models.Autofield(primary_key=True, null=False)

   UserUrl = models.URLField()

   UserNickName = models.CharField()

   UserHash = models.CharField()

创建 Location

class Location(models.Model):

   LocationId = models.AutoField(primary_key=True, null=False) 

   LocationName = models.CharField(max_length=20)

   Latitude = models.FloatField(9, 6)  # 经度

   Longitude = models.FloatField(9, 6)  # 纬度

LocationDescription = models.CharField(max_length=20)

创建Function

class Function(models.Model):

   FunctionId = models.AutoField(primary_key=True, null=False)

   FunctionDescription = models.TextField(max_length=200)

   LocationId = models.foreignkey(Location, on_delete=models.CASCADE)

PublishUserId=models.ForeignKey(UserInformation,on_delete=models.CASCADE)  

创建Discussion

class Discussion(models.Model):

   DiscussionId = models.AutoField(primary_key=True, null=False)

   PublishUserId=models.ForeignKey(UserInformation,on_delete=models.CASCADE)

   LocationId = models.ForeignKey(Location, on_delete=models.CASCADE)

DiscussionCode = models.TextField(max_length=140)

创建DiscussionImage

class DiscussionImage(models.Model):

   DiscussionImageId = models.AutoField(primary_key=True, null=False)

   ImageUrl = models.URLField()

   DiscussionId = models.ForeignKey(Discussion, on_delete=models.CASCADE)

   filename = models.CharField(max_length=252, default="")

   file_md5 = models.CharField(max_length=128)

  file_type = models.CharField(max_length=32)

   file_size = models.integerField()

   created_at = models.DateTimeField(default=datetime.now)

updated_at = models.DateTimeField(default=datetime.now)

创建Comment

class Comment(models.Model):

   CommentId = models.AutoField(primary_key=True, null=False)

   DiscussionId = models.ForeignKey(Discussion, on_delete=models.CASCADE)

   CommentCode = models.TextField(max_length=140)

   CommenterUserId = models.AutoField() 

CommenterUserOrId = models.AutoField() 

创建RollingImage

class RollingImage(models.Model):

   RollingImageId = models.AutoField(primary_key=True, null=False)

   LocationId = models.ForeignKey(Location, on_delete=models.CASCADE)

RollingImageUrl = models.URLField()

G.4 运用设计

G.4.1  数据字典设计

对数据库设计中涉及到的各种项目,如数据项、记录、系、文卷、模式、子模式等一般要建立起数据字典,以说明它们的标识符,同义名及有关信息,在本节中要说明对此数据字典设计的基本考虑。

G.4.2  安全保密设计

通过区分不同的访问者、不同的访问类型和不同的数据对象,进行分别对待而获得的数据库安全保密设计考虑。

访问者

权限提供

访问类型

游客(未学生认证成功)

受限的查询搜索

POST

学生

发布评论,发布讨论,发布功能介绍,查询搜索

POST

数据库由专门数据库管理用员对数据库操作,需要注意以下几项安全问题:

访问安全 、网络安全 、传输安全 、备份安全 、数据安全

设置以下安全规则:

  1. 每天进行数据备份是保障系统安全的重要手段,保证备份安全
  2. 系统设置用户的标识以鉴定是否是合法用户,并要求利用电子科大信息门户系统进行学生认证,并将合法用户设置成学生身份,保证用户身份不被盗用,保证数据安全。
  3. 系统对不同的数据设置不同的访问级别,限制访问用户可查询的处理数据类别和内容,保证网络安全。
  4. 系统对不同用户设置不同的权限,区分不同的用户,如区分学生和游客,保证访问安全。
  5. 传输皆采用md5 算法传输数据,不采用明文传输,保证传输安全

相关阅读

asp连接access数据库代码(包含.mdb和.accdb两种格式)

现在的access数据库有2种后缀格式:.mdb和.accdb,区别是.mdb是access2003版及以前,.accdb是2007版access的格式。因为版本不一样,所以

MyBase - 一个极简的数据库

MyBase的目标是为软件开发学习者提供一个编程实践平台。您可以在https://github.com/zhangqhn/mybase 下载mybase源码。 MyBase

怎样介绍飞行器设计与工程这个专业?(手稿&视频字幕)

1.从童年对纸飞机的喜爱引入还记得童年的纸飞机吗?TA记载着我们童年的喜怒哀乐还有我们对天空无限的憧憬和向往2.1903年莱特兄弟第

经验分享 | 设计师如何做项目总结?

忙活了大半年,最近刚好有一个改版项目完成上线,又正值中期总结这个档口,所以针对项目总结将一些经验技巧梳理出来。项目总结相信大家

数据库序列 nextval

1.什么是sequence?其作用是什么? 在Oracle数据库中,什么是序列呢?其中的作用是什么呢?其实sequence是序列号生成器,可以为表中的行自

分享到:

栏目导航

推荐阅读

热门阅读