MySQL データベースのデータ テーブルの最適化、外部キーの分析、3 つのパラダイムの使用

MySQL データベースのデータ テーブルの最適化、外部キーの分析、3 つのパラダイムの使用

この記事では、例を使用して、MySQL データベースのデータ テーブルの最適化、外部キーの使用、および 3 つのパラダイムを説明します。ご参考までに、詳細は以下の通りです。

データテーブルの最適化

製品情報テーブルを最適化する

1. 製品カテゴリテーブルを作成します。

テーブルが存在しない場合は作成する goods_cates( 
id int unsigned 主キー auto_increment, 
名前varchar(40) nullではない 
);

2. 製品カテゴリを製品カテゴリ テーブルに書き込みます。

注意:クエリ結果を別のテーブルに挿入するときに値を追加する必要はありません

goods_cates(名前)に挿入 
(cate_name で商品グループから cate_name を選択します); 

3. 製品カテゴリ テーブルを製品テーブルに更新します。

製品テーブルをカテゴリテーブルに接続し、カテゴリテーブルIDを使用して製品テーブルのカテゴリコンテンツを置き換えます。

更新 (goods_cates 内部結合 goods on goods_cates.name=goods.cate_name) 
goods.cate_name=goods_cates.id を設定します。

4. テーブル構造を変更します。

製品テーブルの製品カテゴリ名フィールド cate_name の名前を cate_id に変更します。

テーブル商品を変更し、cate_name cate_id int unsigned not null を変更します。

外部キー

1. 外部キーの使用:

外部キー制約を追加し、データ行を挿入して、goods_cates の id に cate_id が存在するかどうかを判断します。存在しない場合、データ挿入は失敗します。

テーブル名 1 を変更し、外部キー (フィールド名 1) を追加して、テーブル名 2 (フィールド名 2) を参照します。 

(外部キーを設定することで不正なデータ入力を防ぐことができます)

外部キー(フィールド名 1)はテーブル名 2(フィールド名 2)を参照します。 

(接続するテーブルが存在する場合は、テーブル作成時に外部キーを直接設定することもできます)

2. 外部キーの欠点:

外部キーは不正なデータの入力を効果的に防ぐことができますが、テーブルの更新効率が大幅に低下します。そのため、実際の開発では、外部キー制約は一般的に適用されず、データの正当性はトランザクション レベルで判断されます。

3. 外部キーの削除:

テーブルを作成するためのステートメントを表示します

テーブル商品の作成を表示します。 

名前を取得した後、外部キーを削除します。

テーブル goods を変更し、外部キー goods_ibfk_1 を削除します。

3つのパラダイム

1. 第 1 正規形 (1NF): 列の原子性を強調します。つまり、列を他の列に分割することはできません。
2. 第 2 正規形 (2NF): 1NF に基づいて、テーブルには主キーが必要であり、主キー以外のフィールドは主キーの一部ではなく、主キーに完全に依存する必要があります。
3. 第 3 正規形 (3NF): 2NF に基づき、非主キー列は主キーに直接依存する必要があり、推移的な依存関係は存在できません。

第 3 正規形に準拠したデータベースは、より合理的なデータベースです。

MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL クエリ スキル」、「MySQL 共通関数の概要」、「MySQL ログ操作スキル」、「MySQL トランザクション操作スキルの概要」、「MySQL ストアド プロシージャ スキル」、および「MySQL データベース ロック関連スキルの概要」

この記事が皆様のMySQLデータベース設計に役立つことを願っています。

以下もご興味があるかもしれません:
  • MySQL シリーズ データベース設計 3 つのパラダイム チュートリアルの例
  • MySQLデータベースパラダイムの詳細な説明
  • MySQL データベース設計 3 つのパラダイム例分析
  • MySQLデータベース正規化設計理論のまとめ

<<:  Linux で g++ を使用してプログラムをコンパイルする際の -I (大文字の i)、-L (大文字の l)、-l (小文字の l) の機能の詳細な説明

>>:  React-Dropzone をベースにアップロードコンポーネント機能を開発する (サンプルデモ)

推薦する

いくつかの一般的な CSS レイアウト (要約)

まとめこの記事では、次の一般的なレイアウトを紹介します。 3 列レイアウトを実装する方法は多数ありま...

JavaScript 定期検証パスワード強度実装方法

展示する デザインパスワード強度分析パスワードは数字、文字、特殊記号で構成されていますパスワード: ...

Linux システム修復モード (シングル ユーザー モード)

目次序文1. シングルユーザーモードでの一般的なバグ修正2. シングルユーザーモードでシステムパスワ...

IE6 および IE7 で DIV コンテナの固定高さを使用するためのヒント

IE6 と IE7 では CSS の解釈に多くの違いがあります。今日はそのうちの 1 つである高さに...

Mysqlデータベースの文字化けに対処する方法

MySQL では、データベースの文字化けは一般的に文字セットを設定することで修正できますが、文字化け...

Dockerのクイックガイド

Docker は、安全で繰り返し可能な環境でソフトウェアを自動的にデプロイする方法を提供し、コンピュ...

Tomcatのクラスロードメカニズムを説明する記事

目次- 序文 - - JVM クラスローダー - 1. JVMクラスローダー2. クラスローダーのソ...

Linux にバイナリ MySQL をインストールして MySQL パスワードをクラックする方法

1. システムに必要な libaio ソフトウェアがインストールされていることを確認します。インスト...

Docker+Nginx を使ってシングルページアプリケーションをデプロイする

開発から導入まで自分で行うシングルページアプリケーションを開発する場合、ビルドを実行した後 npm ...

JavaScriptオフセットは、ウィンドウ内でのマウス座標の取得とモジュールのドラッグを実装します。

オフセットOffset はオフセットです。関連プロパティの offset シリーズを使用すると、次の...

Win10 に Tomcat サーバーをインストールし、環境変数を構成する詳細なチュートリアル (画像とテキスト)

目次JDKをダウンロードしてインストールするTomcat 圧縮パッケージをダウンロードTomcatの...

js 配列エントリ() 反復メソッドを取得する

目次1.entires() メソッドの詳細な構文2.entires() メソッドの一般的な使用法と注...

Vue Element-ui フォーム検証ルールの実装

目次1. はじめに2. ルール検証の入力モード2.1 サンプルコード2.2、フォーム項目2.3. 小...

JavaScript のクロージャによって発生する問題を回避する

閉鎖による問題を回避するためのletについてオブジェクト指向の考え方を使用して、購入者情報の削除機能...

ウェブサイト上で flv/MP4 やその他のビデオ ファイルを再生できない問題は、MIME タイプに関連しています。

ウェブサイトを作成している際に、flv や MP4 形式などのビデオ ファイルはローカルでは正常に再...