プロジェクト

全般

プロフィール

設計 #3

Lunatic1998 さんが約1年前に更新

### DB設計 

 #### 目的 
 * アプリケーションを開発する上で、データベースにあらゆるデータを格納するが、最適な形でデータを保存することが開発効率とパフォーマンスに影響する。 

 #### 概要 
 * 概念設計 
  * データベースの目的・要件を決定する 
  * 必要な情報を整理してエンティティを抽出する 
  * ER図( Entity Relationship Diagram)を作成する 
 * 論理設計 
  * 正規化をおこなう 
 * 物理設計 
  * データ型を決定 
  * 設計を確認・調整する 

 #### DB設計に必要な四大要素 
 * エンティティ:データベース設計の対象業務において、管理すべき情報のこと(テーブル名に直結) 
 * 属性:エンティティに従属する項目のこと(カラム名に直結) 
 * リレーション:結び付きのあるエンティティ同士を関連させるものを関係 
 * 多重度:関連のあるエンティティ同士の相対的な位置付け(一対多とか) 

 #### DB設計の観点 
 * 構築するシステムの要件・仕様を理解しているか 
 * 仕様書から見えにくい箇所の想像ができるか 
 * 正規化がなされているか 
 * 将来性が考えられているか 

 #### テーブルの洗い出し 

 - 手順書テーブル 
 - ユーザーテーブル 
  - id 
  - メールアドレス 
  - 名前 
 - セッションテーブル 
  - user_id 
  - 期限日 
  - 作成日 
  - トークン 
 - 手順書とユーザーを紐づけるテーブル 
 - 手順ブロックテーブル 

 #### カラムの洗い出し 

 ##### user_table 

 - 手順書を扱うユーザーを管理するテーブル 

 | id(uuid) | email(string) | subscriber(string) |  
 | ---- | ---- | ---- | ---- | ---- | ---- | 
 | wrrg35g | aaa@gmail.com | aaaking | 

 ##### session_table 

 - ユーザーログインのセッションを管理するテーブル 

 | token | id(uuid) | expired | issued |  
 | ---- | ---- | ---- | ---- | ---- | ---- | 
 | cssvvwegoookqke| wrrg35g | 2023/12/01 | 2023/08/01 | 

 ##### operation_table 

 - 手順書を管理するテーブル 

 | id(uuid) | title(string) | date(datetime) | block(uuid) | tag(list[string]) | status(tf true=close) | user(uuid) | 
 | ---- | ---- | ---- | ---- | ---- | ---- | ---- | 
 | wf23n2 | DB移行 | 2007/01/12 |2erfrge | mysql | true | wrrg35g | 
 | g3kmge | v1.0リリース | 2007/01/13 | ef43gm | release | false | wrrg35g | 

 ##### block_id 

 - 手順書内のコマンド群を管理するテーブル 

 | id | title | command | operation_id | status | 
 | ---- | ---- | ---- | ---- | ---- | 
 | 2erfrge | バックアップ | ~~~~~ | 1 | true | 
 | ef43gm | 切り戻し | ~~~~ |    1 | false | 

 #### 参考 
 * https://qiita.com/ryota_i/items/294281b57cc9783bf2c1

戻る