《五天玩转EMAS Serverless》——第三节 实战:小程序疫苗预约-框架搭建&数据库管理【中】

本文涉及的产品
移动研发平台 EMAS,开发者版免费套餐
简介: 本文整理自EMAS Serverless讲师柳色,在《5天玩转EMAS Serverless训练营》的分享。本篇内容主要分为五个部分:1.小程序疫苗预约项目介绍2.业务场景设计3.数据库设计4.数据操作命令学习5.云数据库控制台功能介绍

接上篇:

https://developer.aliyun.com/article/1224153?groupCode=emas


三、 数据库设计

image.png

接下来,需要设计一个数据库表系统支撑上述业务。

 

首先,进行关系型数据库的设计。如左图所示,“矩形”代表一张表的实体信息。一共有4个实体,包括用户,疫苗,接种点以及预约单。

 

梳理出这四个实体两两之间的关系。以用户和预约单为例,一张预约单包含用户信息疫苗信息接种地点。疫苗和接种点之间存在库存的关系。某个疫苗会分发到多个接种点,方便用户接种。同时,某个接种点也会存在多种预约。

 

接下来,根据实体关系设计一个模型。右图显示每个实体需要的字段。通常在关系型数据库的设计中,通过三张实体表展示疫苗、接种点以及两者之间多对多的关系。EMAS Serverless基于MongoDB设计,即文档型数据库。它和关系型数据库的区别在于不需要像MySQL一样严格遵守关系型设计。

 image.png

接下来讲一讲MongoDB设计。MongoDB是文档型数据库,在MongoDB里,“表”被称为“集合”;“集合里的一条数据记录”叫做“一个文档”。如上图所示,JSON格式的文档以key value的形式记录用户数据。

 

以User为例,存储了三个字段,分别是userIduserNameuserAvatar。它们代表了用户ID用户姓名以及用户头像。

 

关于接种地点,我们简化了最小业务字段,只关心接种地点的“siteId”和“address”。“siteId”代表接种点的编号,它是全局唯一的。“address”代表接种点的具体地址信息。

 image.png

关于疫苗表定义第一个字段“vaccineId”代表疫苗id,是唯一性质的字段。第二个字段是“subType”,代表疫苗的子类型。第三个字段是“type”,代表了疫苗的主类型。“vaccinationObject”和“introduction”字段代表疫苗的接种对象以及详情介绍,“siteList”字段存储疫苗接种点的信息。它以文档嵌入的方式,把实体关系直接存储到副文档里。

 

“siteList”字段代表一个数组每个元素包含了两个字段第一个字段是“siteId”,代表了某个接种点。第二个字段“remainingQuantity”代表了疫苗的剩余数量。

 

综上所述,疫苗文档存储了疫苗的主类型副类型接种对象疫苗描述接种地点地点ID地点库存。

image.png

预约单appointment和其他三个实体都有关系,需要存储userIdsitelvaccineId。“status”代表了当前预约单状态——用户是否接种。“vaccine”和“site”代表疫苗的详细信息,包含了疫苗ID疫苗主类型疫苗子类型。“date”代表疫苗接种日期。

 

为了避免多次查表提高查询效率,疫苗与接种点分别嵌入一个子文档。以空间换时间的方式,加速预约单的查询速度。

 image.png

接下来,进入Serverless控制台完成数据库建模。选中服务空间,选中云数据库控制台。创建预约单表接种地点表用户表疫苗信息表之后,一键导入模拟数据。

image.png

导入成功后,云数据会自动生成“_id”字段,业务字段siteId和address代表了接种点ID以及接种点地址。

 image.png

接下来导入疫苗信息。操作方法同上。业务字段包括疫苗的相关信息。


接下篇:https://developer.aliyun.com/article/1224147?groupCode=emas

相关文章
|
23天前
|
开发框架 人工智能 小程序
小程序常见的 UI 框架
【10月更文挑战第17天】小程序 UI 框架为开发者提供了便捷的工具和资源,帮助他们快速构建高质量的小程序界面。在选择框架时,需要综合考虑各种因素,以找到最适合项目的解决方案。随着技术的不断进步,UI 框架也将不断发展和创新,为小程序开发带来更多的便利和可能性。
42 2
|
2月前
|
小程序 JavaScript 前端开发
小程序常见的UI框架
小程序常见的UI框架
300 60
|
3月前
|
移动开发 小程序 JavaScript
开源的微信小程序框架
【8月更文挑战第22天】开源的微信小程序框架
182 65
|
5月前
|
小程序 前端开发 JavaScript
微信小程序MINA框架
【6月更文挑战第4天】微信小程序MINA框架是一个专为小程序设计的框架,它主要分为两大部分:页面视图层(View)和AppService应用逻辑层。下面我将结合代码和图示来详细讲解MINA框架。
60 0
|
2月前
|
消息中间件 弹性计算 关系型数据库
体验函数计算:高效处理多媒体文件的真实感受与实战总结
该方案在引导和文档方面做得较为详尽,仅在事件驱动机制部分略显简略。部署和代码示例实用,但需注意内存配置以避免超时。使用体验方面,函数计算表现出色,尤其在高并发场景下,显著提升了应用稳定性和成本效益。云产品如OSS、MNS等与函数计算配合流畅,ECS和RDS表现稳健。总体而言,这套方案弹性好、成本低,特别适合应对高并发或流量不确定的场景,值得推荐。
68 24
|
3月前
|
小程序 Serverless 开发工具
小程序开发问题之在小程序中安装并初始化小程序Serverless客户端SDK如何解决
小程序开发问题之在小程序中安装并初始化小程序Serverless客户端SDK如何解决
|
5月前
|
小程序 开发者 Windows
轻量、可靠的小程序 UI 框架 -- Vant Weapp的安装和使用
轻量、可靠的小程序 UI 框架 -- Vant Weapp的安装和使用
141 1
|
6月前
|
JavaScript Java 测试技术
基于SSM框架的童装购买平台微信小程序+vue.js附带文章和源代码设计说明文档ppt
基于SSM框架的童装购买平台微信小程序+vue.js附带文章和源代码设计说明文档ppt
56 1
|
5月前
|
存储 NoSQL 机器人
Knative 实战:基于 Knative Serverless 技术实现天气服务-下篇
Knative 实战:基于 Knative Serverless 技术实现天气服务-下篇
|
1月前
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
215 3

相关产品

  • 移动研发平台