第一正規形(1NF)とは?データベース正規化の基礎を徹底解説
1NF(第一正規形)とは
1NF(First Normal Form:第一正規形)は、DBMSにおける正規化の最初のステップであり、非正規化されたテーブルを正規化するために適用されます。非正規化テーブルには以下のような問題があり、理想的なデータベース設計を実現するためには、これらの問題を回避する必要があります。
非正規化テーブルの問題点
データの冗長性
同じデータ項目を複数回格納することを「データの冗長性」と呼びます。
具体例を見てみましょう。
<Employee>テーブルに、従業員の現住所を保存するフィールドがあるとします。一部の従業員は会社から住居を提供されているため、同じ住所を持っています。その結果、住所情報がデータベース内で繰り返し格納されてしまいます。
表1.1
| EmpID | EmpName | EmpAddress |
| 001 | Amit | 11, VA Street, New York |
| 002 | Tom | 11, VA Street, New York |
| 003 | David | 11, VA Street, New York |
| 004 | Steve | 13, HG Block, Philadelphia |
| 005 | Jeff | 13, HG Block, Philadelphia |
この問題を解決するには、従業員の住所を別のテーブルに保存し、<Employee>テーブルから参照できるように設計し直すのが有効です。
更新異常
テーブルの更新時に発生する問題を「更新異常」と呼びます。
具体例を見てみましょう。
表1.2
| EmpID | EmpName | EmpAddress | EmpDept |
| 001 | Amit | 11, VA Street, New York | A |
| 002 | Tom | 11, VA Street, New York | B |
| 003 | Tom | 11, VA Street, New York | C |
| 004 | Steve | 13, HG Block, Philadelphia | D |
| 005 | Jeff | 27, ZR Block, Virginia | E |
2つの部署に所属している従業員Tomの住所を更新する必要がある場合、2つの行を同時に更新しなければなりません。もし片方の行だけを更新すると、Tomが2つの異なる住所を持つことになり、データの不整合につながります。
削除異常
例えば、会社がD部門を閉鎖することになった場合を考えてみましょう。該当する行を削除すると、部門情報だけでなく、従業員Steveのデータまで一緒に失われてしまうのです。
挿入異常
まだ存在しないデータに関連する情報を挿入しようとした際に発生する問題です。
正規化を行うことで、上記のすべての問題・異常が解消され、データベース管理者が求める理想的な正規化データベース設計が実現できます。
それでは、第一正規形(1NF)を使ったデータの正規化方法を詳しく見ていきましょう。
なぜ1NFが必要なのか
第一正規形(1NF)は、前述のセクションで示したように、データベースにおけるデータ冗長性の問題や各種異常を取り除くために役立ちます。1NFでは、すべての属性がアトミック(それ以上分割できない)な値を持つ必要があります。アトミックでない場合、そのデータベース設計は不良であると言えます。1NFは正規化プロセスの出発点となる重要なステップです。
したがって、テーブルが正規化された形式であるための最も重要なルールは、「アトミックな値のみを保持すること」です。
例
以下の例では、DeptRole列以外のすべての列がアトミックな値で構成されています。つまり、DeptRole列は部門A、B、Cにおいて、アトミック値のルールに違反しています。
表1.3
| DeptId | DeptName | DeptRole |
| 001 | A | Finance, HR |
| 002 | B | Programming, Networking |
| 003 | C | Management, Marketing |
| 004 | D | Operations |
それでは、このテーブルを修正して1NFへ変換してみましょう。
| DeptId | DeptName | DeptRole |
| 001 | A | Finance |
| 001 | A | HR |
| 002 | B | Programming |
| 002 | B | Networking |
| 003 | C | Management |
| 003 | C | Marketing |
| 004 | D | Operations |
これで上記のテーブルは1NFとなり、すべての列がアトミックな値で構成されています。まとめると以下のようになります。

-
第3正規形(3NF)とは?条件と変換例をわかりやすく解説
第3正規形(3NF)とは?データベースの正規化における第三段階が第3正規形(3NF:Third Normal Form)です。テーブルが3NFであるためには、次の2つの条件を満たす必要があります。リレーションが第2正規形(2NF)であること推移的関数従属が存在しないこと推移的関数従属とは、「A → B」「B → C」という依存関係から、間接的に「A → C」が導かれてしまう状態を指します。このような依存関係が残っていると、データの冗長性や更新時の不整合が発生しやすくなります。例:3NFに違反するテーブル次の <MovieListing> テーブルを見てみましょう。Movie_IDL
-
MySQLのテーブルデータはWindowsのどこに保存される?確認方法をわかりやすく解説
MySQLテーブルデータの保存場所を確認する方法MySQLで作成したテーブルのデータが、実際にWindows上のどの場所に保存されているのかを知りたいケースはよくあります。そんなときは、システム変数「datadir」を確認することで、データディレクトリの場所を簡単に把握できます。まずは、最もシンプルな方法として「@@datadir」を参照する構文を見てみましょう。select @@datadir;また、SHOW VARIABLESコマンドを使って確認することもできます。その場合の構文は以下の通りです。show variables where Variable_name = datadir;実際