複合主キーの一部が外部キーの明細表
注文明細が注文の番号と連番の複合主キーを持ち、注文の番号が外部キーでもある例です。識別関係の実線と、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 の ( ) の中の列の並びだけを読み、CREATE TABLE AS SELECT・PARTITION OF・継承などは判定不能と示します。
- ALTER TABLE で後から追加した主キーや外部キーは読みません。CREATE TABLE の中に書いた形で貼り付けてください。
- スキーマ名は図で省略するため、別のスキーマの同名の表は区別できません。複数列の UNIQUE には UK の印を付けません。
- 日本語など英数字以外の表名・列名は、Mermaid の描画側での扱いまでは確認していません。描画できない場合は英数字の名前に置き換えてください。
ご利用にあたって
- 出力は設計の確認用の図の元データです。実際のデータベースの定義と食い違いがないか、本番の変更前に確認してください。
- SQL の方言によっては CREATE TABLE の書き方が異なります。PostgreSQL 以外の SQL は正しく読めない場合があります。