複合主キーの一部が外部キーの明細表

注文明細が注文の番号と連番の複合主キーを持ち、注文の番号が外部キーでもある例です。識別関係の実線と、PK と FK を兼ねる列の書き方を確かめる境界の例です。

入力

CREATE TABLE 文

CREATE TABLE o (id int PRIMARY KEY);
CREATE TABLE oi (o_id int, n int, PRIMARY KEY (o_id, n), FOREIGN KEY (o_id) REFERENCES o (id));

結果

エラー 0 件・警告 0 件・情報 0 件

指摘(エラー・警告・情報)

指摘はありません。

表2 個
列3 個
関係1 本

Mermaid の erDiagram

erDiagram
    o {
        int id PK
    }
    oi {
        int o_id PK, FK
        int n PK
    }
    o ||--o{ oi : "o_id"

検算(この結果になる理由)

oi.o_id は複合主キーに含まれるため NOT NULL とみなし、親側は ||、外部キーの列がすべて主キーに含まれるので識別関係の実線 -- です。主キーは 2 列なので子側は o{ になります。o_id には PK と FK の両方、n には PK だけが付きます。

判定の根拠は仕様と根拠に、仕様の出典とともにまとめています。自分の入力で試すにはツールをお使いください。

このツールの制約

ご利用にあたって

  • 出力は設計の確認用の図の元データです。実際のデータベースの定義と食い違いがないか、本番の変更前に確認してください。
  • SQL の方言によっては CREATE TABLE の書き方が異なります。PostgreSQL 以外の SQL は正しく読めない場合があります。

ほかの入力例