SQL における参照整合性の詳細な説明 (1 対 1、1 対多、多対多)

SQL における参照整合性の詳細な説明 (1 対 1、1 対多、多対多)

1. 参照整合性

参照整合性とは、主に外部キー制約を使用した複数のテーブル間の設計を指します。
複数テーブル設計: 1対多、多対多、1対1の設計

1. 1対多

関連するキーセンテンス:
制約 cus_ord_fk 外部キー (customer_id) 参照 customer(id)
顧客テーブル - 注文テーブルを作成します。顧客は複数の注文を行うことができ、各注文には 1 人の顧客のみを含めることができます。

-- 関連付け (1 から N)

顧客テーブルを作成(

	id int 主キー auto_increment,
	名前varchar (20) nullではない、
	アドレスvarchar (20) nullではない

);

テーブル注文を作成する(

	order_num varchar(20) 主キー、

	価格 FLOAT NULL ではない、

	customer_id int, -- 外部キー制約 cus_ord_fk 外部キー (customer_id) 参照 customer(id)

);

顧客(名前、住所)に値("zs","北京")を挿入します。

顧客(名前、住所)に値("ls","上海")を挿入します。

顧客から*を選択します。

INSERT INTO orders values("010",30.5,1);

INSERT INTO orders values("011",60.5,2);

INSERT INTO orders values("012",120.5,1);

注文から*を選択します。

注意: 制約: 制約を意味します。外部キー: 外部キー。参照: customer_id_fk という名前の外部キー制約を作成します。ここで、外部キーは customer_id で、参照は customers テーブルの id 列です。

拡張機能:

単語テーブルの削除と更新戦略:

  1. 1) CASCADE カスケード戦略。この戦略を使用すると、メイン テーブルのレコードが削除されるか、主キー フィールドが変更されると、サブ テーブルも同期的に削除または変更されます。
  2. 2) アクションなし アクション戦略なし。この戦略を使用する場合、メイン テーブルを削除するには、まず子テーブルを削除する必要があります。メイン テーブルのレコードを削除するには、まず子テーブルに関連付けられているレコードを削除する必要があります。メイン テーブルの主キー フィールドの値を更新することはできません。
  3. 3) RSTRICT メインテーブル制約戦略。この戦略は、メインテーブルに対してNO ACTIONと同じ制約を持ちます。
  4. 4) 明確な戦略を設定しません。この戦略を使用する場合、主テーブルが削除されるか主キーが変更されると、子テーブルの外部キーは NULL に設定されます。子テーブルの外部キーが主キーであるか、または NOT NULL に設定されている場合、メインテーブルの削除と主キーの変更は NO ACTION と同じになることに注意してください。

2. 多対多

生徒と教師の関係表を作成し、生徒に複数の教師を割り当て、教師に複数の生徒を割り当てることができる

-- 多対多の関係 -- 教師テーブルを作成する CREATE TABLE teacher (
	id INT、
	名前 VARCHAR (20) NULLではない、
	性別 CHAR (2) NOT NULL,
	主キー (id)
);

-- 学生テーブルを作成する CREATE TABLE student (
	id INT、
	名前 VARCHAR (20) NULLではない、
	年齢 INT NOT NULL
);

ALTER TABLE student に PRIMARY KEY (id) を追加します。

-- 3番目のリレーションテーブル CREATE TABLE tch_std (
	教師ID INT、
	学生ID INT、
	制約 fk_teacher 外部キー (teacher_id) 参照 teacher (id)、
	制約 fk_student 外部キー (student_id) 参照 teacher (id)
);

消去
から
	教師
どこ
	id = 3;

選択
	*
から
	教師;

選択する
	*
から
	tch_std;

注意: 多対多は3つのテーブルで、3番目のテーブルは最初の2つのテーブルのIDに対応する外部キー制約を作成します。

3. 一対一

2 つの形式:

1) 外部キーの関連付けに従って、IdCardテーブルの外部キーに一意制約を追加します。
2) 主キーの関連付けに従って主キーに外部キー制約を追加する

-- 1対1 -- ユーザーテーブルを作成する CREATE TABLE users (
	id INT、
	名前 VARCHAR (20) NULLではない、
	性別 CHAR (2) NOT NULL,
	主キー (id)
);

-- カードテーブルを作成する CREATE TABLE card (
	id INT、
	アドレス VARCHAR (100) NOT NULL、
	ユーザーID INT 一意、
	制約 users_id_fk 外部キー(user_id) は users(id) を参照します
);

ALTER TABLE カードに PRIMARY KEY (id) を追加します。

これは方法1で、外部キーに固有の制約を追加する

上記は、編集者が紹介したSQLにおける参照整合性の詳細な説明と統合です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信します。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • MySQL: データの整合性
  • MySQL データベースに基づくデータ制約の例と 5 つの整合性制約の紹介
  • データベースの削除から逃走までの MySQL の徹底分析_上級編 (I) - データ整合性
  • SQL Server データベースのアーキテクチャとオブジェクトの詳細な説明、データ整合性の定義
  • 知っておくべきSQL文(VIII)データベース整合性制約
  • MySQL 学習ノート 4: 整合性制約制限フィールド

<<:  SpringBootはActiviti7実装コードを統合する

>>:  jQueryはテーブルのシームレスなスクロールを実現します

推薦する

Vueトップタグ閲覧履歴の実装

目次ナンセンス実装された機能文章要点ナンセンスデモプレビュー実装された機能デフォルトでホームページが...

WeChatミニプログラムページとコンポーネント間の情報伝達と機能呼び出し

今回は、私自身の開発経験を踏まえて、以下の観点で関連内容を解説します。ページからコンポーネントにデー...

Dockerで作成したコンテナを削除する方法

Dockerで作成したコンテナを削除する方法1. まず、docker -s -aコマンドを使用してす...

Vue2.0は適応解像度を実装する

この記事では、適応解像度を実現するためのVue2.0の具体的なコードを参考までに紹介します。具体的な...

Web データ ストレージ: Cookie、UserData、SessionStorage、WebSqlDatabase

クッキーこれはクライアント ブラウザの状態を保存するための標準的な方法です。Cookie はブラウザ...

Docker Compose を使用して Confluence を構築するチュートリアル

この記事は「Attribution 4.0 International (CC BY 4.0)」ライ...

JavaScript を使用して動的に生成されるテーブルの詳細な説明

*ページを作成する: 2つの入力ボックスとボタン*コードと手順/* 1. 入力行と列の値を取得する2...

Baidu デッドリンクファイルを作成する方法

Baidu によって定義されているデッドリンク形式には 2 種類あります。 1: XML形式のデッド...

JavaScript イベント ループのケース スタディ

js のイベント ループJavaScript はシングルスレッドなので、同じイベントで実行できるメソ...

JavaScriptのアンチシェイクとスロットリングとは

目次1. 関数デバウンス1. 画像安定化とは何ですか? 2. 関数のスロットリング2.1 タイマーの...

Ubuntu Linuxシステムをインストールするときにハードディスクをパーティション分割する最も合理的な方法の詳細な説明

Windows または Linux オペレーティング システムをインストールするかどうかに関係なく、...

フロントエンド開発一般マニュアル(ツール、Webサイト、経験などを含む)

今日は何もすることがなかったので、いくつかのツール(オンラインとクライアント)、よく使用する URL...

Docker の win ping 失敗コンテナ回避ガイド

win docker-desktopを使ってコンテナ開発に接続し、ネットワーク上で色々試してみたいと...

HTML独習の旅(I)基本要素と属性の練習(自分でコードを書く)

私は W3school のチュートリアルに従いました。チュートリアルはとても良いと思います。各セクシ...

CentOS7 構成 Alibaba Cloud yum ソースメソッドコード

Centos yumフォルダを開くコマンドcd /etc/yum.repos.d/を入力します。 w...