1.論理設計
論理設計は、データベースにどんな情報をどのように格納し、それらの情報がどのように関連しているかを考える作業です。
論理設計の主なステップについて簡単に説明します!
1.エンティティの定義
- エンティティは、データベース内で識別可能な対象や情報の集まりを指します。例えば、ユーザー、商品、注文などがこれにあたります。
- 各エンティティには特定の属性があり、これがカラムに対応します。例えば、ユーザーエンティティなら、 名前、年齢、メアドなどがその属性です。
2.正規化
- 正規化では、データに矛盾がないか、効率的に情報を格納できるかを検討します。
- 通常は、第1正規形、第2正規形、第3正規形などの正規形にデータを整理します。
3.ER図作成
- ER図とは、エンティティとそれらの間の関係を視覚的に表現したものです。エンティティと関連をむずんだり、各エンティティの属性を示すことで、データの構造を理解しやすくします。
2.物理設計
物理設計は、データベースの性能や効率を向上させるために、論理設計で定義されたデータベース構造を実際のデータベース管理システム(DBMS)に適した形に変換するプロセスのことです。
物理設計には以下の主なステップが含まれます。
1. テーブル定義
- 論理設計で作成されたエンティティや関係を元に、実際のデータベース管理システムが理解できる形に変換します。これにはテーブルの物理的なストレージ構造やデータ型、節約の定義などが含まれます。(後でもっと詳しく説明)
2.インデックス設計
- インデックスはデータの検索を高速化するための構造で、物理設計ではどのカラムにどのようなインデックスを設定するかを決定します。適切なインデックスの設計はデータベースの検索性能に直結します。 本の目次のようなもの
3.データの格納方法の決定
- データベースがデータを物理的にどのように格納するかを決定します。これにはデータの圧縮、分割、パーティショニングなど含まれます。
4.セキュリティ対策
- データベースにアクセスする権限や暗号化の手法など、セキュリティに関する側面も物理設計の一環です。
物理設計は論理設計を連携し、データベースが効率的に動作し、迅速なデータアクセスが可能になるようにします。論理設計がデータの構造を考えるのに対し、物理設計はそのデータの実際の保存や処理方法を最適化することを目的としています。
テーブル定義
テーブル定義が、データベースの各テーブルにどんな種類の情報をどのように格納するかを指定する「設計図」のようなものです。
1.カラムの定義:
- テーブル内のカラムには、特定の情報や属性が格納されます。例えば、ユーザーテーブルなら「ユーザー名」や「年齢」が各カラムになります。
- カラムごとにデータ型(日付、整数、文字列など)を指定します。これは、そのカラムにどの種類のデータが格納されるかを示します。
2.主キーの指定:
- 主キーは、テーブル内の各レコードを一意識別するためのカラムの集合です。主キーはデーターベース内での検索や関連付けに使用されます。
- 通常、主キーはユニークで、かつNULL値を取らないように定義されています。
3.外部キーの指定:
- 外部キーは、他のテーブルとの関連を示すためのカラムです。外部キーは、関連する他のテーブルの主キーと対応します。
- 外部キーを使用することで、異なるテーブル間でデータをリンクさせたり、参照生合成を確保したりできます。(一貫性)
4.その他の制約の指定
- カラムに対して、データの範囲や一意性、NULL許容などの制約を指定する。これは、データの生合成を保つためです。
インデックス
インデックスは、データベース内のデータを高速に検索するための仕組みです。
以下は、インデックスの主な特徴と役割についての説明です。
1.検索の高速化:
- インデックスはデータベース内の特定のカラムに対して、その値とそのデータが存在する場所を対応づけるものです。
2.効率的な検索操作:
- インデックスがない場合、データベースは全体を順番に検索して目的のデータを見つけます。つまりインデックスがあった方が早いよね。
3.ソートや範囲のサポート:
- インデックスはデータを特定の順序に整列させたり、ある範囲のデータを一括して取り出すのにも役立ちます。
4.データベースの制約や位置異性の確保:
- 例えば、特定のカラムに一意性の制約(ユニーク制約)を設けた場合、それに対応するインデックスが作成されます。
しかし、インデックスを使用することでデータの検索性能が向上する一方で、データの挿入や更新、削除の際にはインデックスのメンテナンスが必要となります。 そのため、適切に処理されたインデックスを使いつつ、データベースのパフォーマンスを維持することが重要です。