導入
散らかったガレージを、すべてが簡単にアクセスできるようにしてきれいに配置できる、よく組織された明るい照明のスペースに変えることを想像してください。データベースの世界では、このプロセスは正規化と呼ばれます。きちんとしたガレージが効率を向上させると、編成されたデータを備えた適切に構造化されたデータベースのパフォーマンスが向上します。もっと学ぶ準備はできましたか?この記事では、実用的なSQLの例を使用して、最初の3つの通常の形式(1NF、2NF、3NF)を説明します。データベースの設計エクスペリエンスに関係なく、より効率的でスケーラブルなデータベースを構築する方法を学びます。データを最適化する準備はできましたか?始めましょう!
概要
- SQLを使用して、データベース正規化のコア原則と目標を把握します。
- 最初の通常のフォーム(1NF)を適用して、原子値と一次キーを確保します。
- 部分的な依存関係を特定して排除して、2番目の通常のフォーム(2NF)を達成します。
- 3番目の通常のフォーム(3NF)の要件を満たすために、推移的依存関係を削除します。
- 実用的なSQLクエリを使用して正規化されたデータベース構造を実装します。
目次
- 導入
- 正規化とは何ですか?
- 最初の通常のフォーム(1NF)
- 2番目の通常のフォーム(2NF)
- 3番目の通常のフォーム(3NF)
- 実用的な例:それをすべてまとめる
- 結論
- よくある質問
正規化とは何ですか?
正規化は、リレーショナルデータベース設計の重要な側面です。冗長性を最小限に抑え、データの整合性を高めることにより、データ組織を合理化します。このプロセスでは、データベースを複数のテーブルに分割し、確立されたルールに基づいてそれらの間の関係を定義し、それによりデータの異常を削減します。各通常の形式を詳細に調べて、原則の概要を説明し、実用的なSQLの例で説明しましょう。
最初の通常のフォーム(1NF)
目的:各テーブルに主キーがあり、すべての列にアトミック(不可分)値が含まれていることを確認します。これらのルールを順守する場合、テーブルは1NFを満たします。
- 原子値:各列は、行ごとに1つの値のみを保持する必要があります。
- 一意の列名:各列には一意の識別子が必要です。
- 独立順:データストレージの順序は無関係です。
例:
繰り返しグループを持つ非正規化されたテーブルを検討してください。
Orderid | カスタム名 | 製品 | 数量 |
---|---|---|---|
1 | ジョン・ドー | ペン、鉛筆 | 2、3 |
2 | ジェーン・スミス | ノートブック、消しゴム | 1、2 |
Products
とQuantities
列には複数の値が含まれているため、このテーブルは1NFに違反します。
1NFへの変換:
Orderid | カスタム名 | 製品 | 量 |
---|---|---|---|
1 | ジョン・ドー | ペン | 2 |
1 | ジョン・ドー | 鉛筆 | 3 |
2 | ジェーン・スミス | ノート | 1 |
2 | ジェーン・スミス | 消しゴム | 2 |
SQL実装:
テーブル注文を作成します( OrderId int、 CustomerName varchar(255)、 Product varchar(255)、 数量int、 主キー(OrderID、製品) );
2番目の通常のフォーム(2NF)
目的:テーブルが1NFにあることを確認し、すべての非キー属性が主キー全体に完全に依存していることを確認します。これは、複合プライマリキーを備えたテーブルに特に関連しています。
2NFを達成するための手順:
- 1NFコンプライアンス:テーブルはすでに1NFに適合する必要があります。
- 部分的な依存関係を排除する:非キー属性が、その一部だけでなく、完全なプライマリキーに依存することを確認してください。
例:
1NFのテーブルを検討しますが、部分的な依存関係を示します。
Orderid | customerid | ProductId | 量 | カスタム名 |
---|---|---|---|---|
1 | 1 | 1 | 2 | ジョン・ドー |
2 | 2 | 2 | 1 | ジェーン・スミス |
ここでは、 CustomerName
CustomerID
のみに依存し、Compositeキー( OrderID
、 ProductID
)ではありません。
2NFへの変換:
-
Orders
とCustomers
ための個別のテーブルを作成します。
注文表:
Orderid | customerid | ProductId | 量 |
---|---|---|---|
1 | 1 | 1 | 2 |
2 | 2 | 2 | 1 |
顧客テーブル:
customerid | カスタム名 |
---|---|
1 | ジョン・ドー |
2 | ジェーン・スミス |
SQL実装:
テーブル注文を作成します( OrderId int、 customerid int、 Productid int、 数量int、 主キー(OrderID、ProductID) ); テーブルの顧客を作成します( customerId intプライマリキー、 CustomerName varchar(255) );
3番目の通常のフォーム(3NF)
目的:テーブルが2NFにあることを確認し、すべての属性が主キーのみに依存します。
3NFを達成するための手順:
- 2NFコンプライアンス:テーブルはすでに2NF要件を満たしている必要があります。
- 推移的依存関係を削除します:非キー属性が他の非キー属性に依存しないことを確認してください。
例:
2NFのテーブルを検討しますが、推移的な依存関係を備えています。
Orderid | customerid | ProductId | 量 | ProductName |
---|---|---|---|---|
1 | 1 | 1 | 2 | ペン |
2 | 2 | 2 | 1 | ノート |
ここでは、 ProductName
ProductID
に依存し、 OrderID
に直接依存します。
3NFへの変換:
-
Orders
とProducts
の個別のテーブルを作成します。
注文表:
Orderid | customerid | ProductId | 量 |
---|---|---|---|
1 | 1 | 1 | 2 |
2 | 2 | 2 | 1 |
製品テーブル:
ProductId | ProductName |
---|---|
1 | ペン |
2 | ノート |
SQL実装:
テーブル注文を作成します( OrderId int、 customerid int、 Productid int、 数量int、 主キー(OrderID、ProductID) ); テーブルの顧客を作成します( customerId intプライマリキー、 CustomerName varchar(255) ); テーブル製品を作成します( Productid intプライマリキー、 ProductNameVarchar(255) );
実用的な例:それをすべてまとめる
この非正規化されたデータから始めましょう。
Orderid | カスタム名 | 製品 | 数量 |
---|---|---|---|
1 | ジョン・ドー | ペン、鉛筆 | 2、3 |
2 | ジェーン・スミス | ノートブック、消しゴム | 1、2 |
ステップ1:1NFに変換します
多値の列を原子値に分離します。
Orderid | カスタム名 | 製品 | 量 |
---|---|---|---|
1 | ジョン・ドー | ペン | 2 |
1 | ジョン・ドー | 鉛筆 | 3 |
2 | ジェーン・スミス | ノート | 1 |
2 | ジェーン・スミス | 消しゴム | 2 |
ステップ2:2NFに変換します
部分的な依存関係を特定して分離します。
- 注文表:
Orderid | customerid | ProductId | 量 |
---|---|---|---|
1 | 1 | 1 | 2 |
1 | 1 | 2 | 3 |
2 | 2 | 3 | 1 |
2 | 2 | 4 | 2 |
- 顧客テーブル:
customerid | カスタム名 |
---|---|
1 | ジョン・ドー |
2 | ジェーン・スミス |
- 製品テーブル:
ProductId | ProductName |
---|---|
1 | ペン |
2 | 鉛筆 |
3 | ノート |
4 | 消しゴム |
ステップ3:3NFに変換します
推移的依存関係を排除し、一次キーのみの直接依存関係を確保する:
- ステップ2の表は、すべての非キー属性がプライマリキーのみに依存するため、すでに3NFを満たしています。
結論
この記事では、SQL正規化の実装方法を示しました。 SQL正規化のマスタリングは、堅牢で効率的なデータベースを構築するために重要です。最初の3つの通常のフォーム(1NF、2NF、および3NF)の原則を理解して適用することにより、冗長性を大幅に減らし、データの整合性を高めることができます。これにより、データ管理が簡素化されるだけでなく、データベース全体のパフォーマンスが向上します。これらの実用的なSQLの例を使用すると、複雑で組織化されたデータセットを効率的で適切に構造化したデータベースに変換できます。これらの手法を実装して、データベースが安定し、スケーラブルで、簡単に保守可能であることを確認します。
よくある質問
Q1。データベースの正規化とは何ですか?
A.データベースの正規化は、データの冗長性を減らし、データの整合性を向上させるために、一連のいわゆる正常形式に従ってリレーショナルデータベースを構築するプロセスです。
Q2。なぜ正規化が重要なのですか?
A.正規化により、データの複製が最小限に抑えられ、データの一貫性が確保され、データベースのメンテナンスが簡素化されます。
Q3。通常のフォームは何ですか?
A.通常のフォームは、正規化プロセスの段階を表します:1NF(最初の通常の形式)、2NF(2番目の通常の形式)、および3NF(3番目の正常形式)など。
以上がSQLで正規化を実装する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ChatGptはアクセスできませんか?この記事では、さまざまな実用的なソリューションを提供しています!多くのユーザーは、ChatGPTを毎日使用する場合、アクセス不能や応答が遅いなどの問題に遭遇する可能性があります。この記事では、さまざまな状況に基づいてこれらの問題を段階的に解決するように導きます。 ChatGPTのアクセス不能性と予備的なトラブルシューティングの原因 まず、問題がOpenaiサーバー側にあるのか、ユーザー自身のネットワークまたはデバイスの問題にあるのかを判断する必要があります。 以下の手順に従って、トラブルシューティングしてください。 ステップ1:OpenAIの公式ステータスを確認してください OpenAIステータスページ(status.openai.com)にアクセスして、ChatGPTサービスが正常に実行されているかどうかを確認してください。赤または黄色のアラームが表示されている場合、それは開くことを意味します

2025年5月10日、MIT物理学者のMax Tegmarkは、AI Labsが人工的なスーパーインテリジェンスを解放する前にOppenheimerの三位一体計算をエミュレートすべきだとGuardianに語った。 「私の評価では、「コンプトン定数」、競争が

AI Music Creation Technologyは、1日ごとに変化しています。この記事では、ChatGPTなどのAIモデルを例として使用して、AIを使用して音楽の作成を支援し、実際のケースで説明する方法を詳細に説明します。 Sunoai、Hugging Face、PythonのMusic21 Libraryを通じて音楽を作成する方法を紹介します。 これらのテクノロジーを使用すると、誰もがオリジナルの音楽を簡単に作成できます。ただし、AIに生成されたコンテンツの著作権問題は無視できないことに注意する必要があります。使用する際には注意する必要があります。 音楽分野でのAIの無限の可能性を一緒に探りましょう! Openaiの最新のAIエージェント「Openai Deep Research」が紹介します。 [chatgpt] ope

ChATGPT-4の出現により、AIアプリケーションの可能性が大幅に拡大しました。 GPT-3.5と比較して、CHATGPT-4は大幅に改善されました。強力なコンテキスト理解能力を備えており、画像を認識して生成することもできます。普遍的なAIアシスタントです。それは、ビジネス効率の改善や創造の支援など、多くの分野で大きな可能性を示しています。ただし、同時に、その使用における予防策にも注意を払わなければなりません。 この記事では、ChATGPT-4の特性を詳細に説明し、さまざまなシナリオの効果的な使用方法を紹介します。この記事には、最新のAIテクノロジーを最大限に活用するためのスキルが含まれています。参照してください。 Openaiの最新のAIエージェント、「Openai Deep Research」の詳細については、以下のリンクをクリックしてください

ChatGPTアプリ:AIアシスタントで創造性を解き放つ!初心者向けガイド ChatGPTアプリは、文章作成、翻訳、質問応答など、多様なタスクに対応する革新的なAIアシスタントです。創作活動や情報収集にも役立つ、無限の可能性を秘めたツールです。 この記事では、ChatGPTスマホアプリのインストール方法から、音声入力機能やプラグインといったアプリならではの機能、そしてアプリ利用上の注意点まで、初心者にも分かりやすく解説します。プラグインの制限やデバイス間の設定同期についてもしっかりと触れていきま

Chatgpt中国語版:中国語のAIの対話の新しい体験のロックを解除する ChatGptは世界中で人気がありますが、中国語版も提供していることをご存知ですか?この強力なAIツールは、毎日の会話をサポートするだけでなく、プロのコンテンツを処理し、簡素化された伝統的な中国語と互換性があります。中国のユーザーであろうと、中国語を学んでいる友人であろうと、あなたはそれから利益を得ることができます。 この記事では、アカウント設定、中国語の迅速な単語入力、フィルターの使用、さまざまなパッケージの選択を含むChatGpt中国語のバージョンの使用方法を詳細に紹介し、潜在的なリスクと対応戦略を分析します。さらに、ChatGpt中国語版を他の中国のAIツールと比較して、その利点とアプリケーションシナリオをよりよく理解するのに役立ちます。 Openaiの最新のAIインテリジェンス

これらは、生成AIの分野で次の飛躍と考えることができ、ChatGptやその他の大規模なモデルのチャットボットを提供しました。単に質問に答えたり情報を生成したりするのではなく、彼らは私たちに代わって行動を起こすことができます。

ChatGPTを活用した効率的な複数アカウント管理術|ビジネスとプライベートの使い分けも徹底解説! 様々な場面で活用されているChatGPTですが、複数アカウントの管理に頭を悩ませている方もいるのではないでしょうか。この記事では、ChatGPTの複数アカウント作成方法、利用上の注意点、そして安全かつ効率的な運用方法を詳しく解説します。ビジネス利用とプライベート利用の使い分け、OpenAIの利用規約遵守といった重要な点にも触れ、複数アカウントを安全に活用するためのガイドを提供します。 OpenAI


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。
