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

推薦する

Win 8 以降での最新の MySQL バージョン 5.7.17 (64 ビット ZIP グリーン バージョン) のインストールと展開のチュートリアル

まず、ブロガーはコミュニティ バージョンをプレイしていますが、学習とテストにはこれで十分です。 Bl...

DockerでHadoopを実行しイメージを作成する方法

車輪の再発明として、ここでは再パッケージ化を使用して Docker ベースの Hadoop イメージ...

Nginx リバースプロキシの例の詳細な説明

1. リバースプロキシの例1 1. 効果を達成する(1)ブラウザを開き、www.123.comと入力...

JS は Baidu 検索ボックスを実装します

この記事の例では、Baidu検索ボックスを実装するためのJSの具体的なコードを参考までに共有していま...

HTML2 キャンバス SVG が認識されない場合の解決策

ウェブページを画像としてキャプチャする新機能があったので、人気のhtml2canvasを使ってみまし...

実務経験7年のフロントエンドスーパーバイザーによる経験共有

今日はベテランの貴重な経験を共有します。著者は技術管理の経験が7年あり、多い時は80人以上を率いてい...

初心者がdockerにmysqlをインストールするときに遭遇するさまざまな問題

序文最近、パソコンのシャットダウンに時間がかかることが多く、強制的にシャットダウンするには電源ボタン...

CSS3 はドラッグ可能なルービックキューブの 3D 効果を実現します

主に使用される知識ポイント: •css3 3D変換 •ネイティブjsマウスドラッグイベント•表示:グ...

MySQLはカスタム関数を使用して親IDまたは子IDを再帰的に照会します

背景: MySQL では、レベルに制限がある場合、たとえば、ツリーの最大深度を事前に決定できる場合、...

Docker を使用して静的 Web サイト アプリケーションを作成する (複数の方法)

静的ウェブサイトをホストできるサーバーは数多くあります。この記事では、nginx、apache、to...

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

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

Reactでプロキシを有効にする2つの実用的な方法

プロキシを有効にする2つの方法React には、直接使用できるカプセル化された Ajax リクエスト...

JavaScript ループトラバーサルの 24 種類のメソッドをすべてご存知ですか?

目次序文1. 配列走査法1. 各() 2. マップ() 3. 〜のために4. フィルター() 5. ...

URL 内の特殊記号の意味を知っていますか?

1.# # は Web ページ内の場所を表します。右側の文字はその位置の識別子です。たとえば、ht...

知っておくべき JS 配列削減の高度な使い方 25 選

序文Reduce は ES5 で追加された新しい従来の配列メソッドの 1 つです。forEach、f...