データベース設計の流れ

f:id:ryoutaku_jo:20190126214559j:plain

【結論】
・ある程度の規模のアプリケーションを開発する場合、
 データベース設計の難易度は格段に上がる

・高度なデータベース設計に対応できる様に、
 データベース設計の基礎を押さえる必要がある


【目次】


【本題】

データベース設計について学び直す

スクールで明日から始まるチーム開発では、
メルカリのクローンサイトの作成が課されます。

ノーヒントかつメンターからのヘルプの借りられない為、
独力で解決していく必要がありますが、
その中で、大きな課題の一つと考えているのが、
「データベース設計」です。

今までは、中間テーブル1つの、計5つ程度の
データベースで実装可能なアプリしか製作した事が無いため、
規模が大きくなった際、上手くデータベース設計が出来るかどうか
曖昧な状況です。

なので、データベース設計の流れについて、
改めて学び直す事にしました。

エンティティの抽出

エンティティとは、データの集合体を表す言葉で、
具体的には「ユーザー」「商品」「注文履歴」といったものです。
まずはシステムでどういうデータを扱いたいのかを洗い出します。

ここで抽出したエンティティは、
後で「テーブル」という単位で設計に組み込みます。

エンティティの定義

各エンティティが、どの様なデータを保持するか決めます。
具体的には、「ユーザー」というエンティティには、
「名前」「メールアドレス」「パスワード」というデータを持たせるという定義です。

このデータは「属性」とも呼ばれ、
テーブルの「カラム」として組み込まれます。

正規化

テーブルを分解し、システムでの利用をスムーズに行える様にします。
正規化は、一般的に下記の三段階で行われます。

・第一正規化(スカラ値の原則)
テーブルのセル(列と行が重なるマス一つ)には、
一つの値しか含まれない様にする。

・第二正規化(部分関数従属の解消)
主キーの一部の列に対して、従属する列がある場合、
その関係を部分関数従属と言います。

※主キー・・・必ず一行のレコードを特定できる列の組み合わせ

それを無くし、完全関数従属のみでテーブルを作ります。

・第三正規化(推移的関数従属の解消)
テーブル内に存在する段階的な従属関係を解消させる。

ER図の作成

エンティティ(=テーブル)同士の関係を表現する図を書きます。
正規化によってテーブルが分割された事により、
何の手立ても無くエンティティの関係を理解するのは
非常に困難な為、図に表します。

総括

正規化については、それだけで記事が二つくらい
出来そうなボリュームなので、別途まとめたいと思います。
データベース設計はやはり奥が深い。

《今日の学習進捗》

前職の上司から仕事のヘルプを依頼されていた為、
そちらの稼働で、本日はあまり勉強進まず。

学習開始からの期間 :49日
今日までの合計時間:475h
今日までに到達すべき目標時間:447h
目標との解離:28h
「10,000時間」まで、

残り・・・「9525時間!」