MySQL 学習: 初心者のための 3 つのパラダイム

MySQL 学習: 初心者のための 3 つのパラダイム

1. パラダイム基盤

1.1 パラダイムの概念

データベースを設計する際に従う必要がある仕様がいくつかあります。現在、リレーショナル データベースには、第 1 パラダイム (1NF)、第 2 パラダイム (2NF)、第 3 パラダイム (3NF)、Buss-Codd 形式 (BCNF)、第 4 パラダイム (4NF)、第 5 パラダイム (5NF、完全パラダイムとも呼ばれる) の 6 つのパラダイムがあります。

もちろん、通常の状況では、最初の 3 つのパラダイムを満たしていれば、より標準化されたデータベースを設計できます。

後者のパラダイムに従うには、まず前のパラダイムの要件に従う必要があります。たとえば、2 番目のパラダイムはまず最初のパラダイムに従う必要があり、3 番目のパラダイムはまず 2 番目のパラダイムに従う必要があります。

2. 3つの主要なパラダイム

2.1 3つの主要なパラダイム概念

第 1 正規形 (1NF): 各列はこれ以上分割できません。
第 2 正規形 (2NF): 第 1 正規形に基づいて、非主キー列は主キーに完全に依存し、主キーの一部になることはできません。
第 3 正規形 (3NF): 第 2 正規形に基づき、非主キー列は主キーにのみ依存し、他の非主キーには依存しません。

2.2 3つのパラダイムの例

たとえば、テーブルがあるとします。次の例では、このテーブルを 3 つのパラダイムに変換してから、標準テーブルに変換します。

ここに画像の説明を挿入

1. 最初のパラダイムを変革する

第一正規形(1NF):各列はこれ以上分割できません

テーブルには分割できる列、つまりシリーズがあることがわかります。これを第 1 正規形に変換すると次のようになります。

ここに画像の説明を挿入

2. 第2パラダイムの変革

第 2 正規形 (2NF): 第 1 正規形に基づいて、非主キー列は主キーに完全に依存し、主キーの一部になることはできません。

この 2 番目のパラダイムは理解するのが簡単ではないので、まずいくつかの概念を理解しましょう。

1. 関数の依存関係:一意の B 属性の値が A 属性 (または属性グループ) から決定できる場合、B は A に依存します。たとえば、上の写真の名前は学生番号に完全に依存しています。
2. 完全な機能的依存関係: A が属性グループである場合、B の属性値の決定は、A の属性グループ内のすべての属性値に依存する必要があります。属性グループは複数のフィールドを参照します。たとえば、スコアを知りたい場合は、学生番号とコース名の属性を使用してスコアを決定する必要があります。他の属性ではスコアを決定できません。
3. いくつかの機能的依存関係: A が属性グループの場合、B の属性値の決定は属性グループ A のいくつかのフィールドに依存する必要があります。たとえば、学生 ID とコース名が属性グループの場合、学生名は学生 ID によってのみ決定できます。
4. 伝達関数の依存性:属性 A (属性グループ) が属性 B の一意の値を決定できる場合、属性 C の値は属性 B の値によって一意に決定できます。たとえば、学生 ID によって学部名が決定され、学部名は学部長に対応します。
5. 主キー:テーブル内で、属性または属性グループが他のすべての属性に完全に依存している場合、この属性はコードのテーブルと呼ばれます。たとえば、上の図の学生番号とコース名で構成される属性グループなどです。

実際、2番目のパラダイムは次のようにも理解できる。

最初のパラダイムに基づいて、非主キーの主キーへの部分的な依存を排除​​する

上図の主キーは、学生番号とコース名で構成される属性グループです。上図では、スコアを除いて、他のすべての属性が主キーに部分的に依存していることがわかります。これを次のように修正できます。

ここに画像の説明を挿入

ここに画像の説明を挿入

第 2 正規形変換後、テーブルは 2 つのテーブルに分割されます。第 2 正規形によって、実際には多くの冗長部分が削除されていることがわかります。たとえば、変換前は、張無極の名前、学部名、学部長がテーブルに 3 回表示されていましたが、変換後は 2 つのテーブルに 1 回しか表示されなくなりました。

3. 第3のパラダイムへの変革

第 3 正規形 (3NF): 第 2 正規形に基づき、非主キー列は主キーにのみ依存し、他の非主キーには依存しません。

2 番目のポイントで述べた概念によれば、次のようになります。

ここに画像の説明を挿入

以上が初心者向けMySQL学習の3大パラダイムの詳しい内容です。MySQLの3大パラダイムについてさらに詳しく知りたい方は、123WORDPRESS.COMの他の関連記事もぜひご覧ください!

以下もご興味があるかもしれません:
  • データベースの3つのパラダイムの最もシンプルで記憶に残る説明
  • MySQLパラダイムの使用に関する詳細な説明
  • MySQLデータベースパラダイムの詳細な説明
  • データベース設計の3つの主要なパラダイムの簡単な分析

<<:  Docker コンテナ データ ボリュームの名前付きマウントと匿名マウントの問題

>>:  画像ボタンをフォームのリセットボタンとして使用する方法

推薦する

高並列処理 nginx サーバー向け Linux カーネル最適化構成の説明

デフォルトの Linux カーネル パラメータは最も一般的なシナリオに基づいており、高い同時アクセス...

レスポンシブ Web デザイン手法を実装し、ウォーターフォール モデルに別れを告げる 5 つのステップ (グラフィック チュートリアル)

次の Web デザイン プロジェクトはレスポンシブにする必要があると上司をようやく納得させることがで...

JS における for、for...in、for...of、forEach の違いと使用例

forループ基本的な構文形式: for(変数の初期化; 条件式; 演算式){ループ本体ステートメント...

MySQL エラー「すべての派生テーブルには独自のエイリアスが必要です」の解決方法

MySQL は、マルチテーブルクエリを実行するときにエラーを報告します。 [SQL] SELECT ...

Facebook によるインターネット サービスのほぼ完璧な再設計

<br />出典: http://www.a-xuan.cn/?p=197 先ほどFac...

Windows 10 に Linux サブシステムをインストールする 2 つの方法 (画像とテキスト付き)

Windows 10 は Linux サブシステムをサポートするようになり、面倒なデュアル システ...

Vue は URL に基づいて非同一オリジンのファイルをどのようにダウンロードするのか

一般的に、URL に基づいてファイルをダウンロードする場合、次の 2 つの解決策があります。 1. ...

springcloud alibaba nacos linux 設定の詳細なチュートリアル

まず、github から nacos の圧縮パッケージをダウンロードします: https://git...

MySQL 8.0.11 インストール概要チュートリアル図

インストール環境: CAT /etc/os-release CentOS システムのバージョン情報を...

PythonはデータベースMySQLの解凍バージョンのインストール構成に接続し、問題が発生しました

導入今日は Python でデータベースに接続する方法を学んだので、MySQL データベースをインス...

Alibaba Cloud ECS サーバーの開始プロセス (初心者必読のチュートリアル)

1. Alibaba Cloudは、個人のニーズに応じて適切なクラウドサーバーを選択し、CPU、メ...

ロンボク実装 JSR-269

序文導入Lombok は、Google Guava と同様に便利なツールであり、強くお勧めします。す...

MySQL の日付関数と日付変換およびフォーマット関数

MySQL は、膨大なユーザーベースを持つ無料のリレーショナル データベースです。この記事では、My...

CSS3+ベジェ曲線でスケーラブルな入力検索ボックス効果を実現

では、早速レンダリングを見てみましょう。 コア コードはtransition: cubic-bezi...

MySQL でタイムスタンプを日付に変換する例

序文職場で次のような状況に遭遇しました。ログ システムのテーブルでは、時間フィールドには日付データで...