MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

第一正規形(1NF)とは?データベース正規化の基礎を徹底解説


1NF(第一正規形)とは

1NF(First Normal Form:第一正規形)は、DBMSにおける正規化の最初のステップであり、非正規化されたテーブルを正規化するために適用されます。非正規化テーブルには以下のような問題があり、理想的なデータベース設計を実現するためには、これらの問題を回避する必要があります。

非正規化テーブルの問題点

データの冗長性

同じデータ項目を複数回格納することを「データの冗長性」と呼びます。

具体例を見てみましょう。

<Employee>テーブルに、従業員の現住所を保存するフィールドがあるとします。一部の従業員は会社から住居を提供されているため、同じ住所を持っています。その結果、住所情報がデータベース内で繰り返し格納されてしまいます。

表1.1

EmpID
EmpNameEmpAddress
001Amit11, VA Street, New York
002Tom11, VA Street, New York
003David11, VA Street, New York
004Steve13, HG Block, Philadelphia
005Jeff13, HG Block, Philadelphia

この問題を解決するには、従業員の住所を別のテーブルに保存し、<Employee>テーブルから参照できるように設計し直すのが有効です。

更新異常

テーブルの更新時に発生する問題を「更新異常」と呼びます。

具体例を見てみましょう。

表1.2

EmpIDEmpNameEmpAddressEmpDept
001Amit11, VA Street, New YorkA
002Tom11, VA Street, New YorkB
003Tom11, VA Street, New YorkC
004Steve13, HG Block, PhiladelphiaD
005Jeff27, ZR Block, VirginiaE

2つの部署に所属している従業員Tomの住所を更新する必要がある場合、2つの行を同時に更新しなければなりません。もし片方の行だけを更新すると、Tomが2つの異なる住所を持つことになり、データの不整合につながります。

削除異常

例えば、会社がD部門を閉鎖することになった場合を考えてみましょう。該当する行を削除すると、部門情報だけでなく、従業員Steveのデータまで一緒に失われてしまうのです。

挿入異常

まだ存在しないデータに関連する情報を挿入しようとした際に発生する問題です。

正規化を行うことで、上記のすべての問題・異常が解消され、データベース管理者が求める理想的な正規化データベース設計が実現できます。

それでは、第一正規形(1NF)を使ったデータの正規化方法を詳しく見ていきましょう。

なぜ1NFが必要なのか

第一正規形(1NF)は、前述のセクションで示したように、データベースにおけるデータ冗長性の問題や各種異常を取り除くために役立ちます。1NFでは、すべての属性がアトミック(それ以上分割できない)な値を持つ必要があります。アトミックでない場合、そのデータベース設計は不良であると言えます。1NFは正規化プロセスの出発点となる重要なステップです。

したがって、テーブルが正規化された形式であるための最も重要なルールは、「アトミックな値のみを保持すること」です。

以下の例では、DeptRole列以外のすべての列がアトミックな値で構成されています。つまり、DeptRole列は部門A、B、Cにおいて、アトミック値のルールに違反しています。

表1.3

DeptIdDeptNameDeptRole
001AFinance, HR
002BProgramming, Networking
003CManagement, Marketing
004DOperations

それでは、このテーブルを修正して1NFへ変換してみましょう。

DeptIdDeptNameDeptRole
001AFinance
001AHR
002BProgramming
002BNetworking
003CManagement
003CMarketing
004DOperations

これで上記のテーブルは1NFとなり、すべての列がアトミックな値で構成されています。まとめると以下のようになります。

第一正規形(1NF)とは?データベース正規化の基礎を徹底解説

  1. 第3正規形(3NF)とは?条件と変換例をわかりやすく解説

    第3正規形(3NF)とは?データベースの正規化における第三段階が第3正規形(3NF:Third Normal Form)です。テーブルが3NFであるためには、次の2つの条件を満たす必要があります。リレーションが第2正規形(2NF)であること推移的関数従属が存在しないこと推移的関数従属とは、「A → B」「B → C」という依存関係から、間接的に「A → C」が導かれてしまう状態を指します。このような依存関係が残っていると、データの冗長性や更新時の不整合が発生しやすくなります。例:3NFに違反するテーブル次の <MovieListing> テーブルを見てみましょう。Movie_IDL

  2. MySQLのテーブルデータはWindowsのどこに保存される?確認方法をわかりやすく解説

    MySQLテーブルデータの保存場所を確認する方法MySQLで作成したテーブルのデータが、実際にWindows上のどの場所に保存されているのかを知りたいケースはよくあります。そんなときは、システム変数「datadir」を確認することで、データディレクトリの場所を簡単に把握できます。まずは、最もシンプルな方法として「@@datadir」を参照する構文を見てみましょう。select @@datadir;また、SHOW VARIABLESコマンドを使って確認することもできます。その場合の構文は以下の通りです。show variables where Variable_name = datadir;実際