🐙

Webエンジニアへの道137日経過 - ポートフォリオアプリDB設計

2024/09/08に公開

現在の学習状況

こんにちは、Someです!
まずは現在の学習状況をシェアしていきます。
※右にある数字は終了予定月と()内が完了実績月です。

  1. html・css 4月(4)
  2. Javascript 4月(4)
  3. Python 4月(4)
  4. Django 5月(5)
  5. git・github 5月(5)
  6. Linux 5月(5)
  7. DB・SQL 6月 (6)
  8. モダンJavaScript 6月(6)
  9. 業界研究、企業研究 7月(7)
  10. ポートフォリオアイデア 7月(7)
  11. PHP・Laravel基礎学習 7月(8)
  12. 安全なアプリケーション 8月(8)
  13. API 8月(8)
  14. ポートフォリオ作成開始 8月←イマココ
  15. ポートフォリオ完成 10月
  16. 転職活動開始 10月
  17. 転職成功 12月

今週の学び・気付き

今週はきたるるポートフォリオ作成に向けて、「達人から学ぶDB設計徹底指南書」という書籍からデータベース設計を学んでいきました!
以下学んだ内容を簡単にまとめたものになります。

達人から学ぶDB設計徹底指南書

はじめに

データベースを使わないシステムは存在しません。情報はデータと文脈を合成して生まれます。

三層スキーマ

  • 外部スキーマ(外部モデル): ユーザーが直接触れるデータの構造
  • 概念スキーマ(論理データモデル): システム全体のデータ構造
  • 内部スキーマ(物理データモデル): 物理的なストレージ上のデータ構造

概念スキーマがないと変更に対する柔軟性がなくなり、概念スキーマは緩衝材の役割を果たします。

論理設計

  • エンティティの抽出: 必要なデータを洗い出す
  • エンティティの定義: 属性、キーを定義
  • 正規化: システムでの利用をスムーズにする
  • ER図の作成: エンティティ間の関係性を視覚化する

物理設計

  • テーブル定義: テーブル構造を具体的に定義
  • インデックス定義: データの検索を高速化する
  • ハードウェアのサイジング: 必要なリソースを算出
  • ストレージの冗長構成: RAID構成を決定
  • ファイルの物理配置: データファイル、インデックスファイルなどを配置
  • データベース単位の冗長構成: レプリケーション
  • バックアップ設計: フルバックアップ、差分バックアップ、増分バックアップ
  • リカバリ設計: リストア、リカバリの手順

詳細

  • RAID: 複数のディスクを束ねて仮想的に一つのストレージとする技術
    • RAID0: ストライピング
    • RAID1: ミラーリング
    • RAID5: バリティ分散
    • RAID10: RAID1+0
  • レプリケーション: 現用系と待機系でデータを同期する技術
    • 同期レプリケーション
    • 非同期レプリケーション
  • バックアップ方式: フルバックアップ、差分バックアップ、増分バックアップ
  • リカバリ: バックアップからデータを復元する作業

テーブル

  • テーブル: 共通点を持ったレコードの集合
  • 主キー: 一つのレコードを一意に特定するキー
  • 外部キー: 他のテーブルとの関係を示すキー
  • 制約: NOT NULL制約、一意制約、CHECK制約

正規化

  • 第一正規形: 一つのセルに一つの値
  • 第二正規形: 部分関数従属をなくす
  • 第三正規形: 推移的関数従属をなくす

まとめ

正規化の目的は、更新時の不都合を防ぐことです。正規化は従属性を見抜くことで可能になります。

来週からの学習予定

今回学んだDB設計から、作成していくポートフォリオアプリの設計を行なっていきます!

それでは今週はこの辺で!
ありがとうございました!

今週使用した学習教材

1.達人から学ぶDB設計徹底指南書(Kindle)

Discussion