1
1

【データベース設計入門】1対1,1対多,多対多のリレーションシップの実例

Last updated at Posted at 2024-07-18

はじめに

データベース設計はシステム開発の重要な部分であり,データの正確な管理と効率的なアクセスを可能にします.この記事では,1対1・1対多・多対多のリレーションシップを具体的な例を通じて解説します.
この記事の目的は,これらのリレーションシップの基本概念と実際のテーブル設計方法を理解してもらうことです.

概要

今回はQiitaのような記事投稿サイトのようなシステムを題材にしています.

1対1のリレーションシップ

1対1のリレーションシップは,一つのテーブルのレコードが他のテーブルの一つのレコードに対応する場合に使われます.
例えば,ユーザ情報とユーザプロファイルの関係です.

ユーザ情報テーブル:

UserID UserName Email Password
1 Alice alice@example.com aaa
2 Bob bob@example.com bbb

1対1の関係のデータは基本的に同じテーブル内にまとめられています.
UserIDに対して名前やメールアドレス,パスワードが1対1のデータになっています.

1対多のリレーションシップ

1対多のリレーションシップは,一つのテーブルのレコードが他のテーブルの複数のレコードに対応する場合に使われます.
例えば,ユーザと記事の関係です.

記事情報テーブル:

ArticleID fk_UserID Title 内容
1 1 タイトル1 aaa
2 1 タイトル2 bbb
3 2 タイトル3 ccc
4 1 タイトル4 ddd

1対多の関係のデータは基本的に親子の関係になります.
親(ユーザ)に対して子(記事情報)のデータがある状態です.
この時親テーブルがユーザ情報テーブルになりますので,ユーザ情報テーブルの一意なキー(UserID)を外部キー(fk_UserID)として持っています.

多対多のリレーションシップ

多対多のリレーションシップは,複数のテーブルのレコードが互いに複数のレコードに対応する場合に使われます.
例えば,ユーザとお気に入り記事の関係です.
これを実現するために,中間テーブルを使用します.

お気に入り登録テーブル:

fk_ArticleID fk_UserID
1 2
2 2
3 1
4 2

多対多の関係のデータは基本的に中間テーブルを使って実現します.
これによって例えばユーザがお気に入り登録した記事を検索する場合はUserIDをキーに、
記事をお気に入りに設定したユーザ数を検索する場合はArticleIDをキーに検索すれば取得ができます。

1
1
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
1
1