如何使用人工智能生成数据库模式?
为高效的后台解决方案设计数据库是一项具有挑战性的工作。找出所有需要的类、关系等是非常耗时的。
此外,在设计阶段做出错误的决定可能会对后期的生产造成不利影响。
本文将讨论如何使用人工智能生成数据库模式。我们将探讨使用人工智能的好处及其隐患,并提供几个实用示例。
此外,您还将学习如何进一步利用人工智能生成一个完整的后台,而无需编写任何代码!
使用人工智能进行数据库设计的好处
让我们先来看看使用人工智能的好处。
自动化与成本效益
将人工智能融入数据库设计的第一个优势,也可能是最明显的优势,就是能够自动执行各种任务。
这包括生成数据库模式、优化数据库、设置索引、编写高级查询等。
综上所述,可大大节省时间和成本。
优化
人工智能在优化数据库结构方面发挥着至关重要的作用。通过先进的算法和机器学习,人工智能可以分析数据使用模式,并对数据库模式提出改进建议。
这种优化可以提高应用程序的性能和响应速度。
与现有数据库整合
使用人工智能的另一大好处是,它可以帮助您升级现有数据库。
您只需向人工智能代理描述当前数据库或生成数据库转储,然后描述所需的升级。
如果使用Back4app Agent,这将变得更加简单。无需生成数据库转储,您可以告诉代理挂钩现有应用程序:
Connect to my "movie-reviews" app and create a new database class named `Watchlist`.
人工智能代理将收集所有需要的上下文,并相应地升级您的数据库。
不易出错
将人工智能融入数据库设计可减少人为错误的可能性。
传统的数据库设计和优化流程通常需要人工干预,从而增加了错误的风险,如不正确的模式设计、低效的查询或次优的索引选择。
轻松实现可视化
利用人工智能,您可以轻松实现数据库结构的可视化。要使数据库可视化,可提示人工智能代理为您最喜欢的 ER 图表工具生成可视化代码。
下面是Mermaid的例子:
Generate Mermaid ER diagram visualization code for my database.
结果
erDiagram
USER ||--o{ REVIEW : writes
MOVIE ||--o{ REVIEW : has
MOVIE ||--o{ MOVIEGENRE : has
USER {
username String
email String
emailVerified Boolean
displayName String
}
MOVIE {
title String
releaseDate Date
duration Number
director String
cast Array
synopsis String
}
// ...
使用人工智能进行数据库设计的陷阱
幻觉
人工智能代理有时会提供听起来合理但不正确或无意义的信息。这就是所谓的幻觉,大多数大型语言模型(LLM)都会出现这种情况。
因此,刚接触数据库的开发人员不应该使用人工智能来生成数据库模式。
性能
人工智能生成的数据库模式不保证是最优的。人工智能代理可能会误解你试图构建的内容,从而为你提供一个次优或有缺陷的数据库模式。
使用人工智能进行数据库设计是一个迭代过程。如果你发现人工智能代理犯了一个错误,请指出来。它也许能修正错误或改进模式。
边缘案例
如果您的业务需要非典型的数据库设计,使用人工智能可能不是最好的主意。大多数人工智能代理都是在大量通用应用程序上训练出来的。
他们不知道如何使用您的专业数据库。
如果是这种情况,你最好依靠专家,而不是一般的人工智能解决方案。
如何使用人工智能生成数据库模式?
在本节文章中,我们将介绍使用人工智能生成数据库模式的三个实用示例。这些示例包括一个简单的博客应用程序、一个电子商务网站和一个电影评论网站。
之后,我们将了解Back4app AI 代理的其他功能。
以下步骤需要您有一个Back4app 帐户。如果您还没有账户,请免费注册。
目标
- 生成数据库模式
- 使用模式创建数据库
- 分析自动生成的 RESTful 和 GraphQL API
- 审查自动生成的文件
- 利用云代码功能
什么是 Back4app Agent?
Back4app Agent是一个由人工智能驱动的代理,可让您通过对话的方式执行与云相关的任务。
这包括创建应用程序、部署应用程序、设计数据库以及编写 Dockerfile 或前端代码。
利用 Back4app Agent,您将拥有自己的私人 DevOps 助手,全天候为您服务。最重要的是,它可以随时学习,并在您的工作中不断改进。
代理与Back4app和Back4app Containers 紧密集成。如果您已经在使用 Back4app 的任何服务,该代理是您的必备工具!
请记住,人工智能代理并不是一个神奇的工具。它是一个大型、复杂的语言模型(LLM),可能会犯错误。如果出现这种情况,就需要由您来纠正了。此外,(像我一样)提交相同的提示可能会得到不同的回复。
案例 1:博客网站
作为第一个示例,我们将提示人工智能代理设计一个博客数据库模式。在这个示例中,我们将提供尽可能少的信息,看看人工智能代理能否解决缺失的部分。
导航至Back4app 代理页面,创建一个新代理,并使用以下提示:
Create a database schema for a simple blog. Each article in the blog should have a `title`, `shortContent`, `content`, `tags`, and other administrative data. The articles should be filterable by `tags`.
生成模式的实体关系(ER)图:
可以看到,代理成功创建了一个有效的数据库模式。它包含了所有必需的类,并处理了它们之间的关系。此外,它还包含了创建时间
、更新时间
和ACL
等 Parse 管理字段。
案例 2:电子商务网站
接下来,让我们尝试一个更复杂的数据库模式。这次是一个电子商务网站。
向人工智能代理提交以下提示:
Create a database schema for an e-commerce website. The database should allow sellers
to post listings. After a listing is posted, a user can open an order for it. The
order should be associated with the user's shipping address. Amazon is a good example
of what I'm looking for.
代理生成了以下数据库模式:
代理再次返回有效的数据库模式。
我唯一想修改的是订单
与地址的
关系。订单与单个地址相关联,而地址可跨订单重复使用,这样会更合理。
案例 3:审查网站
在最后一个示例中,我们将生成一个电影评论数据库模式。在这里,我们将提供尽可能多的上下文,看看人工智能代理能否根据我们的详细说明创建一个模式。
向人工智能代理发出以下提示:
Create a database schema for a movie review website. The database should contain
the following models: `Movie`, `MovieGenre`, `Review`, and `User` (Parse).
Notes:
- A `Movie` can have multiple genres
- The `Review` should contain at least `title`, `content`, `rating`, and `is_critic`
- Each `Review` should be associated with a `User`
Make sure to include all the Parse administrative fields, such as `createdAt`,
`updatedAt`, and `ACL`.
人工智能代理生成了以下数据库模式:
又一个伟大的方案。
所有的类都得到了处理,而且关系看起来也不错。在这里,人工智能代理甚至生成了一个中间模型,处理 “电影 "
和 “流派
“类之间的M:N
关系。
数据库生成
正如介绍中提到的,Back4app Agent 与 Back4app 的其他服务紧密集成。
生成数据库模式只是人工智能代理可以做的事情之一。一旦有了模式,我们就可以快速创建数据库。
向代理发出以下提示:
Create a Back4app app called "back4app-reviews" using the generated database schema.
很好,看来代理成功创建了应用程序和所需的数据库结构。
接下来,请代理向数据库输入一些数据:
Populate the database with sample users, movie genres, and reviews.
导航至Back4app 面板,选择您的应用程序并检查数据库条目,以确保数据库已创建并填充。
就是这样!
我们现在有了一个功能齐全的电影评论网站数据库。
自动生成的应用程序接口
Back4app 允许您通过以下方式与后台进行通信:
- 自动生成的 RESTful API
- 自动生成的 GraphQL API
- Parse SDK
让我们逐一分析。
RESTful API
REST 基于 HTTP 协议,使用不同的 HTTP 方法,如GET
、POST
、PUT
和DELETE
来操作资源。
这些操作通常称为 CRUD(创建、检索、更新、删除)。REST 支持多种数据格式,但首选格式是 JSON。
要测试 REST API,请导航到您的应用程序,然后选择侧边栏上的 “API > 控制台 > REST”。
请在表格中填写以下信息:
- 请求类型GET
- 终点:classes/Movie
- 万能钥匙正确
然后,点击 “发送查询 “执行查询。
您应该会收到与此类似的回复:
{
"results": [
{
"objectId": "AD1r4b9Oie",
"title": "The Fast Saga",
"duration": 120,
"director": "Justin Lin",
"cast": [
"Vin Diesel",
"Michelle Rodriguez"
],
"synopsis": "Street racing, heists, and espionage.",
"createdAt": "2024-02-03T21:53:54.724Z",
"updatedAt": "2024-02-03T21:53:54.724Z",
},
{
"objectId": "Sr6FQjnckj",
"title": "The Serious Case",
"duration": 140,
"director": "Christopher Nolan",
"cast": [
"Christian Bale",
"Michael Caine"
],
"synopsis": "An intricate story of human emotions and relationships",
"createdAt": "2024-02-03T21:53:54.724Z",
"updatedAt": "2024-02-03T21:53:54.724Z",
},
// ...
]
}
列表操作运行良好。电影已成功序列化并以 JSON 格式返回。为了了解 RESTful API 的工作原理,我建议您也测试一下其他操作。
要了解有关 RESTful API 的更多信息,请参阅《如何构建 RESTful API?
GraphQL API
GraphQL 既是一种查询语言,也是一种服务器端运行时,可促进应用编程接口 (API) 的开发。
这项技术使客户能够指定他们需要从应用程序接口获取的数据,从而无需依赖后台的预定义数据集。
要测试 GraphQL 查询,请导航至侧边栏上的 “API > 控制台 > GraphQL”。
接下来,运行以下 GraphQL 查询:
{
reviews {
count
edges {
node {
objectId
rating
}
}
}
}
正如您所看到的,查询获取了所有评论,但只包含了它们的objectId
和评分。
欢迎再次测试不同的查询和操作。
要了解有关 GraphQL 的更多信息,请参阅《如何构建 GraphQL API?
Parse SDK
Parse SDK 是连接前台和后台的推荐方式。这种方式最稳健、最不易出错。
Parse SDK 支持多种编程语言和框架,包括 JavaScript、TypeScript、Objective-C 等。
它允许您执行 CRUD 操作、高级查询等。
要了解如何使用 Parse SDK,请查看如何托管前端和后端?
自动生成文档
Back4app 的另一大优点是它能为所有数据库模型自动生成文档。
您将获得简单易懂的文字说明和各种编程语言(如 JavaScript、TypeScript、Objective-C、Swift 等)的便捷代码片段。
要访问文档,请导航到您的应用程序,然后选择侧边栏上的 “API > API Reference”:
下面是文档的截图:
云代码
Back4app 可让您通过所谓的云代码功能执行自定义 JavaScript 代码。
这些功能有助于执行复杂的操作,如数据汇总、导出等。
云代码功能可由 Parse 或 HTTP 请求触发,也可安排在未来运行。
云代码功能
假设我们需要一个云代码函数来计算一部电影的平均评分。我们可以自己编写和部署,但让人工智能代理来做会更简单。
导航至 AI Agent 屏幕,并按以下提示操作:
Please write me a Cloud Code function that calculates a movie's average rating. The the function should take in the movie's `objectId` and return a float (average rating).
请使用以下 cURL 命令进行测试:
$ curl -X POST \
-H "X-Parse-Application-Id: <your_app_id>" \
-H "X-Parse-REST-API-Key: <your_rest_api_key>" \
-H "Content-Type: application/json" \
-d '{"movieId": "<movie_object_id>"}' \
https://parseapi.back4app.com/functions/calculateAverageRating
确保替换占位符 (
<your_app_id>
,<your_rest_api_key>
, 和<movie_object_id>
) 替换为实际值。要获取 “应用程序 ID “和 “REST API 密钥”,请导航到您的应用程序,选择侧边栏上的 “应用程序设置 > 安全性和密钥”。
你应该会得到类似的答复:
{
"result": 4.25
}
要查看后台生成的代码,请导航至侧边栏上的 “云代码 > 功能与虚拟主机”。然后选择云文件夹中的main.js。
云代码调度
最后,提示人工智能代理安排每周工作:
Create and deploy a Cloud Code job named `clearRatings()`, which deletes all
the ratings. Schedule it to run every week.
代理已成功创建了一项作业,并按周进行了计划。
结论
总之,我们已经成功利用人工智能生成了数据库模式。
我们还学习了如何创建 Back4app 应用程序和数据库、生成示例数据以及实施自定义云代码功能,这一切都离不开对话的力量。
请记住,使用人工智能创建数据库模式是一个迭代过程。如果你认为某些功能可以更好地实现,请向代理解释,它就会相应地修改你的模式。
其他文章资源可在back4app-ai-agent-schemarepo 上获取。