数据库设计说明书的编写

article/2025/9/12 17:03:14

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 算法传输数据,不采用明文传输,保证传输安全

http://chatgpt.dhexx.cn/article/2aXVTkHP.shtml

相关文章

PowerDesigner生成数据库设计文档

1.说明 使用PowerDesigner设计数据库表, 基于PowerDesigner设计数据库表, 生成数据库对应的表设计文档, PowerDesigner支持生成HTML、RTF和本地格式的文档, 下面演示生成RTF格式的文档, 然后把RTF文档保存为常见的Word文档格式。 …

数据库设计文档自动生成

1、拉取代码 该项目上使用了jdk17版本,需要maven环境。如果都有,通过git进行下载代码 #git下载代码命令 git clone https://gitee.com/giteeLinht/db-doc.git2、初始化项目并运行 1、打开idea,导入项目直接运行com.cn.db.dbdoc.DbDocApplic…

Java自动生成数据库设计文档(Word)

一、前言 在日常的开发工作中,偶尔会遇到项目收尾需要提供数据库设计文档的情况。对这个文档的编写目前应该已经基本没有问题了,如果你还不知道如何编写该文档,可以参考如下文章。 https://blog.csdn.net/qq_41057885/article/details/114436…

【资源分享】基于Spark的机器学习-智能客户系统项目实战视频教程

承诺:【不加密,不收费】 一、 课程介绍 1、项目介绍以及在本课程中能学到什么东西、如何应用到实际项目中 2、scala和IDE的安装以及使用以及maven插件的安装 3、Centos环境准备(java环境、hosts配置、防火墙关闭) 4、scala基…

2-1、特征:特征选择、特征预处理(缩放)、特征抽取、特征构造

目录 特征重要性一、特征选择1、Filter方法(过滤式)1-1 剔除缺失值过多的变量1-2 方差变化1-3 相关系数(Correlation coefficient scores)1-4卡方检验(Chi-squared Test)1-5 信息增益(Informati…

Windows下使用Word2vec继续词向量训练

word2vec是Google在2013年提出的一款开源工具,其是一个Deep Learning(深度学习)模型(实际上该模型层次较浅,严格上还不能算是深层模型,如果word2vec上层再套一层与具体应用相关的输出层,如Softmax,便更像是…

python spark MLlib

window系统 1. anaconda 或python spark环境变量 2. 配置spark home D:\Develop\spark-1.6.0-bin-hadoop2.6\spark-1.6.0-bin-hadoop2.63. C:\Users\Administrator>pip install py4jpython for java cpython c 与java交互就是通过py4jpip uninstall py4j4. 安装pyspark &a…

数据中台建设方案-基于大数据平台

数据中台建设方案 -基于大数据平台- 1数据中台建设方案 1.1 总体建设方案 1.2大数据集成平台 1.3大数据计算平台 1.3.1数据计算层建设 计算层技术含量最高,最为活跃,发展也最为迅速。计算层主要实现各类数据的加工、处理和计算,为上层应用提供良好和充分的数据支持。大数据基…

2021-03-04 大数据课程笔记 day43

R星校长 机器学习03【机器学习】 主要内容 数字聚类案例TF-IDF算法微博营销案例逻辑回归算法音乐分类案例 学习目标 第一节 数字聚类案例 1. K-means 找中心点和数据点分类例子 import numpy as np #将每行数据放入一个数组内列表,返回一个二维列表 def loa…

文本挖掘之文本聚类(MapReduce)

刘 勇 Email:lyssymsina.com 简介 针对大数量的文本数据,采用单线程处理时,一方面消耗较长处理时间,另一方面对大量数据的I/O操作也会消耗较长处理时间,同时对内存空间的消耗也是很大,因此,本文…

solr 自聚类实现

参考官网&#xff1a;https://lucene.apache.org/solr/guide/6_6/result-clustering.html 最近用到solr自聚类的&#xff0c;先简单介绍如下&#xff1a; 1、配置文件 主要配置文件必须配置如下内容&#xff1a; <lib dir"${solr.install.dir:../../..}/contrib/cluste…

《学术小白的学习之路 06》自然语言处理之 数据预处理、Jieba分词和文本聚类

本文主要是学习参考杨秀璋老师的博客,笔记总结。 原文链接 文章目录 书山有路勤为径&#xff0c;学海无涯苦作舟&#xff08;行行代码要手敲&#xff09;零、吃水不忘挖井人一、数据预处理&#xff08;分词-清洗-特征提取-权重&#xff09;二、中文分词2.1 中文分词技术2.2 Jie…

kmeans实现文本聚类

需求 拿到的需求是输入n个文本,对文本进行聚类,由于这些输入不能通过历史数据进行训练,所以这个主要就是用无监督学习来解决。 kmeans 谈到聚类就会想到kmeans,它的核心思想是给定的K值和K个初始质心将样本中每个点都分到距离最近的类簇中,当所有点分配完后根据每个类簇的…

PS放大图片而不模糊的操作方法

1、使用ps打开图片&#xff08;原始图片200*200&#xff09;&#xff0c;正常情况下ctrl “” 放大图片&#xff0c;图片会变模糊&#xff0c;如下&#xff1a; 原始图片&#xff1a; 放大之后&#xff1a; 明显模糊了。 2、右键图层&#xff0c;选择复制图层…

使用PS制作放大镜效果

&#xff08;撰写时间&#xff1a;2019年5月7日 作者&#xff1a;陈景鸿&#xff09; PS的的放大镜也就是将模糊的东西能够看得清楚&#xff0c;也是一款神奇的东西&#xff0c;制作放大镜有两种效果&#xff0c;一种是将图片发大&#xff0c;一种是将图片变得清晰&#xff0c…

使用PS中的创建剪贴蒙版来做放大镜

使用PS中的创建剪贴蒙版来做放大镜 &#xff08;写作时间&#xff1a;4月15日 作者&#xff1a;陈铭军&#xff09; 首先随便找一张建筑物照片导入PS&#xff0c;其他照片也可以做。 然后“Ctrl”“J”或者鼠标右键点击背景图层复制两次。激活背景副本&#xff0c;在上方的菜…

ps一些基本操作

调整图片、图层大小 点击矩形 画出需要缩小/放大的矩形框ctrlt&#xff0c;缩小/放大矩形框点击图像—画布大小&#xff0c;修改画布大小

ps基础 工作区面板 放大镜 抓手 移动工具

20191110笔记 ps 又叫做编辑软件又称为 编辑对象:像素图 点阵图 位图 ps基础-设置工作区 工作区 是设计师在使用ps时自定义的工作面板组合,方便提升工作效率 工具栏 选项栏 色板 历史纪录 颜色 图层 ps基础-图片的放大 缩小 切换 移动 放大镜 ctrl 放大镜 ctrl-…

ps把图片无损放大的方法

工作中我们当遇到图片编辑修改方面的问题时&#xff0c;我们都习惯用PS软件进行处理。如果想要将图片放大&#xff0c;第一想到的也是用PS软件&#xff0c;但是PS放大后的图片会变得很模糊&#xff0c;于是很多人问&#xff1a;ps怎么把图片无损放大&#xff1f; 其实PS是没有…