前言
因一些课程设计要写长篇分析报告,这里借用ai做一篇指导教程,分上下两篇。这篇也会教如何让ai给你你想要的答案,众所周知,现在的ai并不智能,不针对各类厂家,但是放出来的确实表象如此。
但其实问法决定了我们很多时候无法解锁其100%的功能,错误的问答方式甚至让回复比1.0的版本更加混乱无序。所以,这篇也有ai指导性的说明。
条件
假定,我们要对一张小票进行数据库分析,那么所需要写入的报告至少要包含以下内容:
- 数据库相关操作知识
- 关系模型和概念结构先关知识
- 分析过程和表设计思路
- 构建数据库流程和依赖关系的理由
- 模拟数据。
- 查询,一定程度上查询出小票该有的数据(可选)
工具
Navicate15(可以不一样,只用模型,查询语句,不使用更多功能)
er图制作网站,也可自己画图,不过这个真的很好用:
https://zhzsoft.cn/er/
一个可插图的文档编辑软件wps啦,Word文档都可。
问答ai,我这里展示用的是阿里的通义千问,也可用星火,不过我个人认为通义千问的排版更舒服。
制作
知识罗列
要做一个长篇的报告最重要的就是知识要完全覆盖,非毕设或者上交比赛的论文类,大多对文献引用,专业格式要求较低,我做的这类是课程设计的结课报告,附带有一个答辩,没有那么严格,所以这边可加入大量篇幅。
请尽可能覆盖你可能用到的知识点,这里可以用ai,我们分析一下该怎么问
- 首先,我把作者分为不会,不了解数据库的人和了解一些或者会数据库的人,我们先确定好问的内容,也就是通过ai来问出自己的需要,然后做知识点筛选就好了,举个例子。
问:请问,我想写一篇数据库课程设计报告,我都可能用到哪些知识呢?
通义ai:
撰写一份数据库课程设计报告时,你需要综合运用数据库理论与实践方面的知识。以下是一些可能用到的关键知识点:
1. 数据库系统概览
数据库系统的定义
数据库管理系统(DBMS)的作用
数据库系统的主要组成部分(如数据定义语言DDL、数据操纵语言DML等)
2. 数据模型
关系模型
层次模型
网状模型
面向对象模型
NoSQL模型
3. 关系数据库理论
关系代数
关系演算
范式化(第一范式至第三范式,BCNF)
数据完整性约束(实体完整性、参照完整性和用户定义完整性)
4. SQL
SQL基础知识
数据定义(CREATE, ALTER, DROP)
数据操作(INSERT, UPDATE, DELETE)
数据查询(SELECT语句)
子查询
连接(JOIN)
视图
存储过程与触发器
5. 数据库设计
需求分析
概念设计(ER模型)
逻辑设计
物理设计
性能优化
6. 数据库安全
访问控制
加密
审计
备份与恢复策略
7. 数据库管理
数据库性能调优
查询优化
索引使用
并发控制
事务管理(ACID属性)
8. 分布式数据库
分布式系统的概念
分布式数据库的特点
数据分区
数据复制
9. 新兴技术
大数据处理
数据仓库
数据挖掘
云计算中的数据库服务
可以看到从6往后就已经不是我们设计所涉及的内容了,前五条让ai展开说明,即可,通义的排版可直接用,我们需要说“前五条请展开说明”,ai会给我们这样的知识汇总:
当然可以。以下是关于数据库课程设计报告中前五条内容的详细展开说明:
1. 数据库系统概览
定义: 数据库是一个长期存储在计算机内的、有组织的、可共享的数据集合。数据库系统包括数据库本身、数据库管理系统(DBMS)、应用程序、数据库管理员(DBA)和最终用户。
DBMS的作用: DBMS是位于用户与操作系统之间的软件层,用于管理和控制数据库资源。它的主要功能包括数据定义、数据操作、数据控制和数据维护。
数据库系统的主要组成部分:
数据定义语言(DDL): 用于定义数据库结构的语言,如创建表、索引等。
数据操纵语言(DML): 用于添加、删除和更新数据的语言。
数据控制语言(DCL): 用于管理权限和控制访问的语言。
事务控制语言(TCL): 用于管理事务的开始、提交和回滚。
......
不需要写太多,因为我们知识点篇幅太多会提高查重率,适当即可,因为我们毕竟是数据库设计,相信多少听过数据库的人都应该知到经典的:增删改查。这些还有一些索引语句,也可替换一部分纯知识点来做加分项。
- 然后我们前面说了er图,其实这部分内容也可以加上,这个ai本身不支持绘画er图,所以只需要说类似:“请讲一下er图相关知识”。ai就会给罗列,因为篇幅,这里不举例了。
研究对象分析
也就是你对这个小票的看法和推理过程,因为我这边暂时没有小票,向ai寻求一张肯存在的数据,然后询问,小票模板如下:
购物小票
商家信息:
商家名称
商家地址
商家联系电话
交易日期和时间:
交易发生的日期
交易发生的时间
销售单据信息:
发票或小票号码
商品或服务信息:
商品名称或服务项目
单位价格
数量
总价
这时候就要准备让他以设计者的身份帮我们设计数据库了,我们需要先给ai一个大方向,像这样。
我们并不是一定需要让ai把话说完,目前市面上的ai采取的是读取分析,也就是如果分析数据的时候,将其打断,不让他把你的信息重复一遍,那么结果很可能会很混乱,我们后面会讲到,像这样只要他已经完成了第一句话,“我可以”这样的话,我们就已经可以打断了,不过这样的给与前提,总字数不会太多就是了。
现在我们把结构给ai
他给了我一些表单还有数据库创建语句,我们先保存备用
CREATE TABLE Merchant (
MerchantID INT PRIMARY KEY,
Name VARCHAR(255) NOT NULL,
Address VARCHAR(255),
Phone VARCHAR(20)
);
CREATE TABLE Sale (
SaleID INT PRIMARY KEY,
MerchantID INT,
SaleDate DATE NOT NULL,
SaleTime TIME NOT NULL,
InvoiceNumber VARCHAR(50) UNIQUE,
FOREIGN KEY (MerchantID) REFERENCES Merchant(MerchantID)
);
CREATE TABLE Product (
ProductID INT PRIMARY KEY,
ProductName VARCHAR(255) NOT NULL,
UnitPrice DECIMAL(10, 2) NOT NULL
);
CREATE TABLE SaleDetail (
SaleDetailID INT PRIMARY KEY,
SaleID INT,
ProductID INT,
Quantity INT NOT NULL,
TotalPrice DECIMAL(10, 2) NOT NULL,
FOREIGN KEY (SaleID) REFERENCES Sale(SaleID),
FOREIGN KEY (ProductID) REFERENCES Product(ProductID)
);
然后,其实我们并没有得到想要的答案,还记得么?我们需要的是设计过程,ai给的是结果,这出现了回答偏差,那么我们就需要修正。
请说明这么设计的原因,每个数据类型和依赖存在的原因都要写出,缩短到300字以内
解释:
- 首先我们要的是设计原因,你需要明确告诉ai你的需求,然后他既然已经给了你建表的语句,那么具体的细节,包括我前面说的依赖,还有这次他说的数据类型,我们都要囊括进去,以便ai修正
- 其次缩短到300字,为什么不是100不是200,300会不会很多,首先设定范围是为了防止ai过度解读你的话,有些ai的版本在2.5偏下的时候会非常乐于发长解读,我们并不需要那么长,但是太低会导致ai不去思考,套用自己上一段的内容。我们在300这个区间里找到需要的,快速截取一段作为我们需要的即可。
- 最后我们得到的分析如下:
Merchant 表存储商家信息,使用 INT 类型的 MerchantID 作为主键,确保每个商家都有唯一的标识。Name 和 Address 使用 VARCHAR 类型来存储文本信息,Phone 也是 VARCHAR 类型,因为电话号码可能包含特殊字符。
Sale 表记录每次交易的信息,SaleID 作为主键,MerchantID 作为外键,确保每笔交易都关联到一个合法的商家。SaleDate 和 SaleTime 分别使用 DATE 和 TIME 类型来精确记录交易时间。
Product 表存储商品信息,ProductID 作为主键,ProductName 使用 VARCHAR 类型存储商品名称,UnitPrice 使用 DECIMAL 类型存储单价,保证数值精度。
SaleDetail 表记录每笔交易中的商品明细,SaleDetailID 作为主键,SaleID 和 ProductID 作为外键,确保每条明细都关联到一笔合法的交易和一个合法的商品。Quantity 使用 INT 类型来存储数量,TotalPrice 使用 DECIMAL 类型来存储总价。
数据库设计
数据部分
下章节会解释如何使用navicate和生成er图,我们先把ai回到上个节点,让他为我们添加一些数据,以增长我们的篇幅,和数据校验。
这里点击后可以重置你之前的问答,将这句话重新编辑来得到你需要的结果,我们这里改成:
请根据你所提供的数据库文件,添加一些可用数据
ai给出的数据添加
1. Merchant (商家信息表)
INSERT INTO Merchant (MerchantID, Name, Address, Phone)
VALUES
(1, 'ABC 商店', '上海市浦东新区世纪大道100号', '13800138000'),
(2, 'XYZ 超市', '北京市朝阳区建国路88号', '13900139000');
2. Sale (销售单据表)
INSERT INTO Sale (SaleID, MerchantID, SaleDate, SaleTime, InvoiceNumber)
VALUES
(1, 1, '2024-07-26', '14:30:00', 'INV12345'),
(2, 2, '2024-07-26', '15:15:00', 'INV67890');
3. Product (商品信息表)
INSERT INTO Product (ProductID, ProductName, UnitPrice)
VALUES
(1, '苹果', 5.50),
(2, '牛奶', 10.00),
(3, '面包', 3.00);
4. SaleDetail (销售明细表)
INSERT INTO SaleDetail (SaleDetailID, SaleID, ProductID, Quantity, TotalPrice)
VALUES
(1, 1, 1, 2, 11.00), -- 苹果 x 2
(2, 1, 2, 1, 10.00), -- 牛奶 x 1
(3, 2, 3, 3, 9.00); -- 面包 x 3
ps:
复制文本框请点击这里,因为不同版本并不支持相同的markdown格式转换,长篇粘贴,会导致这些1234的行号也加入进去,非常不妥。)
ps:
复制文本框请点击这里,因为不同版本并不支持相同的markdown格式转换,长篇粘贴,会导致这些1234的行号也加入进去,非常不妥。)