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

How could I create relationships between tables in JetBrains' DataGrip?

我在工作中使用 JetBrains 的 DataGrip。没关系,但我不知道如何创建表之间的关系,如下图所示:

通常:从上下文菜单或按 Ctrl+Alt+U。

如果你找到了这张图片,再往下走一步就是在网站上更深入,你会到达这个页面: https://www.jetbrains.com/datagrip/features/other.html

并且有关于如何操作的说明。

这是一个两步过程。在第一步中,您必须修改 table 以添加外键约束定义。第二步可以显示table图

首先,在 DataGrip 中右键单击 table 的名称,然后选择 修改 Table。您将看到四个选项卡:ColumnsKeysIndicesForeign Keys 。选择 选项卡。右键单击要成为外键​​的列名,然后选择新建外键。 window 将切换到其 Foreign Keys 选项卡并填写一些信息。填写您的 "target table"。您可能还必须在 SQL 语句的 REFERENCES 短语中写入目标列名称。查看修改Tablewindow中的所有信息,满意后点击"Execute"。

其次,在 DataGrip 中再次右键单击 table 的名称,这次选择 Diagrams > Show Visualisation.您现在应该会看到一个图表,其中显示了原始 table 和引用的 table 之间的关系。

在 DataGrip 帮助中,您可以查看 使用数据库工具 Window 页面,了解其 修改 [=55] 的定义=]、列、索引或主键或外键 部分。那里有一个非常简短的过程描述。

维基百科在其 Defining foreign keys 文章部分有一个示例,在您使用 DataGrip 的 Modify Table window 时可能对您有用。

这个过程我是在DataGrip 2017.1.3做的,不知道其他版本有没有不同。

试试这个创建 3 个表的 SQL 小脚本。我想你会发现这项工作很好。

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)
)   ;