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はテーブルのシームレスなスクロールを実現します

推薦する

JavaScript の差異を利用して比較ツールを実装する

序文仕事では、毎週従業員が提出した資料を数える必要がありますが、それを一つずつコピーして貼り付けるの...

Vue ページ状態の永続化の詳細な説明

目次コード:補充:要約する要件: 左のツリーと右のテーブル。組織ツリーでノードを選択した後、詳細ペー...

Tomcat のプレースホルダーによるポート設定方法 (パラメータ指定方式)

仕事で必要になったため、インターネットで多くの情報を見つけましたが、それらはすべてコピーアンドペース...

WebプロジェクトのDockerデプロイメントの実装

前回の記事では、docker サービスをインストールしました。引き続き、Web プロジェクトのデプロ...

MySQLとPythonの相互作用の例

目次1. データを準備するデータテーブルを作成するデータの挿入2. SQLドリル1. SQL文の強化...

標準SQL更新ステートメントの3つの用途についての簡単な理解

1. 環境: MySQL-5.0.41-win32 Windows XP プロフェッショナル2. テ...

入力テキストボックスの長さをコンテンツに応じて変更する方法

初め:コードをコピーコードは次のとおりです。 <input type="text&q...

Dockerコンテナでの静的ウェブサイトレイアウトの実装

サーバーの配置数日間無料で使用できるクラウドサーバー(Alibaba Cloud、Huawei Cl...

Linux での Apache サービスの展開と構成

目次1 Apacheの役割2 Apacheのインストール3. Apacheを有効にする4 Apach...

Dockerでコンテナを作成するときのディレクトリ権限

昨日プロジェクトを書いていた時に、MySQL の派生版である Percona を使う必要があったので...

Windows SSHサーバーを簡単に構築するためのいくつかの手順

ここで言及されている SSH は Security Shell と呼ばれます。Linux をよく使用...

Angularが予期しない例外エラーを処理する方法の詳細な説明

前面に書かれたコードがどれだけ適切に記述されていても、すべての可能性のある例外を完全に処理することは...

Docker を使用した Hadoop クラスターのデプロイに関する詳細なチュートリアル

最近、社内に Hadoop テスト クラスターを構築したいので、docker を使用して Hadoo...

VMware に Centos8 をインストールする詳細なチュートリアル

CentOS公式サイトアドレスhttps://www.centos.org/まず必要なファイルをダウ...

React Hook の使用例 (一般的なフック 6 つ)

1. useState: 関数コンポーネントに状態を持たせる使用例: // カウンター impor...