はじめに
テーブル設計においては、リレーション(関係)を書く必要があります。
以下の画像がわかりやすいです。
ER図のリレーション表記法一覧
この時
-
--|-
:1(one) -
--||-
:1つだけ(one and only one)(「必ず1」とも呼ばれる)
この違いはなんでしょうか?
大きく、2つのパターンがありました。
パターン1:対象が入れ替わるかどうか
具体例を見てみましょう。
- LoginIDを持つユーザーは世界に1人だけ。入れ替わることはない:1つだけ / 必ず1
- その部屋を持つユーザーは1人だけだけど、そのユーザーがいなくなったら他のユーザーも使える:1
パターン2:アプリによる / 区別はしない
アプリ・サービスによっては、--|-
/ --||-
を区別しなかったり、どちらかしか使うことができなかったりします。
例えば、mermaidを使用しER図を作成する場合、--|-
は使用できません。
"1"を表すには--||-
を使用します。
---
title: Order example
---
erDiagram
CUSTOMER ||--o{ ORDER : places
↓ --|-
ではエラーになる
---
title: Order example
---
erDiagram
CUSTOMER |--o{ ORDER : places
まとめ
-
--|-
(1)と--||-
(1つだけ / 必ず1)は、区別する場合と区別しない場合がある - 区別する場合は「対象が入れ替わるかどうか」がポイントになる
- 区別しない場合もある
個人的な意見としては、(それなりに有名なツールである)Mermaidが区別しない方針である以上、基本的に区別はしなくてよいのではと思います。
余談:カーディナリティ
--|-
/ --||-
これらの「対応関係を表すもの」を「カーディナリティ」と呼びます。
リレーションシップのカーディナリティ
ER図などによるデータモデリングやRDBMSのリレーションシップ機能では、項目の対応関係が一対一、一対多、多対多のいずれであるかを指してカーディナリティという。「多重度」と訳されることもある。