《五天玩转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为例,存储了三个字段,分别是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

相关文章
|
2月前
|
缓存 小程序 前端开发
商城/点餐/家政类小程序源码合集_微信抖音小程序源码开发从入门到精通实战
本文系统讲解如何利用现有源码快速开发商城、点餐、家政类微信/抖音小程序,涵盖环境搭建、核心功能实现、多平台部署与优化,提供完整技术方案。实战导向,助力开发者高效入门与落地。
|
2月前
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
6月前
|
JSON 监控 小程序
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
586 14
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
|
9月前
|
人工智能 自然语言处理 小程序
让小程序拥有“视觉之眼“:DeepSeek图像识别实战指南
本文介绍如何通过DeepSeek计算机视觉技术,赋予小程序“看懂世界”的能力。从构建视觉感知系统、训练专属视觉词典到创造会思考的界面,详细讲解了实现智能相册、植物识别器和老旧照片修复等功能的步骤。最后探讨性能优化与安全合规要点,展望未来视觉智能应用的无限可能。
|
缓存 前端开发 JavaScript
|
JavaScript 小程序 开发者
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
2032 0
|
小程序 安全 搜索推荐
【微信小程序开发实战项目】——个人中心页面的制作
本文介绍了如何设计和实现一个网上花店的微信小程序,包括个人中心、我的订单和我的地址等功能模块。个人中心让用户能够查看订单历史、管理地址和与客服互动。代码示例展示了`own.wxml`、`own.wxss`和`own.js`文件,用于构建个人中心界面,包括用户信息、订单链接、收藏、地址、客服和版本信息。我的订单部分展示了订单详情,包括商品图片、名称、销量、价格和订单状态,用户可以查看和管理订单。我的地址功能允许用户输入和编辑收货信息,包括联系人、性别、电话、城市和详细地址。每个功能模块都附有相应的WXML和WXSS代码,以及简洁的样式设计。
885 0
【微信小程序开发实战项目】——个人中心页面的制作
|
1月前
|
人工智能 运维 Kubernetes
Serverless 应用引擎 SAE:为传统应用托底,为 AI 创新加速
在容器技术持续演进与 AI 全面爆发的当下,企业既要稳健托管传统业务,又要高效落地 AI 创新,如何在复杂的基础设施与频繁的版本变化中保持敏捷、稳定与低成本,成了所有技术团队的共同挑战。阿里云 Serverless 应用引擎(SAE)正是为应对这一时代挑战而生的破局者,SAE 以“免运维、强稳定、极致降本”为核心,通过一站式的应用级托管能力,同时支撑传统应用与 AI 应用,让企业把更多精力投入到业务创新。
397 29
|
2月前
|
存储 人工智能 Serverless
函数计算进化之路:AI 应用运行时的状态剖析
AI应用正从“请求-响应”迈向“对话式智能体”,推动Serverless架构向“会话原生”演进。阿里云函数计算引领云上 AI 应用 Serverless 运行时技术创新,实现性能、隔离与成本平衡,开启Serverless AI新范式。
407 12
|
7月前
|
SQL 分布式计算 Serverless
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
鹰角网络为应对游戏业务高频活动带来的数据潮汐、资源弹性及稳定性需求,采用阿里云 EMR Serverless Spark 替代原有架构。迁移后实现研发效率提升,支持业务快速发展、计算效率提升,增强SLA保障,稳定性提升,降低运维成本,并支撑全球化数据架构部署。
759 56
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用

相关产品

  • 移动研发平台
  • 下一篇
    oss云网关配置