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