自己紹介
webアプリの自社開発をしている企業のプログラマーです。バックエンドとフロントエンドの開発をしています。広い分野を学習しなければならないため尖ったスキルを身につけるのが難しいということが事実として存在しています。そこで、まずはアプリケーション開発に必須のデータベースに関するスキルを磨いていこうと思います。学習のアウトプットのために投稿していきます。
投稿内容
主な投稿内容は、学習の中心であるデータベースになりますが、Python、AWSやサーバー、ネットワークなどのインフラの分野もアウトプットとして投稿することがあるかもしれません。
はじめに
今回は、データベースの論理設計の概要について学習したことをまとめていきます。データベースに関する基本的なことも復習として書きます。なお、学習に使用する書籍は「達人に学ぶDB設計徹底指南書」です。
論理設計の概要
論理設計のステップ
・エンティティの抽出
エンティティ(entity) = 実体
現実世界に存在するデータの集合体を表す
例)社員、店舗、会社、部署
これらのデータは物理的実体を伴うものと伴わないものが存在する
例から分かるようにエンティティは物理的実体を伴う必要はない
エンティティをテーブルという物理的単位で格納していく必要がある。そのため、システムにどのようなデータが必要になるかどうかを抽出する。これが、論理設計のエンティティ抽出ステップで行うべきこと。
・エンティティの定義
エンティティの抽出を終えたら、エンティティがどのようなデータを保持するかを決める必要がある。エンティティはデータを属性(attribute)という形で保持する(属性はテーブルの列(colomun)とほぼ同義)。
つまり、エンティティの定義では テーブルがどのような列を持つかを決める 必要がある。
また、エンティティの定義で重要なのは、主キーや外部キーを定義すること。
・正規化
正規化はデータベースで保持するデータの冗長性を排除し、一貫性と効率性を保持するためのデータ形式。
正規化には、以下のような段階がある。
・第1正規化
・第2正規化
・第3正規化
・ボイスーコッド正規化
・第4正規化
・第5正規化
*正規化については別の記事にまとめます。
・ER図の作成
正規化が終わると、基本的にはエンティティの数が増える(正規化は、テーブルを細かく分けていくことでもあるから)。
当たり前のことではあるが、エンティティの数が増えると関係が把握しにくくなる。数十、数百のエンティティを頭の中で理解することは困難であるので、ER図を作成することが重要である。
おわりに
今回は、論理設計の概要についてまとめました。次回は、物理設計の概要についてまとめたいと思います。