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

book1対1および多対多

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

1対1

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

  • 1つ目のテーブルが、2つ目のテーブルの主キーを参照する外部キーを持つ;
  • 逆に、2つ目のテーブルが、1つ目のテーブルの主キーを参照する外部キーを持つ。

注意

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

場合によっては、あるレコードが存在するためには別のレコードが必要だが、後者は単独で存在できる。このようなリンクは必須1対1と呼ばれる。

次の図を参照:

別の例:

必須1対1: すべてのPassportは特定のPersonに紐付けられている必要がある。ただし、Personはパスポートを持たずに存在することもできる(例:子供の場合)。

多対多

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

この中間テーブルには3つのカラムが必要:id(各リレーションシップの識別子)、first_table_id、およびsecond_table_idfirst_table_idsecond_table_idのカラムは、それぞれのテーブルへの外部キーとして機能する。

例として、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

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

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

すべて明確でしたか?

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

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

セクション 2.  4

AIに質問する

expand

AIに質問する

ChatGPT

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

セクション 2.  4
some-alt