データベース設計 入門 ワークショップ 研修コースに参加してみた
今回参加した研修コースは データベース設計ワークショップ です。
データベース設計というと人によって指しているフェーズが異なりますが、今回のコースは概念設計をテーマとしてER図を書きます。
ということでワークショップなので、実際に ER図 を書きます。
これが不思議なもので、普段見ているER図をみると書ける気がするのですが、実際ゼロから自分で書くと思った以上に、とても大変なことに気付きます。
このワークショップでは、この “見る” のと “自分がやる” の違いに加えて、個人演習->グループ演習を行う形式だったので、他の人の設計を参考にできる、という点で、とても身になるものでした。
では、どんな内容だったのか、レポートします!!
もくじ
コース情報
想定している受講者 | 1 対多の ER図 が描ける、正規化を理解している |
---|---|
受講目標 | データベース設計ができる |
講師紹介
講師は「参加してみた」レポートではひさびさ登場の 岩木 慎一さん です。
大型汎用機の時代から現場開発経験があり、今でも技術が好きでアップデートを忘れないベテラン講師 (15 年!)
サーバ/ネットワーク関連でのご登壇が多いのですが、今回はデータベースです。
岩木さんが新卒入社して、はじめて入ったプロジェクトが RDBMS を日本ではじめて使うもので、設計が出来てなくて大変だったそうです。(新人でいきなり)
ふと疑問に思ったことが、今や RDBMS のない業務システムは考えられないのですが、それ以前はどのようなDBMSがあって、設計していたのでしょう。
ググればええやん、と思ってググると階層型の DBMS があったそうです。
今日やること
講師紹介とともに今日のコースの流れをご説明いただきました。
- 午前中に講義して午後からワークショップ
- ワークショップはDVDレンタル店の業務を実際に個人で設計する
- 個人の成果物を共有してグループで設計する
- グループごとに発表して知見を共有
データベース設計の手順
まずはデータベース設計全体のお話です。
- 概念設計 (データベース設計) -> 論理設計 -> 物理設計 -> 運用設計
- 概念設計では実装を考えず、あくまで業務で使われるデータを洗い出し、最初のER図を作る
- 論理設計では洗い出されたデータをもとに全ての属性を付加する
- (場合によっては RDB で再現できないモデルを再現できる形に直す)
- 物理設計では、ER図 をもとに RDBMS で実装する
- どの RDBMS を使うのか
- どのようにデーブルの属性やリレーションを実装するのか
- キャパシティはどれぐらい必要なのか
- などなど
- 運用設計では、バックアップなどをどうするか考える
今回のワークショップではこの中の “概念設計” を扱います。
なお、概念設計でモレが多すぎると、後の工程に影響が出てしまうと補足がありました。
概念設計のポイント
ここからは先に挙げた概念設計で、それぞれどんなことをやるのか解説いただきました。
- 漏れなく洗い出す
- データの重複をなくす
- 矛盾していないか整合性を確認する
- 正規化が必要
- 正規化のステップ
- 第1正規化から第3正規化まで
- 第4以降は RDBMS で表現できないのでよい
正規化のステップ
正規化前の例
- このままでは問題になること
- 例えばオレンジジュースという商品を追加しようにも買われないと追加できない
- コーヒーの単価を変えると過去の注文も変わる
- レコードを削除すると、例えば紅茶という商品が消えてしまう
第1正規化
- 繰り返し出てくるデータに注目する
第2正規化
- 複合キーに注目し、複合キーの一部が決まれば決まってしまうものを見つける
- 複合キー=注文番号+商品番号
- 商品番号が決まれば商品名と単価が決まる
第3正規化
- 主キー以外に注目し、ある項目が決まれば決まるものに注目する
- 顧客番号が決まれば顧客名、住所が決まる
正規化はこれでおしまい。これでデータの安全性・拡張性は高まっています。
ただしテーブルが増えているので、パフォーマンスは落ちることを忘れずに。
論理設計、物理設計する中でパフォーマンス低下が著しければ、正規化を崩すこともあります、とのことでした。
エンティティ
エンティティ (テーブル) の洗い出しにあたって、どこに注目するとやりやすいか、というお話です。
イベント系は一般的に更新が多いです。
多対多の分解
そうやって抽出したエンティティのうち、多対多になっている結合は中間テーブルを入れて、1:1 or 1:多 にします。
属性
続いて属性 (カラム) を見つけます。
仕入れ商品や納入商品などのように、名称は違っても同じものを指しているケースがあるので、注意が必要とのことでした。
また概念設計の段階では、顧客コードなど主キーとなる id 属性はエンドユーザーにあまり見せないほうが良いとのアドバイスでした。(エンドユーザーはそれで混乱しがち)
たしかに、見せなくて良いものは見せないほうがよいですね。
ここまで概念設計のひと通りの講義が終わりました。
今日の課題
今日の題材となるシステムの仕様です。
このレポートでは出していませんが、貸出/返却、仕入れ、予約だけでなく、従業員の給与や売上レポートなどの業務を対象とします。
ER図をアウトプットすうる演習!
講義の通り、設計を進めます。
- エンティティの洗い出し
- 属性
- リレーション
- 主キーを入れる
それぞれのステップごとに個人で行い、グループで共有・相談することを繰り返します。
すべてのステップを終え、ER図 が完成です!
最後に岩木さんから、アルゴリズムなどと同様に、普段の生活の中で、例えばレシートなどから設計を考えるなど慣れることです、とアドバイスいただき、このコースは修了しました。
これは以前の ER図を書いてみよう のときにも講師の冨原さんがおっしゃっていましたね。(さすが、一致します)
まとめ
このコースでは概念設計の講義をもとに、DVDレンタル店の業務を ER図 に作成しました。
ゼロからER図を書くことは、普段の開発では経験しにくく、また設計には正解がないので、他の受講者とディスカッションできるのは、とてもメリットが大きいように見受けられました。
これからデータベース設計にはじめて参加する、もしくはアプリケーションの設計そのものにはじめて参加する、というかたにはとてもオススメです!
label SE カレッジの無料見学、資料請求などお問い合わせはこちらから!!
label SEカレッジを詳しく知りたいという方はこちらから !!
IT専門の定額制研修 月額28,000円 ~/ 1社 で IT研修 制度を導入できます。
年間 670 講座をほぼ毎日開催中!!
SEプラスにしかないコンテンツや、研修サービスの運営情報を発信しています。