読者です 読者をやめる 読者になる 読者になる

感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

【プログラミング 106.5時間】データベース設計とは何か?

<スポンサーリンク>

研修をやってわかったことは、自分にはデータベース設計の経験が不足しているということだ。
既存のシステムの保守をやっていると、自分で設計する機会があまり無い。
また、データベース設計はシステムの肝となる部分なので、若手のうちはあまり任せてもらえない可能性も高い。

そんな経験を補うために、まずは基礎をしっかり固めて、自分で業務外の時間でデータベース設計を経験したいと考えた。
まずは基礎をちゃんと固めることから、という意味も込めて「達人に学ぶDB設計徹底指南書」という本を購入した。

達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ

達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ

一度書籍で体系的に学んでから、自分で考えてDB設計をやってみたい。
業務外の学習のいいところは、じっくり基礎から学べることだ。現場ではすぐに成果を出すことが求められるので、悠長に本を読むことはなかなかできない。
休みの時間を最大限活用して、経験値を積みたい。


【メモ】
素晴らしいメッセージがあったので、メモがてら貼っておく
東大の式辞集より。

東京大学総長の佐々木毅先生の言葉。
「何はともあれ、皆さんが一刻も早く「すごい」人間や「かなわない」人間に出会うことを私は切望しています」
http://www.u-tokyo.ac.jp/gen01/b_message16_02_j.html

このメッセージ、忘れないようにしよう。東大じゃないけども。

まずは学んだことのまとめ。
★★
データベース設計とは大きく3つに分類できる。
1.論理設計
2.物理設計
3.実装設計

システムは私たちの赤褐を二度と戻らない形で変えてしまう力を持っている。
そうしたシステムが持つたった1つの共通点は、「データ」を取り扱っているということ。

Googleは世界中のWebサイトを巡回するプログラムを作り、各サイトの一時的なコピー(キャッシュ)を自社のサーバに保存して、それをもとにページランキングを算出している。

そうしたデータを保持して、いつでも利用可能な状態にしておくためのシステムがデータベースである。

データとは、ある形式(フォーマット)に揃えられた事実のことである

情報はデータと文脈を合成して生まれる


システム開発のススメ方は大きく分けて2つある。
1.ウォーターフォールモデル
要件定義→設計→開発→テスト、というように1つずつ工程を踏んで段階的にシステムを作っていく。
基本的に工程が逆戻りすることはない。

ウォーターフォールモデルは大規模なシステム開発において採用されることが多いが、手戻りがきかないということは、各工程をきっちり仕上げる精密さが要求されるということでもある。

プロトタイピングモデルとは、最初に小さな試作品を作って顧客やユーザーに見せてフィードバックをもらい、また改良して・・・を繰り返していく。
要件定義の取りこぼしや意思疎通の齟齬を防げるというメリットがある一方で何度も同じ工程を繰り返す必要があり、変更を繰り返すうちに発散して収集がつかなくなるというリスクもある。
このモデルを応用したのが「アジャイル」と呼ばれるモデルである。

DOAPOA
DOAとは、「最初にデータありき」として、プログラムよりも前にデータの設計から始めることをいう。

POAとは、プロセス中心アプローチのことで、プログラム→データというようにシステムを作り始める方法論のこと。
POAでは処理ごとにデータが分散して管理が大変になってしまう。

スキーマ
スキーマとは、データベースのデータ構造やフォーマットという意味で使う。
スキーマは3つのレベルに分けられる。
1.外部スキーマ(外部モデル):ビューの世界
2.概念スキーマ(論理データモデル):テーブルの世界
3.内部スキーマ(物理データモデル):ファイルの世界

外部スキーマとは、ユーザーからみたデータベースの姿
概念スキーマとは、開発者からみたデータベースの姿
内部スキーマとは、DBMSからみたデータベースの姿

外部・概念・内部の3層の構造になっているのは、変更に対する柔軟性を確保するためである。
システム開発や運用という仕事は変更対応の連続であるため。

システム開発の世界でいう「論理」とは、「物理層の制約にとらわれない」という意味。
概念スキーマを定義する設計を論理設計と呼ぶ。

■論理設計で行うこと
1.エンティティの抽出
2.エンティティの定義
3.正規化
4.ER図の作成

エンティティとは、現実世界に存在するデータの集合体を指す言葉である。
「顧客」「社員」「注文履歴」「会社」など。

エンティティはデータを「属性」という形で保持する。
これは二次元表における「列」と同義である。
各表がどのような「列」を持つか定義するのが「エンティティの定義」という作業である。

正規化とは、エンティティについて、システムでの利用がスムーズに行えるように整理する作業のこと。

ER図とは、Entity-Relational-Diagramの略で、エンティティ同士の関係を表現する図のことである。