在本文中将分析一个用于新生开学分配寝室的“宿舍秒杀”系统。从用户故事开始探索需求,进而分析得到系统的主要功能和非功能性需求。最后,根据需求分析设计数据库,数据库的设计原则是尽可能的方便之后的需求拓展和修改。


用户故事

用户故事一般是产品经理初次描述给自己和开发人员看的,然后产品负责人要依据用户故事设计原型,原型在客户那里通过后,然后再在用户故事里面添加附件。用户故事不会一开始就很清晰,甚至可能不会有特专业术语。

学生

  • 作为学生,我想要在系统里登录,并获取验证码,以便于登录到自己的账号中进行宿舍选取
  • 作为学生,我想要查询剩余宿舍的信息,以便于及时选择或更换寝室志愿
  • 作为学生,我想要查询宿舍的基本信息(楼号、寝室人数、是否为上下铺、寝室朝向),以便于选择自己志愿的寝室
  • 作为学生,我想要核对我的个人信息,以便于在分寝室的时候不会出现错误
  • 作为学生,我想要可以组队抢寝室,以便于在分寝室的时候不会出现错误
  • 作为学生,我想要可以创建组队加入队伍,以便于进行组队抢宿舍
  • 作为学生,我想要在系统里预先选择要抢的宿舍,到点提交,以便于在第一时间抢宿舍
  • 作为学生,我想要查看寝室的选取结果(包括分到的寝室号,室友的相关信息),以便于及时联系到室友

寝管

  • 作为寝管,我想要修改每个寝室的床位信息,以便于管理寝室信息
  • 作为寝管,我想要按照寝室顺序导出名单,以便于在报到时让领钥匙的同学签字
  • 作为寝管,我想要查询并修改床位的可用状态,以便于对损坏的床位进行申请报修

管理员

  • 作为管理员,我想要学生核对他们的个人信息,以便于在分寝室的时候不会出现错误
  • 作为管理员,我想要对学生设置标签,以便于后期规定按照某一标签(如班级、专业)进行分寝室
  • 作为管理员,我想要系统支持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

数据库模型图

互联网应用开发实践:需求分析与数据库设计相关推荐

  1. 基于.NET平台的分层架构实战(二)——需求分析与数据库设计

    基于.NET平台的分层架构实战(五)--接口的设计与实现 · 基于.NET平台的分层架构实战(四)--实体类的设计与实现 · 基于.NET平台的分层架构实战(三)--架构概要设计 · 基于.NET平台 ...

  2. Thinkphp5 开发 OA 办公系统 - 数据库设计

    2019独角兽企业重金招聘Python工程师标准>>> 自从接触到用PowerDesigner做数据库建模后,喜欢它就停不下来了.我发现现在很多2-20人的团队在做数据库结构设计时, ...

  3. 客户关系管理系统的系统需求分析与数据库设计

    一 需求分析 本项目是一个基于MVC实现的客户管理CRM系统,预先设置了三个角色,即系统管理员.信息管理员和客服人员. 本系统包括主要五大模块,即权限管理.业务信息.任务管理.公告管理和客户管理. 功 ...

  4. html大学生网站开发实践:企业网站设计——电子产品企业(8页) HTML+CSS+JavaScript

    web结课作业的源码:企业网站设计--电子产品企业(8页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见网页设计作业题材 ...

  5. 大学生网页制作期末作业——html+css+javascript+jquery旅游官网6页 html大学生网站开发实践作业 web网页设计实例作业

  6. 【数据库系统】第二部分 设计与应用开发(7) 数据库设计

    本文属于「数据库系统」系列文章之一,这一系列着重于「数据库系统知识的学习与实践」.由于文章内容随时可能发生更新变动,欢迎关注和收藏数据库系统系列文章汇总目录一文以作备忘.需要特别说明的是,为了透彻理解 ...

  7. oracle窗帘位图索引,Greenplum数据库设计开发规范参考.docx

    Greenplum数据库设计开发规范参考 Greenplum数据库设计开发规范参考文档2016年7月目 录Greenplum数据库设计开发规范1V1.511 前言41.1 文档目的41.2 文档范围4 ...

  8. 数据库设计和功能需求分析------后台设计概述

    功能需求分析和数据库设计 不论是Web开发还是Android开发,在设计后台的时候我们都要做的重要的事情不外乎两点:1. 需求分析:2.数据库表格的设计.在进行这两项工作的过程中,第一项工作对第二项起 ...

  9. 数据库设计讲解和案例分析 | mysql 入门

    数据库设计 什么是数据库设计 数据库设计是指在数据库系统开发过程中,根据用户需求,通过对数据进行分析.抽象和建模,设计出一个合理.高效的数据库结构的过程.数据库设计的目的是为了实现数据的存储.管理.维 ...

最新文章

  1. geojson地图_ThingJS的三维城市地图搭建逻辑解析
  2. JSP标准标签库(JSTL)--简介
  3. JVM 垃圾收集器CMS相关参数
  4. GitHub图片无法显示
  5. spring boot 源码_SpringBoot2.1.x源码环境搭建详解
  6. UNIX(多线程):20---生产者消费者实例
  7. 洛谷 P3211 [HNOI2011]XOR和路径(推dp+高斯消元)
  8. 【LeetCode】【HOT】4. 寻找两个正序数组的中位数(二分查找)
  9. RequestResponse
  10. 通过修改dat文档对植物大战僵尸关卡数进行修改
  11. 武汉大学国际软件学院夏令营笔试和面试简介
  12. 使用随机文件流类RandomAccessFile将一个文本文件倒置读出。
  13. tomcat 启动时报错:To prevent a memory leak, the JDBC Driver has been forcibly unregistered
  14. HTML5系列代码:个人页面
  15. VSCode实现Cesium的自动提示功能
  16. sshpass命令的安装使用
  17. 外汇交易中应用CCI指标进行趋势交易一单一结的编程实践(五)
  18. 怎么聊微信才能让她喜欢你
  19. SAP通过转义字符新增ICON图标
  20. 三路测径仪同时测量三根铜丝的外径

热门文章

  1. 如何利用GitHub搜索敏感信息
  2. 视频教程-19全新mysql教程零基础入门实战精讲mysql视频DBA数据库视频教程SQL教程-MySQL
  3. 第四节——生成go测试代码
  4. Web全栈~29.MySQL
  5. 只转不评:112家IT公司薪水一览表
  6. 《计算机网络技术》第三章课后习题答案(全)
  7. QList、QVector,QSet,std::vector,std::list直接的转换关系总结
  8. [ 常用工具篇 ] burpsuite_pro 安装配置详解(附安装包)
  9. 获诱人的实习offer、在Kaggle推AI大赛,大二学生如何做到?
  10. css内联样式_如何覆盖内联CSS样式