備忘録

アプリのDB設計

既に記事更新を諦めそうになっていますが、頑張ってみます。

前置きはさておき、今回のアプリ開発を行う上で重要なDB設計をしていきます。

今回のアプリは、俗に言う勤怠管理アプリなのですが、建設業に特化した物を開発予定です。

まぁ、文章を起こすのが苦手なので、既に詰まってきました。

1、DBモデル

今回使用する予定は11モデルになります。

【基本構成】
┌────────────┐
│ Worker │ ← 作業員区分(自社/下請)
└────┬───────┘


┌────────────┐ ┌────────────┐
│ WorkRecord │──────▶│ Site │ ← 工事区分(請負/常用)
└────┬───────┘ └────┬───────┘
│ │
▼ ▼
WorkRecordVehicle SitePhase
│ │
▼ ▼
Vehicle Progress(進捗)

【オプション機能】
┌────────────┐ ┌────────────┐
│ Tool │ │ Material │
└────┬────────┘ └────┬────────┘
▼ ▼
ToolUsage(使用履歴) MaterialUsage(消費履歴)

【その他】
┌────────────────────┐
│ VehicleReservation(予約) │
└────────────────────┘

ざっとこんな感じ。

モデル概要一覧

1. Worker(作業員)

  • name: 氏名
  • worker_type: 自社/下請け
  • affiliation, phone_number, is_active

2. Site(現場)

  • name, location, client_name
  • construction_type: 請負/常用
  • notes

3. WorkRecord(作業記録)

  • worker, site, date
  • phase: FK(SitePhase)
  • content, work_time, overtime, weekend_work, notes

4. SitePhase(現場工程)

  • site, phase_name, target_area_m2, expected_workdays, order

5. Progress(進捗)

  • site, date, progress_rate, phase_name, notes

6. Vehicle(作業車)

  • name, license_plate, vehicle_type, company, is_active

7. WorkRecordVehicle(車両使用記録)

  • work_record, vehicle, distance_km, toll_used, toll_fee

8. VehicleReservation(予約)

  • vehicle, reserved_by, start_time, end_time, purpose, status

9. MaintenanceRecord(整備履歴)

  • vehicle, date, item, mileage, notes

10. Tool(工具)

  • name, location, owner, status

11. Material(資材)

  • name, unit, stock, price_per_unit, notes

これで進めて行こうかなと思います。

追記

✅ 最終モデル一覧(英語ベース・合計16モデル)

分類モデル名説明
基本Worker作業員(自社/下請)
Site現場(位置:GPS/請負・常用)
WorkRecord作業記録(工程・時間・備考など)
SitePhase工程(面積・順番・所要人工)
Progress現場の進捗(%・工程名)
車両管理Vehicle作業車
WorkRecordVehicle作業日に使用した車両の記録(走行距離・有料道路)
VehicleReservation作業車の使用予約(日時・目的)
MaintenanceRecord整備履歴(オイル交換など)
資材・工具Material資材(数量・単位・価格)
Tool工具(所有者・状態・保管場所)
オプションWeatherData天候データ(天気・気温・降水量)
Attendance勤怠(出勤/遅刻/欠勤)
Attachment画像・ファイル添付(写真など)
NotificationLog通知履歴(自動アラート)
CostRecordコスト集計(人件費・資材費・車両費)

自分用のメモ

-備忘録

PLAY NOW

© 2025 Snap Life Powered by AFFINGER5