主キーが外部キーを兼ねる 1 対 1
プロフィール表の user_id が主キーであり、同時に users を参照している例です。子側が 0 または 1 になる 1 対 1 の関係を確かめます。
入力
CREATE TABLE 文
CREATE TABLE u (id int PRIMARY KEY); CREATE TABLE p (user_id int PRIMARY KEY REFERENCES u (id));
結果
エラー 0 件・警告 0 件・情報 0 件
指摘(エラー・警告・情報)
指摘はありません。
| 表 | 2 個 |
|---|---|
| 列 | 2 個 |
| 関係 | 1 本 |
Mermaid の erDiagram
erDiagram
u {
int id PK
}
p {
int user_id PK, FK
}
u ||--o| p : "user_id"検算(この結果になる理由)
p.user_id は単独の主キーで、外部キーの列がすべて主キーに含まれるため実線 -- です。PRIMARY KEY は NOT NULL を含むので親側は ||、同じ値は 1 行しか持てないので子側は o| (0 または 1)になります。
判定の根拠は仕様と根拠に、仕様の出典とともにまとめています。自分の入力で試すにはツールをお使いください。
このツールの制約
- 完全な SQL の構文解析はしません。CREATE TABLE の ( ) の中の列の並びだけを読み、CREATE TABLE AS SELECT・PARTITION OF・継承などは判定不能と示します。
- ALTER TABLE で後から追加した主キーや外部キーは読みません。CREATE TABLE の中に書いた形で貼り付けてください。
- スキーマ名は図で省略するため、別のスキーマの同名の表は区別できません。複数列の UNIQUE には UK の印を付けません。
- 日本語など英数字以外の表名・列名は、Mermaid の描画側での扱いまでは確認していません。描画できない場合は英数字の名前に置き換えてください。
ご利用にあたって
- 出力は設計の確認用の図の元データです。実際のデータベースの定義と食い違いがないか、本番の変更前に確認してください。
- SQL の方言によっては CREATE TABLE の書き方が異なります。PostgreSQL 以外の SQL は正しく読めない場合があります。