設計 #3
Lunatic1998 さんが約1年前に更新
### DB設計 #### 目的 * アプリケーションを開発する上で、データベースにあらゆるデータを格納するが、最適な形でデータを保存することが開発効率とパフォーマンスに影響する。 #### 概要 * 概念設計 * データベースの目的・要件を決定する * 必要な情報を整理してエンティティを抽出する * ER図( Entity Relationship Diagram)を作成する * 論理設計 * 正規化をおこなう * 物理設計 * データ型を決定 * 設計を確認・調整する * データベース内のテーブルとカラム、カラムの型やサイズまで設計する。 * パフォーマンス(INDEX(索引)については、本チケットでは考慮しない。 #### DB設計に必要な四大要素 * エンティティ:データベース設計の対象業務において、管理すべき情報のこと(テーブル名に直結) データベース設計の対象業務において、管理すべき情報のことをエンティティ(テーブル名に直結) * 属性:エンティティに従属する項目のこと(カラム名に直結) * リレーション:結び付きのあるエンティティ同士を関連させるものを関係 * 多重度:関連のあるエンティティ同士の相対的な位置付け(一対多とか) #### DB設計の観点 * 構築するシステムの要件・仕様を理解しているか * 仕様書から見えにくい箇所の想像ができるか * 正規化がなされているか * 将来性が考えられているか エンティティに従属する項目のことを属性(カラム名に直結) #### テーブルの洗い出し - 手順書テーブル - ユーザーテーブル - 手順書とユーザーを紐づけるテーブル - 手順ブロックテーブル #### カラムの洗い出し ##### user_table - 手順書を扱うユーザーを管理するテーブル | id(uuid) | email(string) | subscriber(string) | | ---- | ---- | ---- | ---- | ---- | ---- | | wrrg35g | aaa@gmail.com | aaaking | ##### session_table - ユーザーログインのセッションを管理するテーブル #### operation_table - 手順書を管理するテーブル | id(uuid) | title(string) | date(datetime) | block(uuid) | tag(list[string]) | status(tf true=close) | user() | | ---- | ---- | ---- | ---- | ---- | ---- | | wf23n2 | DB移行 | 2007/01/12 |2erfrge | mysql | true | | g3kmge | v1.0リリース | 2007/01/13 | ef43gm | release | false | #### block_id | id | title | command | operation_id | status | | ---- | ---- | ---- | ---- | ---- | | 2erfrge | バックアップ | ~~~~~ | 1 | true | | ef43gm | 切り戻し | ~~~~ | 1 | false |