ChatGPT实战100例 - (08) 数据库设计转化为SQL并获取ER图

这篇具有很好参考价值的文章主要介绍了ChatGPT实战100例 - (08) 数据库设计转化为SQL并获取ER图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ChatGPT实战100例 - (08) 数据库设计转化为SQL并获取ER图

一、需求与思路

在你还在手撸SQL?ChatGPT笑晕在厕所 这篇博文中
针对经典3表设计:
学生表 S(SNO,SNAME,AGE,SEX),其属性表示学生的学号、姓名、年龄和性别;
选课表 SC(SNO,CNO,GRADE),其属性表示学生的学号、所学课程的课程号和成绩;
课程表 C(CNO,CNAME,TEACHER),其属性表示课程号、课程名称和任课教师姓名。
写了一套增删查改,已经证明ChatGPT绝非浪得虚名。

但这篇文章并没有涉及ER图的部分,所以将基本的SQL建表和ER图单独列出。

二、SQL建表

问题:

作为一名优秀的数据库专家,针对经典3表设计:
学生表 S(SNO,SNAME,AGE,SEX),其属性表示学生的学号、姓名、年龄和性别;
选课表 SC(SNO,CNO,GRADE),其属性表示学生的学号、所学课程的课程号和成绩;
课程表 C(CNO,CNAME,TEACHER),其属性表示课程号、课程名称和任课教师姓名。
写出SQL建表语句,要求使用英文字段中文注释描述

回答:
这里是经典3表设计的SQL建表语句,使用英文字段名和中文注释:

-- 学生表S 
CREATE TABLE Student(
    SNO VARCHAR(10),      -- 学号
    SNAME VARCHAR(20),    -- 姓名
    AGE INT,              -- 年龄
    SEX VARCHAR(2) CHECK(SEX IN ('M','F')), -- 性别
    CONSTRAINT Student_PK PRIMARY KEY (SNO)   -- 主键约束
);  

-- 选课表SC  
CREATE TABLE SelectCourse(
    SNO VARCHAR(10),       -- 学号 
    CNO VARCHAR(10),      -- 课程号
    GRADE DECIMAL(4,1),   -- 成绩
    CONSTRAINT SC_PK PRIMARY KEY(SNO,CNO),    -- 主键
    CONSTRAINT SC_FK_Student FOREIGN KEY(SNO) REFERENCES Student(SNO), -- 外键,引用学生表 
    CONSTRAINT SC_FK_Course FOREIGN KEY(CNO) REFERENCES Course(CNO)   -- 外键,引用课程表
);   

-- 课程表C  
CREATE TABLE Course(
    CNO VARCHAR(10),     -- 课程号 
    CNAME VARCHAR(40),   -- 课程名称
    TEACHER VARCHAR(20), -- 任课教师
    CONSTRAINT Course_PK PRIMARY KEY(CNO)      -- 主键
);

表名称和属性使用英文,并在每行注释中给出对应的中文释义。该设计同样创建了学生表、选课表和课程表,并设置主键约束和外键约束。
相比直接使用中文表名和字段,此种方式可以最大限度地兼容不同的数据库和配置,同时也为不懂中文的人提供了属性的翻译,具有更好的通用性。
所以,如果要同时满足SQL语句的中文友好性,以及数据库的兼容性,此种使用英文字段加中文注释的方式是比较理想的设计方式。它可以让更多的人理解和使用该SQL语句。
请注意,这里的表名称和属性都使用英文,注释使用的是中文,所以实际存储的名称依然是英文,这也是为了数据库的通用性考虑。我们在SQL语句中采用中文注释只是为了人们更容易理解每个字段的含义。

这个说的有点详细

三、绘制

问题:

针对以上sql建表语句,使用plantuml语法绘制ER图

回答:
根据前面生成的SQL建表语句,这里使用Plantuml语法绘制相应的ER图:

@startuml

' 设置字体大小和整图的方向
skinparam defaultTextAlignment center 
skinparam monochrome true  
skinparam size 14  
left to right direction  

' 定义实体类型,圆角实体表示弱实体
entity 学生 {
    *学号 
    姓名
    年龄 
    性别
}

entity 选课 {
    *学号 
    *课程号
    成绩 
}   

entity 课程{
  *课程号
  课程名称
  任课教师  
}

' 连接选课与学生实体,并标注多对一关系 
选课 ||--o{ 学生 : 多对一

' 连接选课与课程实体,并标注多对一关系
选课 }o--|| 课程 : 多对一

' 设置实体的主键  
学生 : 学号 
课程 : 课程号
选课 : 学号 + 课程号  

@enduml

该ER图清晰地描述了3个实体(学生、选课、课程)之间的结构化关系:

  • 学生实体和选课实体之间的多对一关系,表示一个学生可以选多门课程。
  • 选课实体和课程实体之间的多对一关系,表示一门课程可以被多名学生选择。
  • 各实体的主键也被明确标注出来,如学生实体的主键为学号,课程实体的主键为课程号,选课实体的主键为学号和课程号的组合。
    ChatGPT实战100例 - (08) 数据库设计转化为SQL并获取ER图

所以,通过简单的Plantuml语法,我们就可以很直观地描述SQL语句中的表结构和键约束关系,生成一个清晰准确的ER图。这也体现了Plantuml作为一款文本绘图工具,在数据库设计领域的实用性。

四、 总结

回顾一下,本节主要prompt知识点:文章来源地址https://www.toymoban.com/news/detail-499012.html

  • CPU大法
作为一名优秀的{高帽子},请{干啥}
  • 根据需求建表
针对{某某某设计},写出SQL建表语句,要求使用英文字段中文注释描述
  • 根据建表SQL绘制ER图
针对以上sql建表语句,使用plantuml语法绘制ER图

到了这里,关于ChatGPT实战100例 - (08) 数据库设计转化为SQL并获取ER图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据库——MySQL(实战项目1)】(1)图书借阅系统——数据库结构设计

    经过前期的学习,我们已经掌握数据库基础操作,因此是时候来做一个实战项目了—— 图书借阅系统 。对于图书借阅系统,相信大家不难想到至少需要 3 张表,分别是: 借阅人表 , 图书表 和 借阅信息表 (当然不限于这些表,大家可以根据自己的想法创建其它表)。 那么

    2024年02月03日
    浏览(69)
  • 【100天精通python】Day44:python网络爬虫开发_爬虫基础(爬虫数据存储:基本文件存储,MySQL,NoSQL:MongDB,Redis 数据库存储+实战代码)

    目录 1 数据存储 1.1 爬虫存储:基本文件存储 1.2 爬虫存储:使用MySQL 数据库 1.3 爬虫 NoSQL 数据库使用 1.3.1 MongoDB 简介

    2024年02月11日
    浏览(73)
  • 网上商城系统MySql数据库设计项目实战

    说明:这是一个数据库课程设计实战项目(附带 代码+文档+视频讲解 ),如需 代码+文档+视频讲解 可以直接到文章最后获取。 项目背景         互联网的发展让各个产业突破传统的发展领域,产业功能不断进化,实现同一内容的多领域共生,前所未有地扩大了传统产业链,

    2024年01月25日
    浏览(54)
  • 基于MYSQL的论坛管理系统数据库设计项目实战

    说明:这是一个数据库课程设计实战项目(附带 代码+文档+视频讲解 ),如需 代码+文档+视频讲解 可以直接到文章最后获取。 项目背景 随着互联网行业的发展,各种论坛纷纷而来。在论坛系统中,可让用户注册成为论坛会员,取得发表言论的资格,同时也需要论坛信息管理

    2024年02月11日
    浏览(60)
  • Docker的使用教程、学习笔记,附实战:部署chatgpt网页版ui,部署mysql8数据库

    作者:ChenZhen 博客地址:https://www.chenzhen.space/ 版权:来自b站视频 【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 因为黑马的课件ppt做的实在是太好了,基本就是原样copy过来整理一下。 如果对你有帮助,请给一个小小的

    2024年02月04日
    浏览(62)
  • 图书管理系统:从数据库设计到前端展示的实战经验分享

    ✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 | SpringBoot/SSM Python实战项目 | Django 微信小

    2024年01月16日
    浏览(44)
  • JAVA毕业设计100—基于Java+Springboot+Vue的WMS仓库管理系统+移动端微信小程序(源码+数据库+部署视频)

    本系统前后端分离带小程序 本系统分为管理员、用户角色(角色权限可自行分配) 功能列表: 1、 数据管理:物料数据管理、物料Bom管理、物料组管理、物料分类管理、供应商管理、仓库管理、货位管理、车间管理 2、 采购管理:物料标签管理、入库单管理、入库退货管理 3、

    2024年04月10日
    浏览(56)
  • 2023-08-28 数据库-并发控制-初步思考

    此前做查询优化和查询执行比较多, 一般是在一个单独的事务内考虑优化查询. 最近在做并发控制方面的事情, 一些此前考虑的较少的方面需要做更为深入的思考. 并发控制和事务的特性息息相关, 直白的说就是事务的隔离性, 但是这么理解过于肤浅, 本文做一些初步的思考. 一个

    2024年02月11日
    浏览(44)
  • thinkphp学习08-数据库的链式查询

    前面课程中我们通过指向符号“-”多次连续调用方法称为:链式查询,当 Db::name(‘user’)时,返回查询对象(Query),即可连缀数据库对应的方法,而每次执行一个数据库查询方法时,比如 where(),还将返回查询对象(Query),只要还是数据库对象,那么就可以一直使用指向符号进

    2024年01月21日
    浏览(38)
  • Postman(08)Postman+OmySQL连接数据库

    ● 验证存储结果:在Postman进行接口测试时,涉及到对数据库中存储记录进行验证的需求。为实现这一目的,可以通过编写Postman脚本在收到响应后进一步发起对数据库的查询请求,比较接口实际插入或更新的数据与预期结果是否一致。 ● 验证码处理:在登录或涉及业务流程

    2024年04月11日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包