《五天玩转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

相关文章
|
4月前
|
关系型数据库 MySQL Serverless
探索PolarDB MySQL版:Serverless数据库的灵活性与性能
本文介绍了个人开发者对阿里云PolarDB MySQL版,特别是其Serverless特性的详细评测体验。评测涵盖了产品初体验、性能观测、Serverless特性深度评测及成本效益分析等方面。尽管试用过程中遇到一些小问题,但总体而言,PolarDB MySQL版表现出色,提供了高性能、高可用性和灵活的资源管理,是个人开发者和企业用户的优秀选择。
|
3月前
|
JavaScript 小程序 开发者
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
593 0
|
4月前
|
缓存 前端开发 JavaScript
|
5月前
|
关系型数据库 Serverless 分布式数据库
揭秘PolarDB Serverless:大促洪峰秒级应对,无感伸缩见证科技魔法!一探云数据库管理的颠覆性革新,强一致性的守护神来了!
【8月更文挑战第13天】在云计算背景下,阿里巴巴的云原生数据库PolarDB Serverless针对弹性伸缩与高性能一致性提供了出色解决方案。本文通过一个电商平台大促活动的真实案例全面测评PolarDB Serverless的表现。面对激增流量,PolarDB Serverless能秒级自动扩展资源,如通过调用`pd_add_reader`快速增加读节点分摊压力;其无感伸缩确保服务平滑运行,不因扩展中断;强一致性模型则保障了数据准确性,即便在高并发写操作下也确保库存等数据的同步一致性。PolarDB Serverless简化了数据库管理,提升了系统效能,是追求高效云数据库管理企业的理想选择。
110 7
|
5月前
|
安全 关系型数据库 MySQL
揭秘:如何在无影的Serverless世界中,悄无声息地操控MySQL数据库!
【8月更文挑战第8天】在云计算领域,Serverless 枟能凭借其高效与弹性特性脱颖而出。本文采用问答形式解析函数计算环境中 MySQL 数据库的安全高效访问方法。介绍了如何利用数据库插件或 SDK 连接 MySQL,并提供了一个使用 Python 和 `pymysql` 在阿里云函数计算中连接 MySQL 的示例代码片段。同时强调了通过环境变量或密钥管理服务安全处理数据库凭证的重要性。随着 Serverless 技术的发展,数据库操作将更加简便。
95 7
|
6月前
|
SQL canal Serverless
Serverless 应用引擎使用问题之每次记录的数据很少,如何不使用外链数据库储存数据
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
6月前
|
存储 关系型数据库 Serverless
函数计算产品使用问题之连外部数据库请求特别慢是什么原因导致的
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
5月前
|
存储 Serverless API
Serverless 架构实现弹幕场景问题之在initializer方法中初始化数据库实例如何解决
Serverless 架构实现弹幕场景问题之在initializer方法中初始化数据库实例如何解决
38 0
|
6月前
|
小程序 安全 搜索推荐
【微信小程序开发实战项目】——个人中心页面的制作
本文介绍了如何设计和实现一个网上花店的微信小程序,包括个人中心、我的订单和我的地址等功能模块。个人中心让用户能够查看订单历史、管理地址和与客服互动。代码示例展示了`own.wxml`、`own.wxss`和`own.js`文件,用于构建个人中心界面,包括用户信息、订单链接、收藏、地址、客服和版本信息。我的订单部分展示了订单详情,包括商品图片、名称、销量、价格和订单状态,用户可以查看和管理订单。我的地址功能允许用户输入和编辑收货信息,包括联系人、性别、电话、城市和详细地址。每个功能模块都附有相应的WXML和WXSS代码,以及简洁的样式设计。
321 0
【微信小程序开发实战项目】——个人中心页面的制作
|
6月前
|
小程序 开发者
uniapp实战 —— 开发微信小程序的调试技巧
uniapp实战 —— 开发微信小程序的调试技巧
535 1

相关产品

  • 移动研发平台