テーブル定義案.html

データベース設計案 (修正版)

データベース設計案 (修正版)

1. `websites` テーブル (修正)

巡回対象となる各ホームページの詳細情報を格納します。`user_id` フィールドが追加され、`users` テーブルへの外部キーとなります。

フィールド名 データ型 制約 説明と必要性
`id` INT PRIMARY KEY, AUTO_INCREMENT ホームページのユニークID。
各ホームページを識別するための主キーとして必須です。
`user_id` INT NOT NULL, FOREIGN KEY REFERENCES `users`(id) このホームページを登録したユーザーのID。
どのユーザーがこのホームページを管理しているかを関連付けるために必要です。
`url` VARCHAR(2048) NOT NULL, UNIQUE 巡回対象のホームページのURL。
どのページを巡回するかを特定するために必須であり、重複を防ぐためにUNIQUE制約を設けます。
`name` VARCHAR(255) NOT NULL ホームページの識別名(例: "公式Webサイト", "ブログ" など)。
ユーザーがホームページを管理画面で区別しやすくするために必要です。
`check_interval_minutes` INT NOT NULL, DEFAULT 60 通常の巡回間隔(分)。初期値は60分(1時間)。
ホームページごとに巡回頻度をカスタマイズできるようにするために必要です。
`retry_interval_minutes` INT NOT NULL, DEFAULT 5 エラー時の再試行間隔(分)。初期値は5分。
エラー発生時に即座に通知せず、一定時間後に再確認するための間隔を設定するために必要です。
`max_retry_attempts` INT NOT NULL, DEFAULT 1 Chatwork通知までの最大再試行回数。
「エラーがあれば5分後にもう一度確認、その時もエラーならチャットワークで連絡」という要件を実現するために、再試行回数を管理できるように必要です。1で設定することで、初回エラー+1回再試行で通知となります。
`is_active` BOOLEAN NOT NULL, DEFAULT TRUE 巡回をアクティブにするかどうか。
一時的に巡回を停止したい場合などに、レコードを削除せずに無効化できるように必要です。
`created_at` DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP レコード作成日時。
データがいつ登録されたかを追跡するために一般的かつ重要です。
`updated_at` DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP レコード最終更新日時。
データがいつ最後に変更されたかを追跡するために一般的かつ重要です。
2. `users` テーブル

Chatwork通知を受け取るユーザー情報を管理します。

フィールド名 データ型 制約 説明と必要性
`id` INT PRIMARY KEY, AUTO_INCREMENT ユーザーのユニークID。
各ユーザーを識別するための主キーとして必須です。
`name` VARCHAR(255) NOT NULL ユーザー名。
通知先ユーザーを識別するために必要です。
`chatwork_api_token` VARCHAR(255) NOT NULL Chatwork APIトークン。
Chatworkへメッセージを送信するために必要な認証情報です。セキュリティのため暗号化を強く推奨します。
`chatwork_room_id` VARCHAR(255) NOT NULL Chatworkの通知先ルームID。
どのチャットルームにメッセージを送るかを指定するために必要です。
`is_active` BOOLEAN NOT NULL, DEFAULT TRUE 通知をアクティブにするかどうか。
一時的に通知を停止したい場合などに使用します。
`created_at` DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP レコード作成日時。
データがいつ登録されたかを追跡するために一般的かつ重要です。
`updated_at` DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP レコード最終更新日時。
データがいつ最後に変更されたかを追跡するために一般的かつ重要です。
3. `website_checks` テーブル

各ホームページの巡回結果履歴を格納します。

フィールド名 データ型 制約 説明と必要性
`id` INT PRIMARY KEY, AUTO_INCREMENT 巡回結果のユニークID。
各巡回結果を識別するための主キーとして必須です。
`website_id` INT NOT NULL `websites` テーブルへの外部キー参照。
どのホームページの巡回結果であるかを特定するために必要です。
`checked_at` DATETIME NOT NULL 巡回実行日時。
巡回がいつ行われたかを記録するために必須です。
`http_status_code` INT NULL HTTPステータスコード (例: 200, 403, 500など)。
巡回結果の成功/失敗やエラーの種類を具体的に示すために必要です。
`error_message` TEXT NULL エラーが発生した場合のメッセージ(例: "Connection timed out" など)。
エラーの詳細を記録し、問題解決の助けとするために必要です。
`is_success` BOOLEAN NOT NULL 巡回が成功したかどうか (True: 成功, False: 失敗)。
巡回の成否を簡潔に判断するために必要です。
`is_chatwork_notified` BOOLEAN NOT NULL, DEFAULT FALSE Chatworkに通知されたかどうか。
同じエラーで重複して通知されるのを防ぐため、また通知履歴を確認するために必要です。
`retry_count` INT NOT NULL, DEFAULT 0 今回の巡回が、前回の失敗からの何回目の再試行であるか。
「エラーがあれば5分後にもう一度確認、その時もエラーならチャットワークで連絡」というロジックを実装するために、再試行回数を追跡するために必要です。
`response_time_ms` INT NULL レスポンス時間(ミリ秒)。
ホームページの応答速度を計測し、パフォーマンス監視の一助とするために必要です。