精华内容
下载资源
问答
  • 概述 需要根据《项目建议书》、《需求说明书》、界面原型、各种标准规范对数据库进行设计, 我们目前先参考这一设计图 ...如会员实体:账号、密码、真实姓名、性别、地址、邮编、电话、邮箱、状态
  • 口罩预约管理系统——数据库设计(前端+PHP+MySQL)

    万次阅读 多人点赞 2020-09-14 20:55:54
    口罩预约管理系统(数据库设计)基本功能实现,如何结合前端基础、后端PHP和MySQL数据库实现呢?手把手教你设计数据库,搭建口罩预约管理系统,实现基本需求功能!

    目录

    一、背景

    二、口罩预约管理系统介绍

    1、功能模块及特点

    2、系统结构

    三、数据库设计

    1、数据字典

    2、口罩预约数据库关系模式(数据模型)

    3、E-R图(概念模型)

    四、MySQL创建数据库以及数据表

    五、数据库设计总结


    本系统项目源码已经上传CSDN资源啦,有需要可以下载!传送门 (MaskOrder完整项目.zip-MySQL文档类资源-CSDN下载

    一、背景

    2020年的疫情影响了我们的生产生活,政府不断加大力度联防联控,遏制疫情的蔓延势头,全国人民共同加入抗击疫情的战“疫”队伍。疫情信息发布、物资调配保障显得尤其重要,信息越详细,物资保障越充分,公众的疑虑就越少。“疫情地图”、“实时信息”、“口罩预约”的各种 APP、小程序和系统应运而生,不断规范化,纳入疫情发布的官方渠道。这些举措让公众能全方位获取疫情防控进展的信息,及时、准确、全面显得至关重要。

    另外,这个小项目也是过去许久,疫情期间也有在市政官方系统预约口罩的经历,(・。・)没有中签过。不过因此对它的预约系统感兴趣,考虑自己可以简单做一个web网站版本的预约管理系统,实现基本功能,也正好课程需要完成一个数据库设计,然后做一个相对完整的应用系统,所以,这个小项目就此开始。

    二、口罩预约管理系统介绍

    1、功能模块及特点

    本系统主要任务是实现用户口罩预约、市政人员(管理员)分配以及快递员接单配送的比较完整的功能。市政人员(管理员),普通用户,快递员这三种用户权限,功能明确,各自独立,而又存在着一定地联系,让政府更方便地管理、更高效地分配。

    具体模块解析如下:

    1. 普通用户模块:创建账号,登录系统填写预约信息确认提交,查看订单状态,修改订单预约信息,修改个人注册信息。
    2. 市政人员(管理员)模块:查询已注册用户信息,修改或删除用户信息,对用户的预约订单进行合理分配,包括审核以及分配快递员。管理每种类型口罩,查询库存数量,合理分配用户预约的口罩数量,按需求查看订单的配送状态。
    3. 快递员模块:查看分配到的订单,选择接单配送,完成配送选择关单,按订单状态查看订单,统计完成的订单数量。

    2、系统结构

    系统功能结构图:

    三、数据库设计

    在口罩预约管理系统初期阶段,我们需要设计好系统存取数据信息的一个数据库,数据库设计也是一个重点难点,完整的数据库基本满足设计基本要求,包括数据库关系模式分析,处理好函数依赖问题,还有关系模式至少满足第三范式等。学过数据库系统概论会基本了解这些知识以及它的重要性和难度。

    以目前个人能力,这个系统数据库的建立暂时满足最基本的要求,初步进行了函数依赖分析,另外根据所需功能,关系模式不是很复杂,第三范式的满足只存在于部分关系模式中。

    我使用的是MySQL数据库,前期建立数据字典,然后以此进一步建立数据库及数据表,确定口罩预约管理数据库关系模式,分析关系模式的函数依赖和范式要求。接下来将具体介绍数据字典、数据模型和概念模型(E-R 图)

    1、数据字典

    根据系统功能需求,系统数据库包含了8个数据表,详细内容(字段、数据类型、码)如下数据字典:

    1、admin表

    属性名

    数据描述

    数据类型

    是否为空

    备注

    work_id

    管理员账号

    varchar(32)

    不允许

    主码

    ad_name

    管理员名

    varchar(32)

    不允许

    pwd

    密码

    varchar(32)

    不允许

    phone

    电话

    varchar(32)

    2、users表

    属性名

    数据描述

    数据类型

    是否为空

    备注

    user_id

    用户账号

    varchar(32)

    不允许

    主码

    user_name

    姓名

    varchar(32)

    不允许

    ID

    身份证号

    varchar(32)

    不允许

    pwd

    密码

    varchar(32)

    不允许

    register_date

    注册时间

    datetime

    3、deliver表

    属性名

    数据描述

    数据类型

    是否为空

    备注

    deliver_id

    账号

    varchar(32)

    不允许

    主码

    deliver_name

    姓名

    varchar(32)

    不允许

    phone

    联系方式

    varchar(32)

    pwd

    密码

    varchar(32)

    不允许

    4、mask表

    属性名

    数据描述

    数据类型

    是否为空

    备注

    mask_type

    类型号

    varchar(32)

    不允许

    主码

    m_name

    名称

    varchar(32)

    不允许

    remain_num

    库存量

    int(11)

    不允许

    price

    价格

    int(11)

    5、info表

    属性名

    数据描述

    数据类型

    是否为空

    备注

    order_id

    订单号

    varchar(32)

    不允许

    主码

    user_id

    用户账号

    varchar(32)

    不允许

    外码,参照users

    user_name

    用户姓名

    varchar(32)

    不允许

    allocate_num

    分配数量

    int(11)

    不允许

    phone

    联系方式

    varchar(32)

    不允许

    address

    配送地址

    varchar(32)

    不允许

    status

    订单状态

    varchar(32)

    不允许

    re_date

    下单日期

    datetime

    6、reserve表

    属性名

    数据描述

    数据类型

    是否为空

    备注

    user_id

    预约账号

    varchar(32)

    不允许

    主码,参照users

    re_date

    下单日期

    datetime

    不允许

    主码

    mask_type

    类型

    varchar(32)

    不允许

    外码,参照mask

    ID

    身份证号

    varchar(32)

    不允许

    r_num

    预约数量

    int(11)

    不允许

    ex_date

    期望到货日

    date

    phone

    联系方式

    varchar(32)

    address

    地址

    varchar(32)

    7、allocate表

    属性名

    数据描述

    数据类型

    是否为空

    备注

    work_id

    分配人

    varchar(32)

    不允许

    主码,参照admin

    order_id

    订单号

    varchar(32)

    不允许

    主码,参照order

    allocate_time

    分配日期

    datetime

    deliver_id

    快递员

    varchar(32)

    不允许

    主码,参照deliver

    8、take表

    属性名

    数据描述

    数据类型

    是否为空

    备注

    deliver_id

    快递员账号

    varchar(32)

    不允许

    主码,参照deliver

    order_id

    订单号

    varchar(32)

    不允许

    主码,参照order

    take_date

    接单日期

    datetime

    finish_date

    关单日期

    datetime

    2、口罩预约数据库关系模式(数据模型)

    各个数据表包含属性,红色表示该关系模式的主码。

    管理员 (管理员账号, 密码, 管理员姓名, 电话)

    用户   (用户账号, 密码, 用户姓名, 身份证号)

    快递员 (快递员账号, 密码, 快递员姓名, 电话, 地址)

    口罩   (口罩类型, 仓库, 存货量, 单位价格)

    订单信息 (订单号, 用户账号, 用户姓名,口罩类型, 已分配数量, 联系方式, 配 送地址, 订单状态, 预约时间)

    预约 (用户账号, 口罩类型, 预约时间, 期望到货日期, 预约数量, 电话, 地址)

    分配 (理员账号, 订单号, 快递员账号, 分配日期)

    接关单 (快递员账号, 订单号, 快递员姓名, 接单时间, 关单时间)

    3、E-R图(概念模型)

    E-R图能够更加直观的展示数据关系模式之间的联系,下面则是自己画的:

    这个是建立数据库后系统生成的:

    四、MySQL创建数据库以及数据表

    这个步骤开始对设计好的关系模式在MySQL上部署数据库以及建立各个数据表。建表代码如下:

    • 建立数据库
    create database maskorder;
    • admin数据表(管理员表)
    create table admin(work_id varchar(32) primary key not null,
    
                        pwd varchar(32) not null,
    
                        ad_name varchar(32),
    
                        phone varchar(32));

    • users数据表(用户表)
    create table admin(work_id varchar(32) primary key not null,
                        pwd varchar(32) not null,
                        ad_name varchar(32),
                        phone varchar(32));
    • delivers数据表(快递员表)
    create table delivers(deliver_id varchar(32) primary key not null,
    
                        pwd varchar(32) not null,
    
                        deliver_name varchar(32) not null,
    
                        phone varchar(32));
    • reserve数据表(用户预约表)
    create table reserve(user_id varchar(32) not null,
    
                        re_date datetime not null,
    
                        foreign key (user_id) references users(user_id),
    
                        primary key(user_id,re_date),
    
                        ID varchar(32) not null,
    
                        r_num int not null,
    
                        ex_date date not null,
    
                        phone varchar(32) not null,
    
                        address varchar(32) not null);
    • mask数据表(口罩信息表)
    create table mask(mask_type varchar(32) primary key not null,
    
                        store varchar(32) not null,
    
                        remain_num int not null,
    
                        price int not null);

    • info数据表(订单表)
    create table info(order_id varchar(32) primary key not null,
    
                        user_id varchar(32) not null,
    
                        foreign key (user_id) references users(user_id),
    
                        user_name varchar(32) not null,
    
                        allocate_num int not null,
    
                        statue varchar(32) not null,
    
                        re_date datetime not null,
    
                        phone varchar(32) not null,
    
                        address varchar(32) not null );

    •  allocate数据表(管理员分配表)
    create table allocate(work_id varchar(32) not null,
    
                          order_id varchar(32) not null,
    
                          deliver_id varchar(32) not null,
    
                          allocate_time datetime not null,
    
                          primary key (work_id,order_id),
    
                          foreign key (work_id) references admin(work_id),
    
                          foreign key (order_id) references info(order_id) );

    •  take数据表(快递员接关单表)
    create table take(deliver_id varchar(32) not null,
    
                        order_id varchar(32) not null,
    
                       deliver_name varchar(32) not null,
    
                        take_time datetime not null,
    
                        finish_time datetime not null,
    
                        primary key (deliver_id,order_id),
    
                        foreign key (deliver_id) references delivers(deliver_id),
    
                        foreign key (order_id) references info(order_id) );
    •  deli_order视图(快递员查看订单表)
    create view deli_order as
    
            select order_id,mask_type,allocate_num,phone,addresss,statue,re_date
    
            from info;

    五、数据库设计总结

    在系统开发之前,数据库的设计是首要并且关键的一个步骤,对于此系统的数据表,上面介绍的是最后确定的数据表。数据库设计并不能一蹴而就,这里总结一下我不断修改的想法过程。

    第一次根据系统所需要的数据建立关系模式,在保证函数依赖和无损连接的情况下,将属性phone、address放入reserve表中,users表和reserve的关系模式满足了第三范式的要求。起初设计表时候考虑是否将reserve和info合并,后来发现在物理设计和实际场景下,订单信息表info由用户预约后的reserve表生成,并且加入特有的属性订单状态status、口罩分配数量allocate_num和订单号order_id。

    至此从reserve表脱离出来,后期用户、管理员、快递员对订单的查询的操作,实现了模块化的处理,不仅减少了表的连接,而且物理操作(前后端编程)更加容易,因为数据库设计中也要符合物理上的要求,所以关系模式分解为两个表,虽然增加了部分数据上的冗余,但是保证信息的模块化和实际应用的合理性。

    在口罩预约管理系统数据库设计中遇到了这些问题,后来经过了理论上的分析和实际运用,解决了设计上的问题,认识到了数据模型建立的关键性。目前该数据库还可以进一步完善。

    这一篇主要讲的是口罩预约管理系统定位的功能模块以及数据库设计的具体过程,这也是完成这个系统第一阶段的完整部分,下一篇将介绍系统前后端的搭建以及数据库连接,使用到的知识包括前端(HTML+CSS+Javascript)、后端(PHP)和MySQL数据库的操作,目的是建立简洁、包含基本功能的(口罩预约管理)应用系统。


    ①本系统项目源码已经上传CSDN资源啦,有需要可以下载!传送门 (MaskOrder完整项目.zip-MySQL文档类资源-CSDN下载

    ②也可以关注我的博客左侧边栏的微信公众号,在里面获取我的QQ联系我!

    本篇的口罩预约管理系统数据库maskOrder.txt已上传,可直接导入本地MySQL数据库。

    系列文章:

    (一)口罩预约管理系统——数据库设计(前端+PHP+MySQL)

    (二)口罩预约管理系统——系统网站实现(前端+PHP+MySQL)


    我的CSDN博客:口罩预约管理系统——数据库设计(前端+PHP+MySQL)_陆海潘江的博客-CSDN博客

    展开全文
  • (四)购物商城数据库设计-订单系统设计

    万次阅读 多人点赞 2018-06-19 22:18:23
    上一篇文章购物商城数据库设计-商品表设计中我们介绍了商品表的设计与实现。 接下来我们来一起设计下订单表。 订单系统在整个商城体系中的作用非常重要,因为一些业务的开展往往是围绕订单来展开的。因此设计好一...

    上一篇文章购物商城数据库设计-商品表设计中我们介绍了商品表的设计与实现。

    接下来我们来一起设计下订单表。

    订单系统在整个商城体系中的作用非常重要,因为一些业务的开展往往是围绕订单来展开的。因此设计好一个订单系统是多么的重要。

    我们根据用户的行为逐个设计表结构。

    首先用户浏览商品,将看中的商品加入到购物车,这里应该有一张购物车表

    购物车表(order_cart)
    ----
    skuId 
    spuId
    用户id
    店铺id
    商品名称
    商品数量
    商品价格
    状态(下单之后对应商品就不应该显示在购物车了)

    选中购物车中的某些商品,进行下单,订单表也就应运而生

    订单表(order_info)
    ----
    订单编号(如果对编号格式没什么要求,可使用雪花算法https://blog.csdn.net/u011499747/article/details/78254990来生成)
    itemCount (商品项数量,不是商品个数,比如手机*2,鼠标*1,这里应该是2)
    用户id
    店铺id
    下单时间
    支付方式(可用数字表示,如1:支付宝,2:微信,3:银行卡...)
    支付时间
    outTradeNo 支付宝订单号
    配送方式
    期望配送日期
    商品总额
    运费
    实际付款
    订单状态(这里的状态可根据实际项目来定,可以定10,20,30..这样如果中间缺少一个状态可以添加进去)

    如果购物车里面有多个店铺的商品,那么应该分别为这些店铺生成对应的订单。平台可以进行合并支付,但是订单还是要归店铺的。

    上面是订单的基本信息,接下来是订单商品相关。

    订单商品表(order_product)
    ---
    订单编号
    spuId
    skuId
    店铺id
    商品名称
    商品数量
    商品价格

    这里order_info与order_product是1对多的关系,一个订单可能有多个商品。

    下单完成,等着发货,物流信息不能少,加下来是物流表

    物流表(order_logistics)
    ---
    订单标号
    物流公司id
    物流公司编号
    快递单号
    发货时间
    收货时间
    
    物流跟踪表(order_logistics_flow)
    ---
    订单标号
    物流公司标号
    快递单号
    remark(根据第三方接口返回来的结果信息)

    加下来设计一下发票表

    订单发票(order_invoice)
    ---
    发票类型
    发票抬头
    发票内容
    发票代码
    发票号码
    开票日期
    校验码
    密码区
    服务名称
    规格型号
    数量
    单价
    金额
    合计
    税率
    税额
    销售方名称
    销售方纳税人识别号
    销售方地址电话
    销售方开户行及账号
    备注
    收入款人
    开票人

    下单完成后进行支付,这里会有支付记录表,方便以后对账

    支付记录表(order_pay_history)
    ---
    订单编号
    支付方式
    订单总额
    支付金额
    pay_json(第三方支付平台参数信息,可使用json方式保存)
    remark (备注)

    用户收到货后,可以进行评论,下面是评论表

    订单评论(order_product_comment)
    ---
    spuId
    skuId
    评论用户id
    用户昵称
    点赞数
    comment(评论内容)
    评论分数(1~5分)
    评论时间
    product_info_json(评论的商品信息,如规格型号之类的)
    image_json(评论图片)

    好了,订单系统设计到此为了,当然围绕订单系统还有更多的业务可以开展,这里只做了一些基本的结构设计。

    顺便说一句,如果一开始就想做分布式系统,建议把商品相关的表和订单表放在同一个数据库中,一则是因为订单业务需要查询商品相关的数据,二则是因为放在一起做事务比较容易,不然需要做分布式事务,加大了开发成本。前期项目规划的时候这点需要考虑到。

    展开全文
  • 同时一个mail note将被发送给消息发送者,发送一个e-mail通知给由recipient参数确定的e-mail账号,查询mail 服务器的会话…… 还包括消息客户端程序,通过连接创建会话。创建发送者和映射消息。发送消息,同时对文本...
  • 浅谈用户中心-数据库设计

    千次阅读 2021-01-24 13:23:10
    浅谈用户中心-数据库设计简介模型表结构后续扩展 简介 随着我们用户信息越来越庞大,微服务架构的流行,单体应用无法支撑强大的用户群,慢慢衍生了用户中心的概念,这里只是简单的讲解用户相关的数据库设计模型,...

    浅谈用户中心-数据库设计

    简介

    随着我们用户信息越来越庞大,微服务架构的流行,单体应用无法支撑强大的用户群,慢慢衍生了用户中心的概念,这里只是简单的讲解用户相关的数据库设计模型,主要讲解用户菜单和资源权限设置有关的E-R设计和表结构,同时后续会简介基本技术设计方案实现登录和会话校验以及用户信息的基本操作。

    模型

    这里只做简单数据模型设计,毕竟不是真正的项目。
    简单数据模型设计

    表结构

    DROP TABLE IF EXISTS `mybatis`.`tb_user`;
    create table `mybatis`.`tb_user`(
    	id int(11) auto_increment comment '主键id',
    	user_id varchar(32) not null comment '用户id',
    	user_name VARCHAR(200) not null comment '用户名',
    	user_en_name VARCHAR(200) comment '用户名英文名',
    	user_password varchar(32) comment '用户密码',
    	user_phone int(11) comment '电话号码',
    	user_sex TINYINT(1) not null  comment '性别,0-男 1-女',
    	user_age SMALLINT(3) comment '年龄',
    	user_address varchar(400) comment '家庭住址',
    	user_marry_state TINYINT(1) comment '是否已婚,0-未婚,1-已婚',
    	user_state TINYINT(1) default 0 comment '用户状态,0-信息不完整,1-正常状态,2-已注销',
    	user_job_type tinyint(2) comment '用户职业,1-事业单位,2-程序员,具体参考职业表',
    	user_id_card varchar(22) comment '证件号',
    	user_email varchar(30) comment '用户邮箱',
    	user_birthday varchar(8) comment '用户生日',
    	create_time BIGINT(32) comment '创建时间',
    	update_time BIGINT(32) comment '最后更新时间',
    	primary key(id),
    	UNIQUE INDEX tb_user_ux(user_id)
    )COMMENT='用户表';
    
    DROP TABLE IF EXISTS `mybatis`.`tb_role`;
    create table `mybatis`.`tb_role`(
    	id int(11) auto_increment comment '主键id',
    	role_id SMALLINT(3) not null comment '角色id',
    	role_name varchar(200) not null comment '角色名称',
    	role_state TINYINT(1) default 0 not null comment '状态,0-不启用,1-启用',
    	create_time BIGINT(32) comment '创建时间',
    	PRIMARY key(id),
    	UNIQUE index tb_role_ux(role_id)
    )COMMENT='角色表';
    
    DROP TABLE IF EXISTS `mybatis`.`tb_menu`;
    create table `mybatis`.`tb_menu`(
    	id int(11) auto_increment comment '主键id',
    	menu_id SMALLINT(3) not null comment '菜单id',
    	menu_parent_id SMALLINT(3)  comment '父菜单id',
    	menu_name varchar(200) not null comment '角色名称',
    	menu_url varchar(150) not null comment '菜单路径',
    	menu_state TINYINT(1) default 0 not null comment '菜单状态,0-不启用,1-启用',
    	create_time BIGINT(32) comment '创建时间',
    	update_time BIGINT(32) comment '最后更新时间',
    	PRIMARY key(id),
    	UNIQUE index tb_menu_ux(menu_id)
    )COMMENT='菜单表';
    
    DROP TABLE IF EXISTS `mybatis`.`tb_resource`;
    create table `mybatis`.`tb_resource`(
    	id int(11) auto_increment comment '主键id',
    	resource_code varchar(150) not null comment '资源code',
    	resource_url varchar(150) not null comment '资源路径',
    	resource_description varchar(200) comment '资源描述',
    	resource_state TINYINT(1) default 0 not null comment '状态,0-不启用,1-启用',
    	create_time BIGINT(32) comment '创建时间',
    	update_time BIGINT(32) comment '最后更新时间',
    	PRIMARY key(id),
    	UNIQUE index tb_resource_ux(resource_code)
    )COMMENT='资源表';
    
    DROP TABLE IF EXISTS `mybatis`.`user_role`;
    create table `mybatis`.`user_role`(
    	id int(11) auto_increment comment '主键id',
    	user_id int(11) not null comment '用户id',
    	role_id int(11) not null comment '角色id',
    	PRIMARY key(id),
    	UNIQUE index user_role_ux(user_id,role_id)
    )COMMENT='用户角色关联表';
    
    DROP TABLE IF EXISTS `mybatis`.`role_menu`;
    create table `mybatis`.`role_menu`(
    	id int(11) auto_increment comment '主键id',
    	role_id int(11) not null comment '角色id',
    	menu_id int(11) not null comment '菜单id',
    	PRIMARY key(id),
    	UNIQUE index role_menu_ux(role_id,menu_id)
    )COMMENT='角色菜单关联表';
    
    DROP TABLE IF EXISTS `mybatis`.`menu_resource`;
    create table `mybatis`.`menu_resource`(
    	id int(11) auto_increment comment '主键id',
    	menu_id int(11) not null comment '菜单id',
    	resource_id int(11) not null comment '资源id',
    	PRIMARY key(id),
    	UNIQUE index menu_resource_ux(menu_id,resource_id)
    )COMMENT='菜单资源关联表,一般不用';
    
    
    DROP TABLE IF EXISTS `mybatis`.`role_resource`;
    create table `mybatis`.`role_resource`(
    	id int(11) auto_increment comment '主键id',
    	role_id int(11) not null comment '菜单id',
    	resource_id int(11) not null comment '资源id',
    	PRIMARY key(id),
    	UNIQUE index role_resource_ux(role_id,resource_id)
    )COMMENT='角色资源,技术人员配置';
    
    DROP TABLE IF EXISTS `mybatis`.`logon`;
    create table `mybatis`.`logon`(
    	token VARCHAR(32)  comment '主键id',
    	user_id int(11) comment '用户表的id',
    	logon_time BIGINT(21) comment '登录时间',
    	resource_data varchar(4000) comment '会话数据',
    	PRIMARY key(token),
    	index logon_idx(user_id)
    )COMMENT='登录会话表';
    

    后续扩展

    后续章节完善功能模块!

    展开全文
  • 数据库设计说明书的编写

    万次阅读 多人点赞 2019-06-17 19:46:34
    数据库的表结构设计是整个项目开发中一个非常重要的环节,一个良好的数据库设计,可以提高开发效率,方便系统维护,并且为以后项目功能的扩展留下余地。我们通过书写这份文档说明,从各方面进行对校园地图的数据库...

    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 算法传输数据,不采用明文传输,保证传输安全
    展开全文
  • 电子商城数据库设计思路

    千次阅读 2019-07-10 16:00:45
    一.设计目标 本次设计为设计一个电子商城,即我们经常在淘宝,京东等网站看到的网店。这只是一个初步的设计,跟实际...数据库设计 在设计数据库之前,我们需要根据页面所要实现的功能对相应的数据库进行设想。 ...
  • 图书管理系统数据库设计实验报告

    万次阅读 多人点赞 2018-01-16 09:28:00
    图书管理系统设计实验报告 PB15051157 茹思淞 一、实验题目及其要求 编写一个图书管理系统,要求具有以下内容: 1)存储图书信息、采购和淘汰情况、租借情况 2)实现图书采购、淘汰...
  • 本次课程设计的题目是证券业务管理系统系统,系统内容要求是:证券业务管理系统有n个客户,客户有账号,身份证号,姓名,地址,开户日期。属性。资金状态,交易信息。股票信息,委托信息。成交状况等。 管理人员:...
  • 基于SSM的校园二手交易平台的设计与实现

    万次阅读 多人点赞 2018-05-06 14:24:44
    数据库:MySQL 框架:Spring + Spring MVC + MyBatis 服务器:Tomcat 前端解析框架:Thymeleaf 开发工具:Idea 2017 版本管理工具:Maven 版本控制工具:GitHub 下载地址:...
  • 本次课程设计的题目是证券业务管理系统系统,系统内容要求是:证券业务管理系统有n个客户,客户有账号,身份证号,姓名,地址,开户日期。属性。资金状态,交易信息。股票信息,委托信息。成交状况等。 管理人员:...
  • 数据库

    千次阅读 2019-02-23 17:44:47
    1. 云数据库概述 1.1. 云计算是云数据库兴起的基础 1.2. 云数据库概念 云数据库是部署和虚拟化在云计算环境中的数据库。云数据库是在云计算的大背景下发展起来的一种新兴的共享基础架构的方法,它极大地增强了...
  • 一个简易的点餐系统的数据库设计

    千次阅读 2020-12-13 17:31:30
    一个简易的点餐系统的数据库设计 一、确定实体类和属性和关联关系,画出ER图 实体与属性 用户(用户id、账号、密码、用户类型、昵称、头像) 店铺(店铺id、店铺名、 创建时间、店铺图片、店铺简介、店铺评分、店铺...
  • 【软件工程】数据库设计说明书

    千次阅读 热门讨论 2018-03-30 20:39:22
    数据库设计说明书(GB8567——88) 1引言 1.1编写目的 本文档描述了机房收费系统数据库的设计,提供了数据酷库设计的可视性以及软件支持所需的信息,应用于机房收费系统开发前期,为后期的数据库设计指引方向,也...
  • 分销系统数据库设计

    千次阅读 2018-07-19 18:46:00
    账号状态[0:封号,1:正常] ' , `login_times` int ( 11 ) unsigned NOT NULL DEFAULT ' 0 ' COMMENT ' 账号登录次数 ' , `last_login_ip` varchar ( 100 ) DEFAULT '' COMMENT ' 最后登录IP ' , `...
  • 大学《数据库系统》课程设计报告

    万次阅读 多人点赞 2019-01-03 16:02:29
    湖南科技大学计算机科学与工程学院 《数据库系统》 课 程 设 计 题 目: 教学管理系统 专 业:计算机科学与技术 年 级: 2017级 班 级: 计科三班 ...数据库系统课程设计是为了配合数据库原理及应用开发而...
  • 1. 数据库设计的原则 1) 准确记录账户基本信息,特别是状态。 2) 交易时要正确记录下交易信息和账户状态。 3) 交易记录是历史性的,不可篡改。 4) 交易是连续的,对时间要求准确。 5) 交易...
  • 第七章 数据库设计

    千次阅读 2018-12-04 17:50:58
    数据库设计 7.1 数据库设计概述 (1)数据库设计 数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种...
  • 点餐系统——数据库设计

    千次阅读 2018-03-28 00:50:04
    一、 数据库设计1.用户表 字段字段类型字段描述备注U_IDInt 主键、自增U_LoginIDVarchar(20)(登陆账号)电话号码U_NickNameVarchar(20)(昵称) U_PassWordVarchar(20)(密码) U_SignaTureVarchar(150)...
  • java毕业设计_校园二手交易平台

    千次阅读 多人点赞 2020-03-08 12:42:48
    校园二手交易平台mysql数据库创建语句 校园二手交易平台oracle数据库创建语句 校园二手交易平台sqlserver数据库创建语句 校园二手交易平台spring+springMVC+hibernate框架对象(javaBean,pojo)设计 校园二手交易平台...
  • 支持多种登录方式的数据库设计

    千次阅读 2018-05-25 10:04:00
    现在的应用基本都有站内账号、email、手机和一堆第三方登录,那么如果需要支持这么多种登录方式,或者还有银行卡登录、身份证登录等等更多的登录方式,我们的数据表应该怎么设计才更合理呢?  首先,一个用户不管...
  • 动态表单数据库设计

    千次阅读 2017-11-26 10:01:00
    存储结构去业务化 参数 key/value 通常系统参数就是这样,很多...例如:性别,状态。 2、一种是有层级的 树形的。例如:地域,树形分类。 树形有些是无限层级的,有些也就是几层。 码表 分组:性别组,状态组 ...
  • Java面试题大全(2020版)

    万次阅读 多人点赞 2019-11-26 11:59:06
    发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别?...
  • 重构——数据库设计

    千次阅读 热门讨论 2016-01-02 15:14:14
    重构工作开始没有几天,就遇到了困难,数据库该如何设计?  以前用的数据库都是现成的,或者说整个数据库结构都设计好了,我们只要照葫芦画瓢,或者干脆增加几个表就好了,可是这次真的要彻彻底底的自己设计一个...
  • 二、数据库设计与操作

    千次阅读 2018-05-10 20:12:30
    一、 数据库设计仿QQ数据库一共包括5张数据表,每张数据表结构如下:1、 tb_User(用户信息表)这张表主要用来存储用户的好友关系与信息字段名 数据类型 是否Null值 默认值绑定 描述 ID int 否 用户账号 Pwd ...
  • 数据库设计说明书 1引言 1.1编写目的 数据库设计说明书 1引言 1.1编写目的 数据库的设计是为了以后编码、测试以及维护阶段的后台数据的存储做准备。应用于系统开发前期,为后期数据库设计指引方向。 预期的读者: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,147
精华内容 14,058
关键字:

数据库设计账号状态