2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

【ER図】カーディナリティ「必ず1」「1つだけ」と「1」の違い【テーブル設計】

Last updated at Posted at 2024-06-25

はじめに

テーブル設計においては、リレーション(関係)を書く必要があります。

以下の画像がわかりやすいです。

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のリレーションシップ機能では、項目の対応関係が一対一、一対多、多対多のいずれであるかを指してカーディナリティという。「多重度」と訳されることもある。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?