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

推薦する

MySQLクエリ文の実行プロセスの詳細な説明

目次1. クライアントとサーバー間の通信方法2. クエリキャッシュ3. クエリ最適化処理4. クエリ...

マインスイーパゲームを実装するための jQuery プラグイン (2)

この記事では、jQueryプラグインを使用してマインスイーパゲームを実装する2番目の記事を参考までに...

in() の ID の順序に従った Mysql クエリ結果の順序の詳細な説明

in() の ID の順序に従った Mysql クエリ結果の順序の詳細な説明コード例: <se...

CSS3マスクレイヤーのくり抜き効果を実現するさまざまな方法

この記事では、マスク レイヤーの中空化を実現する 4 つの方法を紹介します。みんなと共有し、自分用の...

IMG での UserMap の使用例

usemap は <img> タグの属性であり、使用するイメージ マップの名前を指定する...

mysql は sql ファイルを実行し、エラーを報告します エラー: 不明なストレージ エンジン 'InnoDB' ソリューション

問題を見つける最近、仕事で問題が発生しました。InnoDB タイプの SQL ファイルを実行すると、...

HTML知識ポイントの実践経験のまとめ

1. 表タグはtable、trは行、tdはセル、cellspacingはセル間の距離、cellpad...

フロントエンド例外 502 不正なゲートウェイの原因と解決策

目次502 不正なゲートウェイ エラーの発生1. 502 不正なゲートウェイ エラーとは何ですか? ...

Linux ifconfig コマンドの使用

1. コマンドの紹介ifconfig (ネットワーク インターフェイスを構成する) コマンドは、ネッ...

Docker Compose の実践とまとめ

Docker Compose は、Docker コンテナ クラスターのオーケストレーションを実現しま...

Tomcat をサービスとして登録する際に注意すべき点のまとめ

Tomcat をサービスとして登録する場合の注意点は次のとおりです。 インターフェースを開いたら、以...

Linux システム ディスクのフォーマットとスワップ パーティションの手動追加

Windows: NTFS、FATをサポートLinux は次のファイル形式をサポートしています: C...

タブバーのいくつかの実装方法(推奨)

タブ: カテゴリ + 説明タグバー: カテゴリ => ユーザーに現在地と目的地を知らせる1. ...

MySQLトリガーの使用と注意すべき点

目次トリガーについてトリガーの使用トリガーを作成するトリガーを表示トリガーの削除使用上の注意新旧の違...

MySQLをシンプルに学ぶ

序文データベースは常に私の弱点でした。自分の経験 (python+sqlalchemy) を組み合わ...