跳到主要内容

ER图没有关联?

生成的ER图没联系?

  • 问题描述:ER图生成的节点之间没有联系,因为表和表之间没有建立外键关联关系。
  • 解决方案:通过在你的建表语句中建立外键关联关系,或者手动连接。即可解决
  • 这边是一个示例:实际应用中需要根据实际情况进行修改。 如果你对这个有疑问、下面提供3种解决办法:

解决办法1

把你的sql语句结合下面的提示词,然后让ai修改一下 如图所示

请帮我优化以下SQL,要求:
1. 所有表和字段添加COMMENT中文简洁注释(严格≤4个汉字)
2. 表和表之间也要加上外键关系
3. 为每个外键关系添加COMMENT注释,注释必须使用单个动词短语准确描述两表业务关系("隶属于""管理")
4. 外键关系必须严格按照以下格式定义(不要添加或删除任何空格或符号,不要使用单引号)
`FOREIGN KEY (列名) REFERENCES 表名(列名) COMMENT '关系描述'`
5. 所有外键定义保持在CREATE TABLE语句内
6. 表本身也要添加COMMENT注释
7. 严格保持原SQL功能不变,仅添加注释和完善关系
8. 直接返回完整优化后的SQL代码,无需任何额外解释

我的SQL:
[粘贴你的SQL语句]

标准的模板

CREATE TABLE Students (
id INT PRIMARY KEY COMMENT '学号', ---COMMENT 这个是注释
name VARCHAR(100) COMMENT '姓名',
age INT COMMENT '年龄',
email VARCHAR(100) COMMENT '邮箱'
) COMMENT '学生表';

CREATE TABLE Courses (
id INT PRIMARY KEY COMMENT '课程ID',
course_name VARCHAR(100) COMMENT '课程名',
credits INT COMMENT '学分'
) COMMENT '课程表';

CREATE TABLE Enrollments (
student_id INT COMMENT '关联学生',
course_id INT COMMENT '关联课程',
enrollment_date DATE COMMENT '注册日期',
PRIMARY KEY (student_id, course_id),
FOREIGN KEY (student_id) REFERENCES Students(id) COMMENT '选修', ---这里是外键关联
FOREIGN KEY (course_id) REFERENCES Courses(id) COMMENT '开设' ---这里是外键关联
) COMMENT '选课表';

;

解决办法2

第一个解决办法就是给你认为有关联关系的表添加外键约束,让他们在生成的时候有外键关系。

例如你的原始语句可能是

CREATE TABLE Students (
id INT PRIMARY KEY COMMENT '学号',
name VARCHAR(100) COMMENT '姓名',
age INT COMMENT '年龄',
email VARCHAR(100) COMMENT '邮箱'
) COMMENT '学生表';
CREATE TABLE Courses (
id INT PRIMARY KEY COMMENT '课程ID',
course_name VARCHAR(100) COMMENT '课程名',
credits INT COMMENT '学分'
) COMMENT '课程表';
CREATE TABLE Enrollments (
student_id INT COMMENT '关联学生',
course_id INT COMMENT '关联课程',
enrollment_date DATE COMMENT '注册日期',
PRIMARY KEY (student_id, course_id)
) COMMENT '选课表'

那么生成的结果可能就是

要想有外键关系,比如想要选课表和学生表关联、选课表和课程表关联,

  • 选课表关联到学生表,在选课标中添加外键FOREIGN KEY (student_id) REFERENCES Students(id)
  • 选课表关联到课程表,在选课标中添加外键FOREIGN KEY (course_id) REFERENCES Courses(id),

最后的语句就变成如下:

CREATE TABLE Students (
id INT PRIMARY KEY COMMENT '学号',
name VARCHAR(100) COMMENT '姓名',
age INT COMMENT '年龄',
email VARCHAR(100) COMMENT '邮箱'
) COMMENT '学生表';
CREATE TABLE Courses (
id INT PRIMARY KEY COMMENT '课程ID',
course_name VARCHAR(100) COMMENT '课程名',
credits INT COMMENT '学分'
) COMMENT '课程表';
CREATE TABLE Enrollments (
student_id INT COMMENT '关联学生',
course_id INT COMMENT '关联课程',
enrollment_date DATE COMMENT '注册日期',
PRIMARY KEY (student_id, course_id),
FOREIGN KEY (student_id) REFERENCES Students(id) COMMENT '选修',
FOREIGN KEY (course_id) REFERENCES Courses(id) COMMENT '开设'
) COMMENT '选课表'

这样就可以从sql语句的角度来解决生成的ER图没有关联的问题了。

解决办法3

第二个解决办法是直接生成,然后在我们系统中修改。

提示

如果你的表特别大,很难加外键关系,那么很推荐使用这种方式,并且这种方式也更直观

操作如下,生成了之后:

  1. 点击某个表
  2. 在右上角选择节点修改
  3. 在实体之间添加线中,选择另一个实体,然后输入关系,点击添加关系即可。