MySQL: データの整合性

MySQL: データの整合性

データ整合性は、エンティティ整合性、ドメイン整合性、参照整合性に分けられます。

参照整合性:

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

1. エンティティ(行)の整合性

エンティティの整合性は、テーブルの主キーを通じて実現されます。
主キーを使用して、レコードが一意であり、空ではないことを示します。構文: 主キー
主キーの分類:

論理主キー: ID など、実際のビジネス上の重要性を表すものではなく、レコードを一意に識別するためにのみ使用されます (推奨)
ビジネス主キー: 実際のビジネス ロジックに関係するユーザー名など。
特徴: ユニーク、null ではない
自動増加: auto_increment

例えば:

テーブル person2 を作成する(
			id int 主キー auto_increment,
			名前varchar(100)
);

2. ドメイン(列)の整合性

非 null 制約: 非 null
一意制約: 一意

テーブル person3 を作成(
			id int null ではない ユニーク、
			名前 varchar(20) null ではない 一意、
			性別varchar(20) nullではない、
			電話 char(11) ユニーク #許可されていません、
	);

3: 参照整合性

1. 1対多
a: たとえば、顧客と注文の関係は 1 対多です。顧客は複数の注文を持つことができ、1 つの注文は 1 人の顧客に属します。
b: 外部キーは、より多くのパーティに設定されます

1対多を作成するための構文入力:
顧客テーブルを作成します。

テーブルcustomersを作成する(
	id int、
	名前varchar(20),
	アドレスvarchar(100)、
	主キー(ID)
);

Orders テーブルを作成します。

テーブル注文を作成する(
	id int、
	order_num int 主キー、
	価格 float(4,2)、
	顧客ID int,
	 制約 customer_ord_fk 外部キー(customer_id) は customers(id) を参照します。
);

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

テーブル操作は1対多を作成します

顧客テーブル



注文表

外部キー設定を注文する


外部キー フィールド customer_id を持つ customer_ord_fk という名前の外部キー制約を作成します。この外部キー フィールドは、customers テーブルの id 列を参照します。

拡張: サブテーブルの削除と更新の 4 つの戦略:

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

2. 多対多

教師テーブルを作成します。

テーブル教師を作成する(
		id int 主キー auto_increment,
		名前varchar(20)、
		性別文字(5)
		件名varchar(20)
		);

学生テーブルを作成します。

学生テーブルを作成する(
	id int 主キー、 
	名前varchar(20),
	年齢 int	
);

3 番目は関連テーブルです。

テーブルteacher_student(を作成する
   id int、
	t_id 整数、
	s_id 整数、
	主キー(t_id,s_id)
  制約teacher_id_fk外部キー(t_id)はstudents(id)を参照します。
  制約student_id_fk外部キー(s_id)はteachers(id)を参照します。
);

テーブル操作多対多

教師テーブルを作成します。

学生テーブルを作成します。

3番目の表:


3. 一対一

(1)通常は、1つのテーブルのみを設計する必要があります。 (2)2つのテーブルを設計することもできます。

方法 1: 最初のテーブルの主キーに対応する外部キー (一意に設定) として 2 番目のテーブルにフィールドを作成します。
方法 2: 最初のテーブルの主キーに対応する、2 番目のテーブルの主キーを外部キーとして直接使用します。

2つのテーブル: ユニークであることは非常に重要です

テーブルユーザーを作成(
id int 主キー auto_increment,
名前varchar(20),
年齢 int
);
テーブルカードを作成(
id int 主キー auto_increment,
num varchar(20) が null ではない、
アドレスvarchar(100)がnullではありません。
user_id int ユニーク、
制約 user_card_fk 外部キー(user_id) は user(id) を参照します
);

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

以下もご興味があるかもしれません:
  • データベースの削除から逃走までの MySQL の徹底分析_上級編 (I) - データ整合性
  • MySQL と PHP の基礎と応用 - データの整合性

<<:  webpackを使用してTypeScriptコードをパッケージ化およびコンパイルする方法を教えます

>>:  CentOS 8で自動更新を設定するための手順を完了する

推薦する

Nginx のインストールと設定ルールの詳細な紹介

目次1. nginxのインストールと操作(Mac OS環境) 2. nginxルールの設定3. コマ...

Linux での NTP サーバー設定の詳細な手順

目次1. 環境設定1.NTPサーバー2. ビジネスサーバー2. NTPサーバーの設定1. chron...

IDEAでVUEプロジェクトをデバッグするための詳細な手順

js コードをデバッグするには、コード内にデバッガーを記述するか、Chrome で毎回ブレークポイン...

MySQLデーモンの起動に失敗したエラーの解決方法

MySQLデーモンの起動に失敗したエラーの解決方法数日前、公開されたウェブサイトはこれらのアクティビ...

React は入力値を取得し、2 つのメソッドの例を送信します

方法1: DOMが提供するイベントオブジェクトのターゲットイベント属性を使用して値を取得し、送信する...

Windows システムに VirtualBox と Ubuntu 16.04 をインストールするための詳細なチュートリアル

1. ソフトウェアの紹介バーチャルボックスVirtualBox は、無料のオープンソース仮想マシン ...

nginx ベースのブラウザネゴシエーションキャッシュプロセスの詳細な説明

この記事は主に、nginx に基づいてブラウザネゴシエーションキャッシュを設定する詳細なプロセスを紹...

Vue3 の ref toRef と toRefs の違いを理解する方法

目次1. 基本1.参照2. 参照3. 参照4. 最適な使い方2. 詳細な1. なぜrefが必要なのか...

HTML 描画ユーザー登録ページ

この記事では、HTML描画ユーザー登録ページの具体的な実装コードを参考までに共有します。具体的な内容...

Docker で Confluence をデプロイするための完全な手順

Confluence は有料ですが、クラックして使用できます (購入が推奨され、正規版がサポートされ...

Nodejsはgitee実装コードに自動的に同期するドキュメント同期ツールを作成します

本来の意図このツールを作った理由は、コンピューターを使用しているときにいつでも毎日の仕事や生活を記録...

WeChatアプレットの入力ジッター問題を解決する方法

問題を見つけるまず問題を見てみましょう。ミニプログラムでは、Vant のダイアログ コンポーネント ...

Vue が価格カレンダー効果を実現

この記事では、価格カレンダー効果を実現するためのVueの具体的なコードを例として紹介します。具体的な...

Nginx のリロード プロセスの背後にある真実を探る

本日の記事では、主にNginxのリロードプロセスについて紹介します。実は前回の記事では、nginx ...

mysql-8.0.15-winx64 解凍バージョンのインストールチュートリアルと終了する 3 つの方法

1.公式サイトからダウンロードして解凍する参考: 2. 環境変数を設定するMYSQL_HOMEをMy...