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 のアクセス インターフェイスが表示されないのはなぜですか?

推薦する

webpackのモバイル適応ソリューションの概要

目次レムフォルクスワーゲンサードパーティのUIフレームワークに適応する結論モバイル開発における最も一...

Docker 大規模プロジェクトのコンテナ化変革

仮想化とコンテナ化は、クラウドベースのプロジェクトでは避けられない 2 つの問題です。仮想化は純粋な...

Flask と Vue のフロントエンドとバックエンドを分離したプロジェクト展開のサンプル コード

以前、プロジェクトを開発しました。バックエンドのインターフェースを書くために Flask フレームワ...

コネクタコンポーネントから Tomcat のスレッドモデルを見る - BIO モード (推奨)

Tomcat の上位バージョンでは、デフォルト モードは NIO モードを使用することになります。...

ウェブカラーのコントラストと調和のテクニックの共有

色のコントラストと調和対照的な状況では、色の相互作用は単一の色によって与えられる感覚とは異なります。...

JavaScriptの信頼性の低い未定義

undefined JavaScript では、値が undefined かどうかを判断したい場合は...

バントリストコンポーネントをスクロールしても、スクロールバーの位置は保持されます。

バントリストコンポーネントをスクロールするときに、スクロールバーの位置が保持されます。これは、kee...

CSS floatプロパティの詳細な説明

1. フローティングとは何ですか?フローティングは、その名の通り、浮遊することを意味します。要素がド...

JavaScript の new 演算子の原理と例の詳細な説明

新しい用途new の機能は、コンストラクターを通じてインスタンス オブジェクトを作成することです。イ...

CSS3 でテキストの点滅効果を実現する 3 つの方法 サンプルコード

1. 透明度を変更してテキストを徐々に点滅させると、次のような効果が得られます。 <!DOCT...

IE7 互換モードで IE8 を有効にするコード

最も人気のあるタグはIE8ですブラウザベンダーはバージョンアップデートのリリースに躍起になっている一...

Vueはビデオ再生を実装するためにビデオタグを使用します

この記事では、ビデオタグを使用してビデオ再生を実装するVueの具体的なコードを参考までに共有します。...

Vue3 コンポジション API の紹介

目次概要例なぜそれが必要なのでしょうか?設定参照、反応的計算して見るライフサイクルVue3.0 は ...

ウェブサイト上のWeiboコンポーネントの再設計の詳細な紹介(写真とテキスト)

前面に書かれたWeibo コンポーネントは、サードパーティのアクセス ユーザーが開発を必要とせずに ...

vscodeで保存した後のHTML自動フォーマットの問題を解決する

vsCode のバージョンは最近更新され、現在のバージョン番号は 1.43 です。実際、vsCode...