🐙
Webエンジニアへの道137日経過 - ポートフォリオアプリDB設計
現在の学習状況
こんにちは、Someです!
まずは現在の学習状況をシェアしていきます。
※右にある数字は終了予定月と()内が完了実績月です。
- html・css 4月(4)
- Javascript 4月(4)
- Python 4月(4)
- Django 5月(5)
- git・github 5月(5)
- Linux 5月(5)
- DB・SQL 6月 (6)
- モダンJavaScript 6月(6)
- 業界研究、企業研究 7月(7)
- ポートフォリオアイデア 7月(7)
- PHP・Laravel基礎学習 7月(8)
- 安全なアプリケーション 8月(8)
- API 8月(8)
- ポートフォリオ作成開始 8月←イマココ
- ポートフォリオ完成 10月
- 転職活動開始 10月
- 転職成功 12月
今週の学び・気付き
今週はきたるるポートフォリオ作成に向けて、「達人から学ぶDB設計徹底指南書」という書籍からデータベース設計を学んでいきました!
以下学んだ内容を簡単にまとめたものになります。
達人から学ぶDB設計徹底指南書
はじめに
データベースを使わないシステムは存在しません。情報はデータと文脈を合成して生まれます。
三層スキーマ
- 外部スキーマ(外部モデル): ユーザーが直接触れるデータの構造
- 概念スキーマ(論理データモデル): システム全体のデータ構造
- 内部スキーマ(物理データモデル): 物理的なストレージ上のデータ構造
概念スキーマがないと変更に対する柔軟性がなくなり、概念スキーマは緩衝材の役割を果たします。
論理設計
- エンティティの抽出: 必要なデータを洗い出す
- エンティティの定義: 属性、キーを定義
- 正規化: システムでの利用をスムーズにする
- ER図の作成: エンティティ間の関係性を視覚化する
物理設計
- テーブル定義: テーブル構造を具体的に定義
- インデックス定義: データの検索を高速化する
- ハードウェアのサイジング: 必要なリソースを算出
- ストレージの冗長構成: RAID構成を決定
- ファイルの物理配置: データファイル、インデックスファイルなどを配置
- データベース単位の冗長構成: レプリケーション
- バックアップ設計: フルバックアップ、差分バックアップ、増分バックアップ
- リカバリ設計: リストア、リカバリの手順
詳細
-
RAID: 複数のディスクを束ねて仮想的に一つのストレージとする技術
- RAID0: ストライピング
- RAID1: ミラーリング
- RAID5: バリティ分散
- RAID10: RAID1+0
-
レプリケーション: 現用系と待機系でデータを同期する技術
- 同期レプリケーション
- 非同期レプリケーション
- バックアップ方式: フルバックアップ、差分バックアップ、増分バックアップ
- リカバリ: バックアップからデータを復元する作業
テーブル
- テーブル: 共通点を持ったレコードの集合
- 主キー: 一つのレコードを一意に特定するキー
- 外部キー: 他のテーブルとの関係を示すキー
- 制約: NOT NULL制約、一意制約、CHECK制約
正規化
- 第一正規形: 一つのセルに一つの値
- 第二正規形: 部分関数従属をなくす
- 第三正規形: 推移的関数従属をなくす
まとめ
正規化の目的は、更新時の不都合を防ぐことです。正規化は従属性を見抜くことで可能になります。
来週からの学習予定
今回学んだDB設計から、作成していくポートフォリオアプリの設計を行なっていきます!
それでは今週はこの辺で!
ありがとうございました!
Discussion