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

推薦する

Centos7 で ZooKeeper3.4 ミドルウェアを構築するための一般的なコマンドの概要

1.ダウンロードして解凍する1. Zookeeperの紹介分散サービス フレームワークとして、Zoo...

MySQL の Docker インストールと設定手順

目次序文環境インストールMySQLコンテナを作成して起動する思い出させるMySQLコンテナコマンドを...

MySQLトリガーについて深く理解するための記事

目次1. SC テーブルを挿入または変更するときに、テスト スコアが 0 ~ 100 の範囲外の場合...

Vueは適切なスライドアウトレイヤーアニメーションを実装します

この記事では、適切なスライドアウトレイヤーアニメーションを実装するためのVueの具体的なコードを例と...

Linux で 1 つのファイルの内容を別のファイルの末尾にコピーする

問題の説明:たとえば、ファイル 11 の内容は次のとおりです。こんにちはファイル22の内容は次のとお...

Vue3 を使用して虫眼鏡効果を実現する方法の例

目次序文1. カプセル化の重要性2. どのようにカプセル化しますか? 1. 準備2. 梱包を開始する...

Windows Server 2008 R2 マルチユーザー リモート デスクトップ接続ライセンス

仕事ではリモート サーバーが必要になることが多く、次の 2 つの問題に遭遇することがよくあります。 ...

MySQLデータのバックアップとリカバリの実装方法の分析

この記事では、例を使用して MySQL データのバックアップと復元の方法について説明します。ご参考ま...

Echarts バー水平棒グラフのサンプルコード

目次横棒グラフデータとスタイルを動的に更新するeChartsの幅と高さの適応の問題を解決する縦棒グラ...

JS での new の手書き実装

目次1 新しいオペレータの紹介2 新しいものは何をしましたか? 3 新しい演算子の実装をシミュレート...

SQL ROW_NUMBER() および OVER() メソッドのケーススタディ

構文フォーマット: row_number() over(partition by grouping ...

JS でシンプルなデータ監視を実装する方法

目次概要最初のステップステップ2なぜ別の _data が必要なのでしょうか?データにもう少しデータを...

LinuxにMySQLをインストールするための詳細なチュートリアル

すべてのプラットフォーム用の MySQL ダウンロードは、MySQL ダウンロードから入手できます。...

ニューススタイルのウェブサイトデザイン例25選

bmi ボイジャーピッチフォークアルスター食料品店チャウ真/斜めポスタこれは偽のDIYですクリエイテ...

Nginx設定の原理と実装プロセスの詳細な説明https

Linuxユーティリティcertbotを使用してhttps証明書を生成するこのツールは Let&#...