0


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 CREATETABLE Student(
    SNO VARCHAR(10),-- 学号
    SNAME VARCHAR(20),-- 姓名
    AGE INT,-- 年龄
    SEX VARCHAR(2)CHECK(SEX IN('M','F')),-- 性别CONSTRAINT Student_PK PRIMARYKEY(SNO)-- 主键约束);-- 选课表SC  CREATETABLE SelectCourse(
    SNO VARCHAR(10),-- 学号 
    CNO VARCHAR(10),-- 课程号
    GRADE DECIMAL(4,1),-- 成绩CONSTRAINT SC_PK PRIMARYKEY(SNO,CNO),-- 主键CONSTRAINT SC_FK_Student FOREIGNKEY(SNO)REFERENCES Student(SNO),-- 外键,引用学生表 CONSTRAINT SC_FK_Course FOREIGNKEY(CNO)REFERENCES Course(CNO)-- 外键,引用课程表);-- 课程表C  CREATETABLE Course(
    CNO VARCHAR(10),-- 课程号 
    CNAME VARCHAR(40),-- 课程名称
    TEACHER VARCHAR(20),-- 任课教师CONSTRAINT Course_PK PRIMARYKEY(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个实体(学生、选课、课程)之间的结构化关系:

  • 学生实体和选课实体之间的多对一关系,表示一个学生可以选多门课程。
  • 选课实体和课程实体之间的多对一关系,表示一门课程可以被多名学生选择。
  • 各实体的主键也被明确标注出来,如学生实体的主键为学号,课程实体的主键为课程号,选课实体的主键为学号和课程号的组合。在这里插入图片描述

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

四、 总结

回顾一下,本节主要

prompt

知识点:

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

本文转载自: https://blog.csdn.net/u010764910/article/details/130256972
版权归原作者 AI原吾 所有, 如有侵权,请联系我们删除。

“ChatGPT实战100例 - (08) 数据库设计转化为SQL并获取ER图”的评论:

还没有评论