SQL → ERD

CREATE TABLE 文を 1 つ以上貼り付けると、このツールはスキーマを描きます。すべてのテーブルが実体になり、列は PK / FK タグ付きの属性になり、FOREIGN KEY 制約が関係線になります。スキーマが外部キーを宣言していないとき、customer_id のような列は、保持するか捨てるか選べる推論関係として提示されます。Mermaid erDiagram のソースをコピーするか、ダイアグラムを SVG / PNG として書き出せます。すべてローカルで実行 — スキーマがブラウザーを出ることは決してありません。
ERD とは?ERD は 実体関係図(Entity Relationship Diagram)の略で、データベースがどう組織されているかの絵です。3 種の図形から描かれます。実体(テーブル、箱として描かれる)、属性(箱の中に列挙される列)、関係(2 つの箱を繋ぐ線)。技法は Peter Chen の 1976 年の実体関係モデルに由来し、今でも DDL を書く前にスキーマをスケッチする常道です。良い ERD は、どのテーブルが存在し、各行が何を保存し、あるテーブルの行が別のテーブルの行をどう指すかを一目で示します — SQL を読みたくない人にも読める形で。
Entity — one thing the system keeps data about, such as a customer, an order or a product. In a relational database each entity becomes one table.
Attribute — one fact recorded for every row of an entity, such as a name, a price or a date. Each attribute becomes one column.
Relationship — an association between two entities, implemented by a foreign key: the child table stores the parent’s key, and the diagram turns that column into a line.
PK / FK — a primary key (PK) identifies each row of a table uniquely; a foreign key (FK) holds the primary key of another table and is what a relationship line represents.
カーディナリティ — 線の両端に何行が許されるか:一対一、一対多、多対多。このページは Mermaid が使うカラスの足記法で描きます(ステップ 4 の凡例を参照)。
記法:Chen 記法は関係に菱形、属性に楕円を使います。カラスの足記法(ここで描くもの)は実体を属性列挙付きの単一の箱に圧縮し、線の多の端を三又の「カラスの足」で示します。UML クラス図は同じ構造をクラス・操作・多重度で記述します。3 つともスキーマについて同じことを言っており、違うのは記号だけです。
1 — テーブルスキーマ(DDL)
2 — 実体
描画 テーブル 列 関係 属性
まだ解析されたテーブルはありません。
3 — 関係
使用 子(多) Actions 親(1) 出所 Actions
まだ関係はありません。
関係を手動で追加:
→
4 — ダイアグラム
Mermaid erDiagram ソース
関係の読み方:子テーブル上の外部キーは PARENT ||--o{ CHILD を生みます。実体と属性は DDL の名前を保ち、Mermaid が描けない文字(スペース、ダッシュ)はアンダースコアで表示されます。型は基本語に簡略化されます(DECIMAL(10,2) → DECIMAL)。ダイアグラム構文はパラメータを取らないためです。
カーディナリティ記号(カラスの足):実体の隣の記号は、線のその端に何行が立てられるかを示します — || ちょうど 1、o| ゼロか 1、o{ ゼロか多、|{ 1 か多。したがって PARENT ||--o{ CHILD は「1 つの親の行は、ゼロ・1・複数の子の行から参照され得、すべての子の行はちょうど 1 つの親を指す」と読みます — 古典的な一対多のリンクです。
Many-to-many is never a single line: a product can appear in many orders and an order can hold many products, so the schema stores a join table (order_items) whose two foreign keys become two one-to-many lines. Read through that middle box and the many-to-many is there.