ホームページ > データベース > mysql チュートリアル > データベース設計で 1 対 1、1 対多、および多対多の関係を実装するにはどうすればよいですか?

データベース設計で 1 対 1、1 対多、および多対多の関係を実装するにはどうすればよいですか?

DDD
リリース: 2025-01-21 06:36:12
オリジナル
388 人が閲覧しました

How to Implement One-to-One, One-to-Many, and Many-to-Many Relationships in Database Design?

データベース設計で 1 対 1、1 対多、多対多の関係を実装する方法

データベース テーブルを設計するときは、エンティティ間のさまざまな種類の関係を実装する方法を理解することが重要です。この記事では、1 対 1、1 対多、および多対多のリレーションシップを実装するための概念と手法について詳しく説明します。

一対一の関係

1 対 1 の関係では、あるテーブルの行は別のテーブルの行に一意に関連付けられます。この関係を実装するには、「1 つの」側を表すテーブルの主キー列を参照する「多」側を表すテーブル内に外部キー列を作成します。さらに、重複関係を防ぐために、外部キー列には一意の制約が適用されます。

<code>学生表:学生ID,姓名,地址ID
地址表:地址ID,地址,城市,邮政编码,学生ID</code>
ログイン後にコピー

1 対多の関係

1 対多のリレーションシップでは、1 つのテーブルの 1 つの行を別のテーブルの複数の行に関連付けることができます。これを行うには、「1 つの」側を表すテーブルの主キー列を参照する「多」側を表すテーブルに外部キー列を含めます。

<code>教师表:教师ID,姓名
课程表:课程ID,课程名称,教师ID</code>
ログイン後にコピー

多対多の関係

多対多のリレーションシップでは、1 つのテーブル内の複数の行を別のテーブル内の複数の行に関連付けることができます。これを実現するには、2 つの外部キー列を含む結合テーブルを作成し、1 つは関連テーブルの各主キーを参照します。

<code>学生表:学生ID,姓名
课程表:课程ID,名称,教师ID
学生课程表:课程ID,学生ID</code>
ログイン後にコピー

クエリの例

関連データを効率的に取得するには、外部キー関係に基づいてテーブル間の結合を実行します。

<code>-- 获取特定课程中的学生:

SELECT s.student_id, 姓名
FROM 学生课程表 sc
INNER JOIN 学生表 s ON s.student_id = sc.student_id
WHERE sc.class_id = X

-- 获取特定学生的课程:

SELECT c.class_id, 名称
FROM 学生课程表 sc
INNER JOIN 课程表 c ON c.class_id = sc.class_id
WHERE sc.student_id = Y</code>
ログイン後にコピー

以上がデータベース設計で 1 対 1、1 対多、および多対多の関係を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート