数据库初始化
开通及使用
通过在创建模型时选择云数据库(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 数据库
- 访问控制台:进入 CloudBase 控制台
- 选择数据库:切换到 数据库/MySQL
- 创建模型:点击「新建模型」
第二步:设计模型结构
以电商系统为例,我们需要创建三个相关的数据模型:
📦 商品模型(products)
字段名 | 字段类型 | 约束 | 描述 |
---|---|---|---|
id | INT | PRIMARY KEY AUTO_INCREMENT | 商品ID |
name | VARCHAR(200) | NOT NULL | 商品名称 |
description | TEXT | NULL | 商品描述 |
price | DECIMAL(10, 2) | NOT NULL | 商品价格 |
stock | INT | DEFAULT 0 | 库存数量 |
category_id | INT | NULL | 分类ID |
status | ENUM | DEFAULT 'active' | 商品状态 |
created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
📋 订单模型(orders)
字段名 | 字段类型 | 约束 | 描述 |
---|---|---|---|
id | INT | PRIMARY KEY AUTO_INCREMENT | 订单ID |
user_id | INT | NOT NULL | 用户ID(外键) |
total_amount | DECIMAL(10, 2) | NOT NULL | 订单总金额 |
status | ENUM | DEFAULT 'pending' | 订单状态 |
created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
updated_at | DATETIME | ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
📱 使用 SDK 操作数据
初始化 SDK
- 小程序
- Web
- 云函数
// 下载并引入 SDK 文件
const {
init
} = require("./wxCloudClientSDK.umd.js");
// 初始化云开发
wx.cloud.init({
env: "your-env-id", // 替换为您的环境 ID
});
// 初始化数据模型客户端
const client = init(wx.cloud);
const models = client.models;
import {
init
} from "@cloudbase/js-sdk";
// 初始化 CloudBase
const app = init({
env: "your-env-id"
});
// 初始化数据模型客户端
const client = init(app);
const models = client.models;
const {
init
} = require("@cloudbase/node-sdk");
// 初始化 CloudBase(云函数中无需密钥)
const app = init({
env: "your-env-id"
});
// 初始化数据模型客户端
const client = init(app);
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 数据模型。接下来可以:
开始构建您的关系型数据库应用吧! 🎉