Categories: DB概論

正規化をなぜするのかメリットとデメリットを説明します

正規化とは?
データベースのテーブル設計ルールです。
データの持ち方を定義します。

メリット
データを登録/更新/削除した時のトラブルが少なくなります。

デメリット
テーブルの数が多くなります。
一般の人には、どこに何のデータがあるかわかりにくくなります。

ここからは
「正規化する目的と意味」
について詳しく説明します。

すぐに正規化の手順を知りたい方は、データベースの正規化の手順をわかりやすく解説を参照してください。

BI技術者必見!! データベース概論

詳細説明

正規化は簡単に言うと何をするの?

データを整理した形で持ちます。

正規化は、
同じデータはを2重に持たない
という考えを元にしてます。

ミニマリストの家族と考えてください。
自分専用のバスタオルを持ってたら、個人持ちをやめて家族で共有します。

共有できるものはすべて共有します
そのおかげで家の中の物は少なくなり、すっきりして管理しやすくなります。

正規化はどこで使うの?

RDBで使います。
RDBは日本語では「関係データベース管理システム」といいます。

一般的にデータベースと呼ぶとRDBを意味しています。
他のデータベースの種類にNoSQLがあります。

正規化はRDBで使う設計ルールです。

主なRDBMS製品

・Oracle
・Microsoft SQL Server
・MySQL
・PostgreSQL
特徴
・複雑な関連を持つデータを扱える
・データ更新時のトラブルに強い
用途
・業務系のシステム

主なNoSQL製品

・MongoDB
特徴:
・大量のデータを素早く検索できる
・柔軟な形式でデータを持てる
用途
・ログデータ

正規化を覚えると何の役立つの?

業務系のシステムではRDBを必ず使います。
システムを作る上で必須ともいえる知識です。

テーブルを作成する時に正規化の規則にそって作らないといけません。
またSQLを使ってデータを取り出す時に、正規化の知識があると何データがどこのテーブルに保存されているか感覚的にわかるようになります。

正規化のメリット

データの登録/更新/削除時にトラブルが発生しにくくなります。

先ほどのミニマリストの家族の例です。

家のドライヤーに欠陥があってリコールが出ました。
共有しているので1つの交換で終わりました。

共有してない家族はどうでしょうか?
お母さんのドライヤーを交換しましたが、お父さんも持っていて発火してしまいました。
娘もドライヤーをもっているかもしれませんがわかりません。

このようなトラブルを少なくできると考えてください。

正規化の副産物として、誰が設計してもほぼ同じになるというメリットがあります。
例えばこの注文書には何のテーブルが必要でしょうか?

主なテーブルは
 ・注文書ヘッダ
 ・注文書明細
 ・業者マスタ
 ・商品マスタ
と推測できます。
注文書と聞いただけで想像がつくのは、正規化を使ってデータベースの設計をしているからです。

正規化を知っていれば、初めて見るデータベースでも構成が予想できます
これは勉強する上で大きなメリットです。

正規化のデメリット

デメリットとして
・専門家以外にはわかりにくくなる
・データ参照時のパフォーマンスが悪くなる
というのがあげられます。

Excelでデータをもらう時に、1つの表にまとまっていたら使いやすいです。

正規化すると1つの表が複数個に分割されます。
複数個のExcelを渡されて、
「このExcelから好きなデータを組み合わせて使って」
と言われてもたいへんです。

参照する場合は正規化しない方がわかりやすいです。

正規化はどのようにするの?

下記の手順にそって作業していくと正規化できます。

第一正規化の手順
列の項目の繰り返しを探し、行方向に変換する
行の項目の繰り返しを探し、表に分割する

第二正規化の手順
主キーを探す
主キーの項目に注目し、関係関数従属する項目を探す

第三正規化の手順
主キー項目以外で、関係関数従属する項目を探す

次の章で詳しい正規化の手順を説明します。

BI技術者必見!! データベース概論

Katahira

Recent Posts

トランザクションテーブルの特徴を知ろう

この記事で解決できる疑問 トラ…

3年 ago

マスタテーブルの設計で注意すべき3点を紹介

この記事で解決できる疑問 マス…

3年 ago

Power BI道場 コンテンツ紹介

ここでは筆者が提供しているPo…

3年 ago

Power BI道場 ヒストグラムの作成。知っていれば簡単!!

この記事で解決できる疑問 ヒス…

3年 ago
Close Bitnami banner
Bitnami