PC初心者でも1から学ぼう

エンジニアの基礎知識を徹底解説

未分類

【エンジニア基礎】データベースの設計とは何か?

データベースの設計って難しいですよね。

正規化とか性能とか色々と考えなくてはならないっものがあり複雑そうですね。

今回はデータベースの設計について説明していきたいと思います。

まずは、最初に、基本的なデータベースの用語がありますので、

覚えていきましょう。

まず、「レコード(record)」です。

レコードとは、リレーショナル・データベースのテーブルの行のことを指します。

次に、「フィールド(field)」です。

フィールドとは、テーブルの各項目(エクセルでいう1つのセル)を指します。

テーブルを分割して整理する正規化

データベースでは、テーブルが出来上がったら、データを読み書きする

アプリケーションを作成すれば、データベースを運用するには十分です。

しかし、実は、ただ単にテーブルにデータを突っ込んだだけでは、問題が生じてしまいます。

それは、同じデータを何度も登録しなければならないということです。

何度も同じデータを登録しなければならなくなると、

ディスク容量が無駄になりますし、ミスが起きますよね。

そこで、この問題を解決するために、

リレーショナル・データベースの設計では、「正規化」という方法があります。

正規化とは、重複するテーブルを複数に分けて、

個々のテーブルを関係付を付けて、データベースを整理することです。

正規化は、重複するテーブルを複数に分けてと書きましたが、

データベース設計では、データベースの内容が重複しないことが重要となります。

 

テーブルを関係付ける主キーと外部キー

テーブルのの関係付けを行う時に、関係付けを行うフィールドが必要になってきます。

この関係付けを行うフィールドを「キー(key)」と呼びます。

そして、各テーブルに、その値が分かればレコードを特定できるようなキーがあります。

このようなキーを「主キー(プライマリーキー)」と呼びます。

主キーには、特徴があります。

  • ユニーク(重複しない)こと
  • NULLでないこと(必ず値が入っていること)

主キーは、他のレコードを特定するための値でなければなりません。

そのため、他の値と重複してはいけません。なぜなら、重複していると他のレコードを特定できないからです。

また、主キーは、必ず値が入っている必要があります。

それは、値が入っていないと他のキーを特定できないからです。

たいていのデータベースのアプリケーションのDBMSは、

主キーの値が同じレコードを登録しようとするとエラーにしてくれます。

これは、DBMSが備える、データを矛盾なく安全に保つ機能の一つです。

テーブルとテーブルを結びつけるには、

主キーに対応づく他のテーブルのキーである「外部キー(foregin key)」を設定する必要があります。

レコードのリレーションシップの形態は、「1対1」「多対多」「1対多」のいずれかになりますが、

多対多となってはいけません。複数のテーブルをたどることが難しくなるからです。

リレーションシップが多対多になってしまう場合は、2つのテーブルの間にもう1つテーブルを追加し、

2つの1対多にわけることができます。

このようなテーブルを「結合テーブル(リンクテーブル)」と呼びます。

DBMSには、「参照整合性」をチェックする機能があります。

これも、データを矛盾なく安全に保つ仕組みの一つです。

参照整合性を保つように設定しておけば、アプリケーションからこのような操作をしたときに、DBMSが操作を拒否してくれます。

もしも、皆さんが作成するアプリケーションから直接データ・ファイルを読み書きしたら、

主キーに同じ値を持つレコードを登録したり、参照整合性などチェックせずにレコードを

削除するような勝手な操作ができてしまうでしょう。

データの検索速度を向上させるインデックス

DBMSの機能の一つとして、テーブルの個々のフィールドに「インデックス(index)」を設定できます。

インデックスは、キーと混同されがちですが、全く異なるものです。

インデックスは、データの検索と並べ替えの速度を向上させる内部的な仕組みにすぎません。

フィールドにインデックスを設定すると、そのフィールドのためのインデックス・テーブルが自動的に作成されます。

インデックス・テーブルは、フィールドの値と、そのフィールドを持つレコードの位置を記録したものです。

インデックス・テーブルは、もとのテーブルに比べて数が少ないので、高速に検索や並べ替えが行えます。

インデックス・テーブルで検索や並べ替え行ってから、もとのテーブルのレコードを取り出します。

インデックスとは「索引」という意味です。

検索が早くなるからといっても、全てのテーブルにインデックスを設定しても逆に検索が遅くなってしまいます。

それは、インデックスを設定すると、テーブルにレコードが登録されるたびにインデックス・テーブルの更新処理が必要になります。

検索と並べ替えの速度が向上する代償として、登録の速度が低下するのです。

 ユーザー・インタフェースの設計

テーブルを分割して正規化し、主キーと外部キーを設定し、

多対多のリレーションシップになっていないことを確認し、

必要に応じて参照整合性とインデックスを設定すれば、データベース設計は完了です。

次のステップとして、データベースを利用するためのアプリケーションの作成に進みます。

データベース設計が完成していれば、

それを操作するためのユーザー・インタフェースを提供する

アプリケーションの設計が簡単にできます。

設計の手順では、データベース設計が先で、ユーザー・インタフェース設計が後になります。

-未分類

Copyright© エンジニアの基礎知識を徹底解説 , 2019 All Rights Reserved Powered by AFFINGER5.