我该如何在JetBrains的DataGrip中创建表之间的关系?

14

我在工作中使用JetBrains的DataGrip。它还好,但我不知道如何像这张图片中那样创建表之间的关系:

在这里输入图像描述

3个回答

23
这是一个两步操作。第一步,您必须修改表格以添加外键约束定义。第二步,您可以显示表格图表。
首先,在DataGrip中右键单击您的表格名称,然后选择“修改表格”。您将看到四个选项卡:索引外键。选择选项卡。右键单击要成为外键的列名,并选择新建外键。窗口将切换到其外键选项卡,并填写一些信息。填写您的“目标表”。您还可能需要在SQL语句的 REFERENCES 短语中编写目标列名。现在检查修改表格窗口中的所有信息,并在满意时单击“执行”。
其次,再次在DataGrip中右键单击您的表格名称,这次选择图表>显示可视化。现在,您应该看到一个图表,显示原始表格和引用表格之间的关系。
在DataGrip帮助中,您可以查看“使用数据库工具窗口”页面的“修改表、列、索引或主/外键定义”的部分。那里有一个非常简短的程序描述。
在维基百科的定义外键文章部分中有一个示例,可能对您在DataGrip的“修改表”窗口中工作时有用。
我在DataGrip 2017.1.3中执行了这个过程,不知道其他版本是否会有所不同。

2

1
我得到了这张没有箭头的图片。而且那个页面上没有任何帮助,我该如何画它们。 - progreccor
你的表格中需要与外键建立关联,你是否已经建立了这些关联? - moscas
你使用什么数据库管理系统? - moscas
在您需要的表格上按下Ctrl+F6,然后转到“外键”选项卡,您可以通过UI创建它们。 - moscas

1
尝试运行这个小的SQL脚本,它将创建3个表。我认为你会发现它很好用。
CREATE TABLE product (
    category INT NOT NULL, id INT NOT NULL,
    price DECIMAL,
    PRIMARY KEY(category, id)
);

CREATE TABLE customer (
    id INT NOT NULL,
    PRIMARY KEY (id)
);

CREATE TABLE product_order (
    no INT NOT NULL AUTO_INCREMENT,
    product_category INT NOT NULL,
    product_id INT NOT NULL,
    customer_id INT NOT NULL,

    PRIMARY KEY(no),
    INDEX (product_category, product_id),
    INDEX (customer_id),

    FOREIGN KEY (product_category, product_id)
      REFERENCES product(category, id)
      ON UPDATE CASCADE ON DELETE RESTRICT,

    FOREIGN KEY (customer_id)
      REFERENCES customer(id)
)   ;

enter image description here


2
请注意,如果您的模式是小写字母(我刚刚报告了错误),则此方法仅适用于DataGrip。 - Tim Seed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接