楽々ERDレッスン
『楽々ERDレッスン』(翔泳社)を読みました!
データベース設計の本です📖
目次
1.使用書籍
2.DB設計総論
2-1. 正規化
DB設計において、One Fact in One Place というのが要点になります。
簡単にいうと、重複を排除して、1つのデータの置き場所を1箇所に整理するような感じです。
これを実現するために正規化という手法があります。
2-2. 正規化の手順(例)
商品の伝票を例にした正規化の手順の例です。
- 項目と値を全て列挙
- 繰り返し部分の切り出し
- 従属性の追加
- 冗長性の排除
例えばはじめに項目を伝票番号、日付、顧客名、商品名1、単価1、数量1、金額1、合計金額
と列挙し、値を全て書き出します。
次に商品名1、商品名2、…
など、繰り返すものを切り出します。
従属性の追加とは、商品ごとに単価が決まっている場合、商品名と単価をくっつけることです。
冗長性の排除とは、金額、合計金額は自明であるため削除するといったことです。
また、レコードの中身とは関係なくレコードの存在を表現するために、IDを定義することがあります。
- IDの割り付け
- ERDで表現
伝票ID、顧客ID、商品IDを定義し、ERD(Entity Relationship Diagram)という図で表現するという流れですが、詳しくは今後勉強です🙂
2-3. キー
キーとは、膨大なデータの中からあるデータを特定するための識別子です。
キーの定義の善し悪しでデータベース設計のクオリティが大きく左右されるそうです🤨
一般的には以下のようなものがあります。
キー | 役割 |
---|---|
主キー (primary key) |
・候補キーの中から何らかの意味的に選択された、インスタンスを特定可能な識別子 |
ユニークキー | ・エンティティ内のインスタンスをそれぞれに特定可能な識別子 ・実装上はユニークインデックス |
候補キー | ・エンティティ(箱)内のインスタンスをそれぞれに特定可能な識別子の「すべて」 ・実装上はインデックス |
外部キー (foreign key) |
・エンティティをまたがってのインスタンス同士の関係 ・参照整合性制約 |
3.DB設計の手順
DB設計の手順は以下のとおりです。
- 大まかにブロック分けを行う(業務単位か部門単位)
- それぞれのブロックごとにイベント系を洗い出す
- イベント系に対する正規化を行って、リソース系を洗い出す
- リソース系に対する分類の洗い出しを行って、リソース系の正規化を行う
- ブロック間でリソース系の統合を行い、さらに正規化を行う
- 導出系の整理をして、最終的な正規化を行う
4.感想など
この本とってもわかりやすいです。
最低限SQLの基礎を知っている方向けの本でしたが、語彙が豊富で表現が面白く、知的で、小説を読んでいるようでした!(わたしの語彙力が残念で申し訳ありません)
頭の良い人にやさしく教えてもらっている気分になれるのでおすすめです💪笑