跳到主要内容

数据库初始化

开通及使用

通过在创建模型时选择云数据库(MySQL型),如果数据库还未开通,可以选择启用数据库。

启用过程将会耗时2~3分钟,请耐心等待。

启用完成后即可继续使用云数据库(MySQL型)来创建模型。

MySQL 数据库是 CloudBase 提供的关系型数据库服务,支持完整的 SQL 功能。本文将介绍如何通过数据模型来初始化和使用 MySQL 数据库。

📐 表结构管理

新建 MySQL 数据模型 时,会同时在 MySQL 数据库中创建对应的表结构,即可以通过 CMS 的管理页面进行可视化展示数据,同时也支持标准 SQL 查询操作。

数据模型管理页面

🚀 创建第一个 MySQL 数据模型

🎯 实际案例:电商系统

让我们通过创建一个电商系统的数据模型来演示如何使用 MySQL 数据库的关系型特性:

{
"users": {
"id": 1,
"username": "zhangsan",
"email": "zhangsan@example.com",
"phone": "13800138000",
"status": "active",
"created_at": "2024-01-15T10:30:00Z"
},
"products": {
"id": 1,
"name": "iPhone 15 Pro",
"description": "最新款苹果手机",
"price": 7999.00,
"stock": 100,
"category_id": 1,
"status": "active"
},
"orders": {
"id": 1,
"user_id": 1,
"total_amount": 7999.00,
"status": "paid",
"created_at": "2024-01-15T14:30:00Z"
}
}

第一步:开通 MySQL 数据库

  1. 访问控制台:进入 CloudBase 控制台
  2. 选择数据库:切换到 数据库/MySQL
  3. 创建模型:点击「新建模型」

第二步:设计模型结构

以电商系统为例,我们需要创建三个相关的数据模型:

📦 商品模型(products)

字段名字段类型约束描述
idINTPRIMARY KEY AUTO_INCREMENT商品ID
nameVARCHAR(200)NOT NULL商品名称
descriptionTEXTNULL商品描述
priceDECIMAL(10, 2)NOT NULL商品价格
stockINTDEFAULT 0库存数量
category_idINTNULL分类ID
statusENUMDEFAULT 'active'商品状态
created_atDATETIMEDEFAULT CURRENT_TIMESTAMP创建时间

📋 订单模型(orders)

字段名字段类型约束描述
idINTPRIMARY KEY AUTO_INCREMENT订单ID
user_idINTNOT NULL用户ID(外键)
total_amountDECIMAL(10, 2)NOT NULL订单总金额
statusENUMDEFAULT 'pending'订单状态
created_atDATETIMEDEFAULT CURRENT_TIMESTAMP创建时间
updated_atDATETIMEON UPDATE CURRENT_TIMESTAMP更新时间

📱 使用 SDK 操作数据

初始化 SDK

// 下载并引入 SDK 文件
const {
init
} = require("./wxCloudClientSDK.umd.js");

// 初始化云开发
wx.cloud.init({
env: "your-env-id", // 替换为您的环境 ID
});

// 初始化数据模型客户端
const client = init(wx.cloud);
const models = client.models;

基本数据操作

创建商品

// 创建新商品
const {
data
} = await models.products.create({
data: {
name: "iPhone 15 Pro",
description: "最新款苹果手机,搭载A17 Pro芯片",
price: 7999.00,
stock: 100,
category_id: 1,
status: "active"
}
});

console.log("商品创建成功:", data.id);

创建订单

// 创建新订单
const {
data
} = await models.orders.create({
data: {
user_id: 1, // 关联用户ID
total_amount: 7999.00,
status: "pending"
}
});

console.log("订单创建成功:", data.id);

查询商品列表

// 查询在售商品
const {
data
} = await models.products.list({
filter: {
where: {
status: {
$eq: "active"
},
stock: {
$gt: 0
} // 库存大于0
}
},
orderBy: [{
created_at: "desc"
} // 按创建时间倒序
],
pageSize: 20,
pageNumber: 1,
getCount: true
});

console.log("商品列表:", data.records);
console.log("总数:", data.total);

🎯 最佳实践

1. 表结构设计建议

  • 索引设计:为常用查询字段创建索引,提高查询性能
  • 枚举类型:使用 枚举 限制状态字段的可选值

2. 模型设计原则

  • 规范化设计:避免数据冗余,遵循数据库范式
  • 关联关系:设计清晰的表间关系(一对一、一对多、多对多)
  • 字段命名:使用有意义的英文字段名,遵循命名规范
  • 必填验证:合理设置必填约束,保证数据完整性

3. 性能优化

  • 索引优化:为常用查询字段创建合适的索引
  • 分页查询:大量数据使用分页避免性能问题
  • 字段选择:查询时只返回需要的字段

4. 安全建议

  • 参数化查询:使用数据模型 SDK 自动防止 SQL 注入
  • 权限控制:通过安全规则控制数据访问权限
  • 密码加密:敏感信息如密码必须加密存储

🚀 下一步

恭喜!您已经成功创建了第一个 MySQL 数据模型。接下来可以:

开始构建您的关系型数据库应用吧! 🎉