Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ One-to-OneおよびMany-to-Many | セクション
リレーショナルデータベースと正規化

bookOne-to-OneおよびMany-to-Many

メニューを表示するにはスワイプしてください

1対1

1対1リレーションシップは、あるテーブルの各レコードが別のテーブルの単一のレコードに対応する関係。 1対多リレーションシップでは、1つのテーブルのレコードが複数のレコードと関連付けられるのに対し、1対1では各レコードのペアが一意に結び付けられる。 このリレーションシップには、2つの主要な接続が含まれる:

  • 最初のテーブルが、2番目のテーブルの主キーを参照する外部キーを持つ;
  • 逆に、2番目のテーブルが、最初のテーブルの主キーを参照する外部キーを持つ。
Note
注意

1対1リレーションシップは外部キーに依存する。この外部キーには「unique=True」パラメータを含める必要がある。

特定の場合、あるレコードは他のレコードが存在する場合のみ存在できるが、後者は単独で存在できる。このようなリンクは一方必須の1対1と呼ばれる。

次の図を参照:

別の例:

必須の一対一: すべてのPassportは特定のPersonに紐付けられている必要があります。ただし、Personはパスポートを持たずに存在することもあり、例えば子供の場合が該当します。

多対多

多対多リレーションシップは、2つのテーブルが互いに複数の対応レコードを持つことができる関係であり、しばしば中間テーブルによって仲介されます。一方のテーブルの1つのレコードが他方のテーブルの複数のレコードに対応する一対多とは異なり、多対多では両方のテーブルの複数のレコードが相互に関連付けられます。

このintermediary tableには3つのカラムが必要です:id(各リレーションシップの識別子)、first_table_id、およびsecond_table_idfirst_table_idsecond_table_idのカラムは、それぞれのテーブルに戻るforeign keyとして機能します。

例えば、カーシェアリングサービスを考えてみましょう。ここでは、driver_idcar_id の両方が外部キーとして機能します。 “driver-car” テーブルでは、5つの異なる関係が示されています:

  • (id 1 および 2) - ドライバー John (driver_id=1) は、Subaru (car_id=1) と BMW (car_id=3) を運転しました;
  • (id 3, 4, および 5) - ドライバー Emma (driver_id=2) は、Subaru (car_id=1)、Mercedes (car_id=2)、および BMW (car_id=3) を運転しました。

複数のドライバーがさまざまな車を運転しました:John と Emma の両方が Subaru と BMW の両方を運転しました。

データベーススキーマ図:

通常、これらの中間テーブルは図には省略されます。上記の通り、driver-car テーブルは表示されていません。

1. 1対1のリレーションシップを選択してください:

2. 多対多のリレーションシップを選択してください:

question mark

1対1のリレーションシップを選択してください:

正しい答えを選んでください

question mark

多対多のリレーションシップを選択してください:

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 1.  8

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 1.  8
some-alt