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

推薦する

Dockerイメージ送信コマンドcommitの動作原理と使い方の詳細な説明

ローカルでコンテナを作成した後、このコンテナに基づいてローカル イメージを作成し、このイメージを D...

Linuxコマンドとファイル検索の詳しい説明

1. ファイル名検索を実行するwhich ('実行可能ファイル' を検索) //PA...

MySQL遅延レプリケーションライブラリ方式の詳細な説明

簡単に言えば、遅延レプリケーションとは、スレーブ データベースがマスター データベースより 1 時間...

WeChatアプレットが計算機機能を実装

WeChatミニプログラムはますます人気が高まっています。多くの大学生が独学で学んでいるのも見てきま...

MySQL の複数テーブル関連付け 1 対多クエリを使用して最新のデータを取得する方法の例

この記事では、MySQL で複数のテーブルを使用して 1 対多のクエリを使用して最新のデータを取得す...

Linux スレッド間の同期と排他制御の知識ポイントのまとめ

スレッドが同時に実行される場合、スレッドがリソースを競合してデータの曖昧さが生じるのを防ぐために、重...

Linux で Multitail コマンドを使用するチュートリアル

MultiTail は、tail コマンド機能と同様に、複数のドキュメントを同時に監視するために使用...

Linuxの運用・保守の基礎知識から上級者向け知識までをまとめました

運用保守エンジニアは、初期段階では非常に大変な仕事です。この期間中、コンピューターの修理、ネットワー...

MySQL 5.7.17 のインストールと設定方法のグラフィック チュートリアル (Ubuntu 16.04)

公式 MySQL Web サイトから Ubuntu Linux 用の最新バージョンの MySQL を...

Ubuntu 20.04 に Xrdp サーバー (リモート デスクトップ) をインストールする方法

Xrdp は、グラフィカル インターフェイスを通じてリモート システムを制御できる Microsof...

Mac OS 10.11 での MySQL 5.7.12 のインストールと設定のチュートリアル

Mac OS 10.11 に MySQL をインストールして設定する方法を、主に写真を使って手順を簡...

MySQLの整数および文字列インデックスの無効化または暗黙的な変換に関する簡単な説明

目次問題の概要問題の再現問題の拡大結論は問題の概要今日、仕事中に、DBA が突然、SQL に暗黙的な...

Chrome、Firefox、IEで入力カーソルの位置がずれる問題の解決方法

ブラウザで入力カーソルがずれる問題の詳しい説明<br />仕事で問題に遭遇し、解決策を探...