互联网应用开发实践:需求分析与数据库设计
在本文中将分析一个用于新生开学分配寝室的“宿舍秒杀”系统。从用户故事开始探索需求,进而分析得到系统的主要功能和非功能性需求。最后,根据需求分析设计数据库,数据库的设计原则是尽可能的方便之后的需求拓展和修改。
用户故事
用户故事一般是产品经理初次描述给自己和开发人员看的,然后产品负责人要依据用户故事设计原型,原型在客户那里通过后,然后再在用户故事里面添加附件。用户故事不会一开始就很清晰,甚至可能不会有特专业术语。
学生
- 作为
学生
,我想要在系统里登录,并获取验证码
,以便于登录到自己的账号中进行宿舍选取
。 - 作为
学生
,我想要查询剩余宿舍的信息
,以便于及时选择或更换寝室志愿
。 - 作为
学生
,我想要查询宿舍的基本信息(楼号、寝室人数、是否为上下铺、寝室朝向)
,以便于选择自己志愿的寝室
。 - 作为
学生
,我想要核对我的个人信息
,以便于在分寝室的时候不会出现错误
。 - 作为
学生
,我想要可以组队抢寝室
,以便于在分寝室的时候不会出现错误
。 - 作为
学生
,我想要可以创建组队
或加入队伍
,以便于进行组队抢宿舍
。 - 作为
学生
,我想要在系统里预先选择要抢的宿舍,到点提交
,以便于在第一时间抢宿舍
。 - 作为
学生
,我想要查看寝室的选取结果(包括分到的寝室号,室友的相关信息)
,以便于及时联系到室友
。
寝管
- 作为
寝管
,我想要修改每个寝室的床位信息
,以便于管理寝室信息
。 - 作为
寝管
,我想要按照寝室顺序导出名单
,以便于在报到时让领钥匙的同学签字
。 - 作为
寝管
,我想要查询并修改床位的可用状态
,以便于对损坏的床位进行申请报修
。
管理员
- 作为
管理员
,我想要学生核对他们的个人信息
,以便于在分寝室的时候不会出现错误
。 - 作为
管理员
,我想要对学生设置标签
,以便于后期规定按照某一标签(如班级、专业)进行分寝室
。 - 作为
管理员
,我想要系统支持2000人左右的同时访问
,以便于满足学生可以在一个时间点同时抢寝室
。 - 作为
管理员
,我想要防止有同学使用脚本去抢寝室
,以便于保证系统的安全性
。
需求分析
主要功能
- 学生核对个人基本信息
- 查询宿舍基本信息(如,宿舍人数等)
- 查询宿舍空床位信息
- 学生可以被设置标签(如班级)
- 根据标签设置可选房间列表(如列表为空,则可选所有满足条件的宿舍)
- 学生可以组队选宿舍(1-4人)
- 查看订单处理结果
- 管理员可以管理宿舍信息
- 管理员可以编辑宿舍床位的状态(如床位不可用)
- 管理员可以导出相关的数据
非功能性需求
- 支持2000人并发
- 防止脚本
数据库设计
设计思路
考虑到后期需求可能会发生变动,因此在数据库设计的时候最大程度降低了表与表之间的关联程度。数据库中有两个核心主体——bed
(床位信息)、student
(学生信息)。
- 与床位信息相关的表有:
dorm
(宿舍信息)、house
(宿舍楼信息)、bed_type
(床铺类型信息)。 - 与学生信息相关的表有:
class
(班级信息)、major
(专业信息)、stu_contact_info
(学生联络信息表)。其中年级信息作为一个属性考虑在班级信息内。
对于学生和床位的关系,单独建立了一个关联表rel_bed_stu
。该表使用“学号+时间戳”的方式作为主键,记录学生床位的分配信息。除此之外,还设计了config
表储存系统相关配置信息,admin
表储存管理员相关信息。
数据库表结构
床位信息表:bed
寝室信息表:dorm
楼号信息表:house
床位类型表:bed_type
学生信息表:student
学生联系方式表:stu_contact_info
班级信息表:class
专业信息表:major
学生-床位关系表:rel_bed_stu
订单表:order
管理员信息表:admin
配置表:config
数据库模型图
互联网应用开发实践:需求分析与数据库设计相关推荐
- 基于.NET平台的分层架构实战(二)——需求分析与数据库设计
基于.NET平台的分层架构实战(五)--接口的设计与实现 · 基于.NET平台的分层架构实战(四)--实体类的设计与实现 · 基于.NET平台的分层架构实战(三)--架构概要设计 · 基于.NET平台 ...
- Thinkphp5 开发 OA 办公系统 - 数据库设计
2019独角兽企业重金招聘Python工程师标准>>> 自从接触到用PowerDesigner做数据库建模后,喜欢它就停不下来了.我发现现在很多2-20人的团队在做数据库结构设计时, ...
- 客户关系管理系统的系统需求分析与数据库设计
一 需求分析 本项目是一个基于MVC实现的客户管理CRM系统,预先设置了三个角色,即系统管理员.信息管理员和客服人员. 本系统包括主要五大模块,即权限管理.业务信息.任务管理.公告管理和客户管理. 功 ...
- html大学生网站开发实践:企业网站设计——电子产品企业(8页) HTML+CSS+JavaScript
web结课作业的源码:企业网站设计--电子产品企业(8页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见网页设计作业题材 ...
- 大学生网页制作期末作业——html+css+javascript+jquery旅游官网6页 html大学生网站开发实践作业 web网页设计实例作业
- 【数据库系统】第二部分 设计与应用开发(7) 数据库设计
本文属于「数据库系统」系列文章之一,这一系列着重于「数据库系统知识的学习与实践」.由于文章内容随时可能发生更新变动,欢迎关注和收藏数据库系统系列文章汇总目录一文以作备忘.需要特别说明的是,为了透彻理解 ...
- oracle窗帘位图索引,Greenplum数据库设计开发规范参考.docx
Greenplum数据库设计开发规范参考 Greenplum数据库设计开发规范参考文档2016年7月目 录Greenplum数据库设计开发规范1V1.511 前言41.1 文档目的41.2 文档范围4 ...
- 数据库设计和功能需求分析------后台设计概述
功能需求分析和数据库设计 不论是Web开发还是Android开发,在设计后台的时候我们都要做的重要的事情不外乎两点:1. 需求分析:2.数据库表格的设计.在进行这两项工作的过程中,第一项工作对第二项起 ...
- 数据库设计讲解和案例分析 | mysql 入门
数据库设计 什么是数据库设计 数据库设计是指在数据库系统开发过程中,根据用户需求,通过对数据进行分析.抽象和建模,设计出一个合理.高效的数据库结构的过程.数据库设计的目的是为了实现数据的存储.管理.维 ...
最新文章
- geojson地图_ThingJS的三维城市地图搭建逻辑解析
- JSP标准标签库(JSTL)--简介
- JVM 垃圾收集器CMS相关参数
- GitHub图片无法显示
- spring boot 源码_SpringBoot2.1.x源码环境搭建详解
- UNIX(多线程):20---生产者消费者实例
- 洛谷 P3211 [HNOI2011]XOR和路径(推dp+高斯消元)
- 【LeetCode】【HOT】4. 寻找两个正序数组的中位数(二分查找)
- RequestResponse
- 通过修改dat文档对植物大战僵尸关卡数进行修改
- 武汉大学国际软件学院夏令营笔试和面试简介
- 使用随机文件流类RandomAccessFile将一个文本文件倒置读出。
- tomcat 启动时报错:To prevent a memory leak, the JDBC Driver has been forcibly unregistered
- HTML5系列代码:个人页面
- VSCode实现Cesium的自动提示功能
- sshpass命令的安装使用
- 外汇交易中应用CCI指标进行趋势交易一单一结的编程实践(五)
- 怎么聊微信才能让她喜欢你
- SAP通过转义字符新增ICON图标
- 三路测径仪同时测量三根铜丝的外径
热门文章
- 如何利用GitHub搜索敏感信息
- 视频教程-19全新mysql教程零基础入门实战精讲mysql视频DBA数据库视频教程SQL教程-MySQL
- 第四节——生成go测试代码
- Web全栈~29.MySQL
- 只转不评:112家IT公司薪水一览表
- 《计算机网络技术》第三章课后习题答案(全)
- QList、QVector,QSet,std::vector,std::list直接的转换关系总结
- [ 常用工具篇 ] burpsuite_pro 安装配置详解(附安装包)
- 获诱人的实习offer、在Kaggle推AI大赛,大二学生如何做到?
- css内联样式_如何覆盖内联CSS样式