mysqlとか触ってたけどそもそもデータベースて何?
そんなの知ってるわ!!!て方は飛ばしてください。
データベースとは、ある特定の条件に当てはまるデータを複数集めて、後から使いやすい形に整理した情報のことを表します。
コンピューター以外の身近な所にもデータベースと呼ばれるものもあります。 例としてわかりやすくあげると、学生時代に使っていた出席簿や電話帳等もデータベースと言えます。
僕たちが開発しているシステムやWebサービス全てにおいて共通しているのが、データベース を持っていると言うことです。
このデータベースにある情報を使うことによって世の中のサービスが運用できてるですね!!
実際にDBを設計してみよう
今回は論理設計について学びます
論理設計の手順一覧
- エンティティの抽出
- エンティティの定義
- 正規化
- ER図の作成
1. エンティティの抽出
いきなり横文字で難しそうですがエンティティとはある共通項を持ったデータの集合体のこと言います。
エンティティ = ある共通項を持ったデータの集合体 で覚えときましょう。
エンティティ(データ)を抽出してシステムにどのようなデータ(エンティティ)が必要なのかを洗い出します。これがよく聞く要件定義にてやつですね。
例としてはこんな感じです
- (物理的なもの) 顧客、社員、店舗、飛行機、など
- (概念的なもの) 税金、売り上げ、購買履歴、など
ここで大事なポイントがあります
洗い出したエンティティ(データ)は開発するシステムの要件を満たせるか
これを重要視しましょう!!
2. エンティティの定義
このステップでは抽出したエンティティがどのようなデータを持っているかを定義します。
データベースにおいてエンティティは皆さんお馴染みのテーブルという単位で表現されます。
つまり、エンティティの定義とはテーブルの定義を行うことと同じ意味です。
ここで大事なポイントがあります
- キー(特定のデータを取り出すための列の組み合わせのこと)をなににするか
- どのような属性(atribute)を持たせるか
これを重要視しましょう!!
3. 正規化
**正規化とは簡単に言うとテーブルを分解し、データの冗長性をなくすことです。**分解の粒度によって呼び方が変わり第1正規形から第5正規形まで存在します。
1~5までありますが第3正規形まで正規化すれば十分です。
第1正規形
ひとつのセルに1つの値が存在しているテーブルのことをいいます。
第2正規形
主キーに対して列が従属しているテーブルのことをいいます。
第3正規形
主キーに対して全ての属性が従属であり、かつ推移的関数従属(後述)も存在していないテーブルのことをいいます。
4. ER図の作成
ER図はエンティティ(テーブル)同士の関係を表現する図のことをいいます。
このER図の作成で上記のステップで作成されたテーブル同士の関係を見抜き、紐づける作業を行います。
ER図の作成方法としては、主キーに着目してあげます。 他のテーブルの列にそのキーが含まれているかをチェックします。存在している場合、テーブル間に関係があるので線で結びます。
ここで大事なポイントがあります
あるテーブルの主キーが他のテーブルに列として存在している場合、それらのテーブルは関連性が線で結ばれているか。
1:1という関係のテーブルが存在しないか
多:多という関係のテーブルが存在しないか
子に対して親が複数存在していないか
以上が手順になります!
ざっくりとした流れの説明をしましたがご参考になれば嬉しいです。
参考にさせていただいた記事
4ステップで作成する、DB論理設計の手順とチェックポイントまとめ
DB論理設計のノウハウ
基礎から分かるデータベース入門