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+echart で 2 列チャートを実現

この記事では、vue+echart を使って二重列チャートを実現するための具体的なコードを参考までに...

KVM 仮想マシンのオンライン ホット マイグレーションを実装する方法 (画像とテキスト)

1. KVM仮想マシンの移行方法と注意すべき点KVM 仮想マシンを移行する方法は 2 つあります。...

クラウドネイティブテクノロジーKubernetesスケジューリングユニットポッドの使用の詳細な説明

k8s の最小のスケジューリング単位 --- pod前回の記事では、k8s が解決できる問題を簡単に...

VMware仮想マシンにLinux(CentOS)をインストールするための詳細な構成手順

CentOS7をダウンロード私がダウンロードしたイメージはCentOS-7-x86_64-DVD-1...

JavaScript は setTimeout を使用してカウントダウン効果を実現します

JavaScript ネイティブ コードの記述能力を高め、setTimeout() の使用を強化する...

Vue2.x と Vue3.x のルーティングフックの違いの詳細な説明

目次vue2.xプレコンセプト:ルーティングフックのカテゴリルーティングとコンポーネントの概念(フッ...

Linux での Redis の永続性、マスター スレーブ同期、Sentinel の詳細な説明

1.0 Redis の永続性Redis はメモリ内データベースです。サーバー プロセスが終了すると、...

Docker Desktop で rocketmq をインストールするための非常に詳細なチュートリアル

Dockerデスクトップをインストールするダウンロード先: Docker Desktop for M...

MySQL 5.7.17 winx64 のインストールと設定方法のグラフィックチュートリアル

Windows インストール mysql-5.7.17-winx64.zip メソッド レコード &...

Docker Compose ワンクリック ELK デプロイ方式の実装

インストールFilebeat は、より軽量でより安全なため、Logstash-Forwarder に...

MySQL の効率的なクエリの左結合とグループ化 (プラス インデックス)

mysql 効率的なクエリMySQL は、左結合の速度を上げるために group by を犠牲にし...

MySql データベースにおける単一テーブル クエリと複数テーブル結合クエリの効率の比較

この間、プロジェクトに取り組んでいるときに、データ間の接続が非常に複雑なモジュールに遭遇しました。テ...

Nginx Linux のインストールと展開の詳細なチュートリアル

1. Nginx の紹介Nginxは負荷分散やリバースプロキシにも使えるWebサーバーです。現在最も...

Linux システムファイル共有 samba 設定チュートリアル

目次sambaをアンインストールしてインストールする新しい共有パスを作成し、権限を設定するSamba...

img usemap 属性 中国地図リンク

HTML img タグ: Web ページに導入される画像を定義します。興味深い usemap 属性も...