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で自動更新を設定するための手順を完了する

推薦する

HTML と CSS を使用して絵文字付きのコメント ボックスを作成する方法のチュートリアル

絵文字付きの HTML コメント ボックス。絵文字は Json データを通じて読み込まれ、好みに応じ...

フロントエンドページのポップアップマスクはページのスクロールを禁止します

フロントエンド開発者がよく遭遇する問題は、ユーザーに情報を提示するためのポップアップ ウィンドウを作...

Vue ボタンの権限制御の導入

目次1. 手順1. ボタンの権限を定義する2. ストアを定義する3. 権限指示を作成する4. パーミ...

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

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

MySQL エラー番号 1129 の解決方法

SQLyog が MySQL に接続する際にエラー番号 1129 が発生します: mysql エラー...

Vue で Excel インポート機能を実装する詳細な手順

1. フロントエンド主導の実装手順最初のステップは、ページのインポートボタンをクリックしてExcel...

MySQLの基本的な共通コマンドの概要

目次MySQL の基本的な共通コマンド1. SQL文2. テーブルを作成する3. フィールドのプロパ...

動的な色切り替えの実装コードをサポートするために、CSS で SVG 画像を参照します。

表示する svg 画像を追加すると、React はファイルが見つからないというメッセージを表示します...

SNMP4J サーバー接続タイムアウト問題の解決策

弊社のネットワーク管理センターは管理センター兼サーバーとして機能します!各管理対象デバイスは、TCP...

Linuxホスト名変更コマンドの詳しい説明

Linux ホスト名変更コマンド1. ホスト名を一時的に変更するだけの場合は、hostname コマ...

MySQLデータベースの追加、削除、変更操作の詳細な説明

データの挿入テーブル名(列名1、列名2、列名3)の値(値1、値2、値3)に挿入します。ユーザーに(u...

CSS スタイルの読み込みの優先順位に関する経験の共有

昨日のプロジェクト開発中に、スタイルの読み込み優先順位に関する問題が発生しました。クラスは定義され、...

Mysql クラシック高レベル/コマンドライン操作 (クイック) (推奨)

サーバーとデータベースの構築方法を学ぶ必要があるため、最近は SQL 言語を独学で学び始めました。デ...

基本構造、ドキュメント タイプ、ヘッダー、本文などの一般的な HTML 要素の概要。

1. 基本構造:コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBL...

Linuxでテキスト比較を実現するコツを教えます

序文コードを書く過程で、必然的にコードに何らかの変更を加えることになります。しかし、変更を加えるとき...