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

简介: 本文整理自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为例,存储了三个字段,分别是userId、userName和userAvatar。它们代表了用户ID、用户姓名以及用户头像。

 

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

 image.png

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

 

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

 

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

image.png

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

 

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

 image.png

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

image.png

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

 image.png

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


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

相关文章
|
人工智能 小程序 安全
小程序跨平台框架未来的发展趋势是什么?
小程序跨平台框架未来的发展趋势是什么?
542 128
|
开发框架 人工智能 小程序
小程序常见的 UI 框架
【10月更文挑战第17天】小程序 UI 框架为开发者提供了便捷的工具和资源,帮助他们快速构建高质量的小程序界面。在选择框架时,需要综合考虑各种因素,以找到最适合项目的解决方案。随着技术的不断进步,UI 框架也将不断发展和创新,为小程序开发带来更多的便利和可能性。
1685 156
|
运维 物联网 关系型数据库
关于阿里云Serverless 框架的产品体验
阿里云Serverless框架简化运维,实现5分钟一键部署。弹性伸缩、按需付费等特点让企业专注业务创新,降低成本与运维负担。适用于Web应用、数据分析、物联网等多种场景,支持快速迭代与多语言开发。尽管面临资源配额、网络配置等挑战,其竞争力在于成本节约、功能集成与性能优化,尤其适合追求高效开发与弹性扩展的团队。
618 121
|
小程序 前端开发 JavaScript
微信小程序MINA框架
【6月更文挑战第4天】微信小程序MINA框架是一个专为小程序设计的框架,它主要分为两大部分:页面视图层(View)和AppService应用逻辑层。下面我将结合代码和图示来详细讲解MINA框架。
569 0
|
移动开发 小程序 JavaScript
开源的微信小程序框架
【8月更文挑战第22天】开源的微信小程序框架
1445 65
|
小程序 JavaScript 前端开发
小程序常见的UI框架
小程序常见的UI框架
1308 60
|
Cloud Native 安全 Serverless
云原生应用实战:基于阿里云Serverless的API服务开发与部署
随着云计算的发展,Serverless架构日益流行。阿里云函数计算(Function Compute)作为Serverless服务,让开发者无需管理服务器即可运行代码,按需付费,简化开发运维流程。本文从零开始,介绍如何使用阿里云函数计算开发简单的API服务,并探讨其核心优势与最佳实践。通过Python示例,演示创建、部署及优化API的过程,涵盖环境准备、代码实现、性能优化和安全管理等内容,帮助读者快速上手Serverless开发。
|
消息中间件 人工智能 Kubernetes
解密开源Serverless容器框架:事件驱动篇
Knative是一款基于Kubernetes的开源Serverless框架,提供了云原生、跨平台的Serverless编排标准。作为Serverless中必不可少的事件驱动能力,Knative Eventing提供了云原生的事件驱动能力。
|
消息中间件 弹性计算 关系型数据库
体验函数计算:高效处理多媒体文件的真实感受与实战总结
该方案在引导和文档方面做得较为详尽,仅在事件驱动机制部分略显简略。部署和代码示例实用,但需注意内存配置以避免超时。使用体验方面,函数计算表现出色,尤其在高并发场景下,显著提升了应用稳定性和成本效益。云产品如OSS、MNS等与函数计算配合流畅,ECS和RDS表现稳健。总体而言,这套方案弹性好、成本低,特别适合应对高并发或流量不确定的场景,值得推荐。
296 26

热门文章

最新文章

相关产品

  • 移动研发平台