3
1

論理設計と物理設計

Last updated at Posted at 2023-11-12

どうも、ぴよぴよエンジニアのwatabeです。

今回は、DB初心者向けに、DB設計の導入を詰め込んであげようと思います。

物理設計と論理設計の違い

簡単に、ざっくり違いのイメージをお伝えすると、

論理設計は、データベースのテーブルを定義すること(図面などに)
物理設計は、テーブルをDBMS上に作成すること

のような感じ

作りたいアプリケーションがあったときに、そのアプリケーションではどんなデータをどんなデータ型で扱い、それぞれのデータの関係性はどうなっているのか

これを整理してから、実際にDBを構築していく

なので、流れは、論理設計→物理設計になる

論理設計の流れ

1. エンティティを定義する

エンティティとは、テーブルにあたる概念のこと
DBにおいて、ひとまとまりにしておきたいデータの集合といったイメージ

2. 正規化する

エンティティを定義したということは、テーブル設計が終わっているので、そのテーブル達を正規化します。

正規化 = 一定のルールに基づいて、データを整理すること

そうすることで、無駄なSQL文を書くことがなくなります。

3. ER図作成

エンティティ同士の関係を資格的にわかりやすく表した図

がER図です。

先ほどの1,2でエンティティのイメージが頭の中にできていると思います。

それを、実際に、図に書くということです。

手書きでも、plantUMLのようなソフトウェア(無料)を使ってもOKです。

実際に、ER図がどんなものかググって見てみてください

物理設計

1. テーブル定義

ターミナルから行ったり、GUIソフトを使ったり、さまざまなやり方があるが、

テーブル定義とは、

論理設計通りに、DBMS上に、テーブルを構築すること

そうすることで、実際にデータを入れて運用できる状態になる。

!!わーーい!!

ということになる。

2. インデックス設計

最後に、インデックスについて説明して締めようと思うぜ?いいか?

インデックスとは、テーブル設計の1つのテクニックだ。

インデックスを設定することで、
いや、インデックスを適したカラムにうまく設定することで、クエリを早くすることができる
よく、高速クエリとか聞くだろう?
インデックスをうまく設定してあげれば、クエリを高速にできるぞ

そんなテクニックだ。

例えば、

CREATE INDEX idx ON employees (birth_date);

このように、書くと

employees

というテーブルの
birth_date
というカラムに、
idx
という名のインデックスを設定できる

インデックス設定のベストプラクティス

インデックスのベストプラクティスについても少し触れる

  • 区画度の高いカラムにインデックスを設定すると良い
  • 複数の条件でクエリが実行される機会が多いものは、結合インデックスを使うと良い

これが、ベターなインデックスの使い方だ

以上、ありがとうございました。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1