MySQLデータベースパラダイムの詳細な説明

MySQLデータベースパラダイムの詳細な説明

序文:

データベースパラダイムについてはよく耳にしていましたが、詳細まで理解したことはありませんでした。一般的なデータベースの本やデータベースのコースでは、パラダイムに関する内容が紹介され、データベースの試験問題にもパラダイムがよく登場します。あなたはそのパラダイムを明確に理解しているでしょうか?この記事では、データベースのパラダイムについて学びましょう。

1. データベースパラダイムの紹介

冗長性が少なく合理的な構造のデータベースを確立するには、データベースを設計する際に特定のルールに従う必要があります。リレーショナル データベースでは、このルールはパラダイムと呼ばれます。パラダイムとは、特定の設計要件を満たす要約です。適切に構造化されたリレーショナル データベースを設計するには、特定のパラダイムを満たす必要があります。

このパラダイムの英語名は Normal Form であり、略して NF と呼ばれます。これは、1970 年代にイギリスの EF Codd がリレーショナル データベース モデルを提案した後にまとめられました。パラダイムはリレーショナル データベース理論の基礎であり、データベース構造を設計するプロセスで従わなければならない規則とガイドラインでもあります。

現在、リレーショナル データベースには、第 1 正規形 (1NF)、第 2 正規形 (2NF)、第 3 正規形 (3NF)、Buss-Codd 正規形 (BCNF)、第 4 正規形 (4NF)、および第 5 正規形 (5NF、完全正規形とも呼ばれる) の 6 つの一般的なパラダイムがあります。最小正規形は第 1 正規形 (1NF) です。より多くの仕様要件を満たす最初の正規形は第 2 正規形 (2NF) と呼ばれ、残りの正規形も同様です。

2. 共通パラダイムの詳細な説明

データベースを設計する際にはパラダイム要件を参照しますが、従うパラダイムのレベルが高ければ高いほど良いというわけではありません。パラダイムが高すぎるとデータ関係の制約は良くなりますが、テーブル間の関係が複雑になり、毎回操作するテーブルが増え、データベースのパフォーマンスが低下します。通常、リレーショナル データベースの設計では、最高レベルは BCNF に従うことであり、3NF が最も一般的です。つまり、一般的には、最初の 3 つのパラダイムで十分です。よく使われる最初の 3 つのパラダイムを詳しく見てみましょう。

第一正規形 (1NF)

最初のパラダイムは最も基本的なパラダイムです。データベース テーブル内のすべてのフィールド値が分解不可能な原子値である場合、データベース テーブルが第 1 正規形を満たしていることを意味します。簡単に言えば、第 1 正規形とは、各行のデータが分離不可能であり、同じ列に複数の値が存在することはできず、重複する属性が出現する場合は新しいエンティティを定義する必要があることを意味します。

例: ある会社が従業員の名前と連絡先の詳細を保存したいとします。次のようなテーブルが作成されます。

2 人の従業員 (Jon と Lester) はそれぞれ 2 つの携帯電話番号を持っているため、会社は上記の表に示すようにそれらを同じテーブルに保存します。すると、テーブルは 1NF に準拠しなくなります。これは、ルールで「テーブルの各属性にはアトミック (単一) な値が必要」とされており、Jon と Lester の従業員の emp_mobile 値がそのルールに違反しているからです。テーブルを 1NF に準拠させるには、次のテーブル データが必要です。

第2正規形 (2NF)

2 番目のパラダイムは、最初のパラダイムよりもさらに一歩進んでいます。 2 番目のパラダイムでは、データベース テーブル内のすべての列が、主キーの一部ではなく主キーに関連付けられていることを確認する必要があります (主に複合主キーの場合)。つまり、データベース テーブルでは、テーブルに保存できるデータは 1 つのタイプのみであり、同じデータベース テーブルに複数のタイプのデータを保存することはできません。

+----------+-------------+--------+
| 従業員 | 部門 | 責任者 |
+----------+-------------+--------+
| ジョーンズ | 会計士 | ジョーンズ |
| スミス | エンジニアリング | スミス |
| ブラウン | 会計 | ジョーンズ |
| グリーン | エンジニアリング | スミス |
+----------+-------------+--------+

上記の表は、従業員、作業部門、リーダーの関係を示しています。データベース内のテーブルの行を一意に表すことができるデータを、そのテーブルの主キーと呼びます。テーブルの先頭列は主キーとは関係ありません。したがって、この表は第 2 正規形に準拠していません。上記の表を第 2 正規形に準拠させるには、2 つの表に分割する必要があります。

-- 従業員は主キーです +----------+-------------+
| 従業員 | 部門 |
+----------+--------------+
| ブラウン | 会計 |
| グリーン | エンジニアリング |
| ジョーンズ | 会計 |
| スミス | エンジニアリング |
+----------+--------------+

-- 部門は主キーです+-------------+-------+
| 部門 | 責任者 |
+-------------+--------+
| 会計 | ジョーンズ |
| エンジニアリング | スミス |
+-------------+--------+

第3正規形 (3NF)

2NF を満たすという前提の下では、主キー以外のすべてのフィールドは互いに独立している必要があります。つまり、データ テーブル内のデータの各列が主キーに直接関連し、間接的に関連していないことを確認する必要があります。

つまり、第 3 正規形 (3NF) では、リレーションに、他のリレーションにすでに含まれている非主キー情報が含まれていないことが要求されます。たとえば、部門情報テーブルがあり、各部門には部門番号 (dept_id)、部門名、部門プロファイルなどの情報が含まれています。その後、従業員情報テーブルに部門番号をリストした後は、従業員情報テーブルに部門名、部門プロファイル、その他の部門関連情報を追加できなくなります。部門情報テーブルが存在しない場合は、第 3 正規形 (3NF) に従って構築する必要があります。そうしないと、データの冗長性が多くなります。

3. アンチパラダイムについて

このパラダイムの利点は明らかです。データの冗長性が大幅に削減され、ストレージ スペースが節約され、データの一貫性が維持されます。正規化されたテーブルは一般にサイズが小さく、メモリに収まりやすいため、操作が高速になります。つまり、すべてのテーブルが 3NF に標準化されている限り、データベース設計は最適になるということですか?必ずしもそうとは限りません。パラダイムが高ければ、テーブルはより細かく分割され、データベースにはより多くのテーブルが必要となり、ユーザーは元々関連のあるデータを複数のテーブルに分散させる必要があります。少し複雑なクエリでは、正規化されたデータベース上で少なくとも 1 つの結合 (場合によってはそれ以上) が必要になることがあります。これはコストがかかるだけでなく、一部のインデックス作成戦略が無効になる可能性もあります。

したがって、データベースを設計する際には、パラダイムの要件に完全に従うことはなく、場合によっては反パラダイムの設計も行います。冗長データまたは重複データを追加してデータベースの読み取りパフォーマンスを向上させ、関連するクエリ中の結合テーブルの数を減らします。

上記はMySQLデータベースパラダイムの詳細な説明です。MySQLデータベースパラダイムの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • MySQL シリーズ データベース設計 3 つのパラダイム チュートリアルの例
  • MySQL データベース設計 3 つのパラダイム例分析
  • MySQL データベースのデータ テーブルの最適化、外部キーの分析、3 つのパラダイムの使用
  • MySQLデータベース正規化設計理論のまとめ

<<:  Nginx における 2 つの現在の制限方法についての簡単な説明

>>:  Docker Tomcat のアクセス インターフェイスが表示されないのはなぜですか?

推薦する

jsはFileReaderを使用してローカルファイルまたはBLOBを読み取ります

目次FileReaderはローカルファイルまたはBLOBを読み取ります1. FileReaderの使...

Vueプロジェクトでコンポーネントをカプセル化する簡単な手順

目次序文Toastコンポーネントをカプセル化する方法ユースケース具体的な実装要約する序文ビジネスが発...

MySQL無料インストール版のパスワード設定に関する詳細なチュートリアル

方法1: SET PASSWORDコマンドを使用する MySQL -u ルート mysql> ...

Vue.js ソースコード解析のカスタム手順の詳細な説明

序文コア機能のデフォルトの組み込みディレクティブ (v-model および v-show) に加えて...

MySQL クエリのパケットが大きすぎる問題と解決策

問題の説明:エラーメッセージ:原因: com.mysql.jdbc.PacketTooBigExce...

Docker ベースの GitLab 環境をデプロイする方法と手順

注意:仮想マシンのメモリは2G以上が推奨され、 Alibaba Cloudのアクセラレーションイメー...

MySQLのさまざまなロックの概念的理解

楽観的ロック楽観的ロックは、主にデータ バージョン記録メカニズムに基づいて実装され、通常はデータベー...

XHTML 入門チュートリアル: XHTML ハイパーリンク

ハイパーリンクはインターネット全体を接続していると言っても過言ではありません。ハイパーリンクは、別の...

JS でクリップボード API を使用する方法

目次1. Document.execCommand() メソッド(1)コピー操作(2)貼り付け操作(...

Vueはvueメタ情報を使用して各ページのタイトルとメタ情報を設定します。

title: vue は vue-meta-info を使用して各ページのタイトルとメタ情報を設定...

MySQLクエリ条件におけるonとwhereの配置の違いの分析

導入今日SQLを書いているときに、問題が発生しました。要件は、データを照会し、スコアと過去 1 週間...

...

値の転送を実現するために、2つの同じレベルのコンポーネントをVueで作成します。

Vue コンポーネントは接続されているため、コンポーネント間で値を渡す必要があるのは避けられません...

MySQL マスタースレーブ遅延問題の解決方法

今日は、マスタースレーブ遅延が発生する理由とその対処方法について説明します。しっかり座って出発の準備...

Linuxで権限が拒否された場合の解決策の詳細な説明

許可が拒否されました:その理由は、ファイルの読み取り、書き込み、作成、削除などの権限がないためです。...