MySQL シリーズ データベース設計 3 つのパラダイム チュートリアルの例

MySQL シリーズ データベース設計 3 つのパラダイム チュートリアルの例

1. データベース設計の3つのパラダイムに関する知識の説明

1. デザインパラダイムとは何ですか?

テーブルを設計する際の基礎は、これら 3 つのパラダイムに従って設計されたテーブルにはデータの冗長性がないことにあります。

2. なぜ 3 つのデータベースパラダイムを学ぶ必要があるのでしょうか?

データベース設計パラダイムとは、データベース設計が満たす必要のある仕様です。これらの仕様を満たすデータベースは簡潔で、構造が明確です。同時に、挿入、削除、更新操作で例外は発生しません。それどころか、混乱が生じ、データベース プログラマーに問題を引き起こすだけでなく、見苦しくなり、不要な冗長な情報が大量に保存される可能性があります。

データ アナリストは自分でデータベースを設計する必要はありませんが、3 つのデータベース パラダイムを理解しておくと、後でテーブルを理解するのに役立ちます。

3. 3 つのパラダイムとは何ですか?

1) 第 1 正規形: どのテーブルにも主キーがあり、各フィールドはアトミックかつ分割不可能である必要があります。

ここに画像の説明を挿入

2) 第 2 正規形: 第 1 正規形に基づいており、主キー以外のすべてのフィールドが主キーに完全に依存し、部分的な依存関係が発生しないことが求められます。

ここに画像の説明を挿入

解決策: 多対多、3 つのテーブル、およびリレーションシップ テーブル内の 2 つの外部キー。

ここに画像の説明を挿入

3) 第 3 正規形: 第 2 正規形に基づいて構築され、すべての非主キー フィールドは主キーに直接依存し、推移的な依存関係を生成することはできません。

ここに画像の説明を挿入

解決策: 1 対多、2 つのテーブル、複数のテーブルに外部キーを追加します。

ここに画像の説明を挿入

注: 上記の青色の 2 つの文に注意してください。

注意: 実際の開発では、顧客のニーズを満たすことに主な焦点が置かれ、冗長性よりも実行速度が優先されることがあります。

2. データベーステーブルの古典的な設計スキーム

1対1でデザインするにはどうすればいいですか?

最初の解決策: 主キーの共有

ここに画像の説明を挿入

2番目の解決策: 外部キーの一意性

ここに画像の説明を挿入

注: 一意の外部キーの状況は、上で説明した多対多の状況に少し似ています。外部キーフィールドが
一意の制限の後は、1対1になります。

上記は、MySQL シリーズのデータ​​ベース設計の 3 つのパラダイムのチュートリアル例の詳細な内容です。MySQL データベース設計の 3 つのパラダイムの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

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

<<:  HTML の入力の readonly 属性と disabled 属性の違いについて簡単に説明します。

>>:  DockerコンテナにRedisをデプロイする手順の紹介

推薦する

Vue 計算プロパティ実装トランスクリプト

この記事では、Vueの計算プロパティ実装レポートカードを参考に共有します。具体的な内容は次のとおりで...

HTML 9グリッドレイアウトの実装方法

ウェブサイトのレイアウトの多様化は、当社のフロントエンドの得意分野です。最近、UC ブラウザのデフォ...

VMware で Nginx+KeepAlived クラスタ デュアルアクティブ アーキテクチャを展開する際の問題と解決策

序文負荷分散には nginx を使用します。アーキテクチャのフロントエンドまたは中間層として、トラフ...

Vue Element フロントエンドアプリケーション開発の動的メニューとルーティングの関連付け処理

目次概要1. メニューとルーティング処理2. メニューとルートリスト3. ログインプロセスの処理概要...

DockerにELKをインストールしてJSON形式のログ分析を実装する方法

ELKとは何ですか? ELK は、Elastic が提供するログ収集およびフロントエンド表示ソリュー...

Linux で pyenv をインストールする方法

前提条件gitをインストールする必要があるインストール手順1. リモートリポジトリからpyenvをク...

dockerコンテナがIP経由でホストマシンにアクセスできない問題を解決する方法の詳細な説明

問題の起源docker を使用する場合、残念ながら docker コンテナ内のホストのポート 80 ...

jsオブジェクト指向カプセル化カスケードドロップダウンメニューリストの実装手順

この例で開発されたカスケード ドロップダウン メニューは、既存の JSON データに基づいて作成され...

Windows での PyTorch 開発環境のインストール チュートリアル

アナコンダのインストールAnaconda は、Python の使用を容易にするために作成されたソフト...

CocosCreatorでクールなレーダーチャートを描く方法

目次序文プレビュー文章グラフィックコンポーネントプロパティ機能グリッドを描く軸角度を計算するスケール...

太陽系の惑星のアニメーション効果を実現するHTML+CSS3コード

太陽系の 8 つの惑星(衛星を除く)のアニメーションを作成します。すべての惑星は太陽の周りを回ってい...

同じ IP のアクセス頻度を制限するように nginx を設定する方法

1. nginx.conf の http{} に次のコードを追加します。 limit_conn_zo...

JavaScript の継承についてどれくらい知っていますか?

目次序文コンストラクタ、プロトタイプオブジェクト、インスタンスオブジェクトの関係プロトタイプチェーン...

テーブルの幅を固定して、テキストによって幅が変わらないように設定

ページ内のテーブルの幅を width="600px" に設定した後も、幅が固定さ...

Linux のタイムドログ削除を実装する簡単な方法

導入Linux は、ファイル、ログ、電子メール、バックアップなどを自動的に生成できるシステムです。ハ...