web-dev-qa-db-ja.com

JetBrainsのDataGripでテーブル間の関係を作成するにはどうすればよいですか?

仕事でJetBrainsのDataGripを使用しています。大丈夫ですが、この写真のようにテーブル間の関係を作成する方法がわかりません。

enter image description here

9
progreccor

これは2段階の手順です。最初のステップでは、テーブルを変更して外部キー制約定義を追加する必要があります。 2番目のステップでは、テーブル図を表示できます。

まず、DataGripでテーブルの名前を右クリックし、テーブルの変更を選択します。 4つのタブが表示されます:キーインデックス、および外部キータブを選択します。外部キーにしたい列名を右クリックし、新しい外部キーを選択します。ウィンドウが外部キータブに切り替わり、いくつかの情報が入力されます。「ターゲットテーブル」に入力します。また、SQLステートメントのREFERENCES句にターゲット列名を書き込む必要がある場合もあります。 テーブルの変更ウィンドウですべての情報を確認し、問題がなければ[実行]をクリックします。

次に、DataGripでテーブルの名前をもう一度右クリックし、今度はDiagrams>Show Visualisation。これで、元のテーブルと参照されているテーブルの関係を示す図が表示されます。

DataGripヘルプでは、データベースツールウィンドウの操作ページで、テーブル、列、インデックス、またはの定義の変更を確認できます。主キーまたは外部キーセクション。そこに非常に短い手順の説明があります。

ウィキペディアの 外部キーの定義 記事セクションには、DataGripのテーブルの変更ウィンドウでの作業中に役立つ可能性のある例があります。

この手順はDataGrip2017.1.3で行いましたが、他のバージョンが異なるかどうかはわかりません。

14
Andrew

通常:コンテキストメニューから、またはCtrl + Alt + Uを押します。

この写真を見つけた場合、もう1つのステップは、Webサイトをさらに深く掘り下げて、このページにアクセスすることです。 https://www.jetbrains.com/datagrip/features/other.html

そして、それを行う方法の説明があります。

2
moscas

この小さな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

1
Tim Seed