2025年3月21日 星期五

2. 數據建模 (UML):包含基本 Laravel 資料表以及爬蟲相關資料表的完整資料庫結構

 1. 基本 Laravel 資料表:

  • users 表:
    • 儲存使用者資訊,用於 JWT 身份驗證。
    • 欄位:
      • id (BIGINT UNSIGNED, PRIMARY KEY, AUTO_INCREMENT)
      • name (VARCHAR(255))
      • email (VARCHAR(255), UNIQUE)
      • email_verified_at (TIMESTAMP, NULLABLE)
      • password (VARCHAR(255))
      • remember_token (VARCHAR(100), NULLABLE)
      • created_at (TIMESTAMP, NULLABLE)
      • updated_at (TIMESTAMP, NULLABLE)
  • password_resets 表:
    • 儲存密碼重設請求的資訊。
    • 欄位:
      • email (VARCHAR(255), INDEX)
      • token (VARCHAR(255))
      • created_at (TIMESTAMP, NULLABLE)
  • personal_access_tokens 表:
    • 儲存個人存取權杖(如果使用 Laravel Sanctum)。
    • 欄位:
      • id (BIGINT UNSIGNED, PRIMARY KEY, AUTO_INCREMENT)
      • tokenable_type (VARCHAR(255))
      • tokenable_id (BIGINT UNSIGNED, INDEX)
      • name (VARCHAR(255))
      • token (VARCHAR(64), UNIQUE)
      • abilities (TEXT, NULLABLE)
      • last_used_at (TIMESTAMP, NULLABLE)
      • expires_at (TIMESTAMP, NULLABLE)
      • created_at (TIMESTAMP, NULLABLE)
      • updated_at (TIMESTAMP, NULLABLE)
  • failed_jobs 表:
    • 儲存失敗的隊列任務資訊。
    • 欄位:
      • id (BIGINT UNSIGNED, PRIMARY KEY, AUTO_INCREMENT)
      • uuid (VARCHAR(255), UNIQUE)
      • connection (TEXT)
      • queue (TEXT)
      • payload (TEXT)
      • exception (TEXT)
      • failed_at (TIMESTAMP)
  • jobs 表:
    • 儲存隊列任務資訊。
    • 欄位:
      • id (BIGINT UNSIGNED, PRIMARY KEY, AUTO_INCREMENT)
      • queue (VARCHAR(255))
      • payload (TEXT)
      • attempts (TINYINT UNSIGNED)
      • reserved_at (INT UNSIGNED, NULLABLE)
      • available_at (INT UNSIGNED)
      • created_at (INT UNSIGNED)
  • migrations 表:
    • 儲存資料庫遷移紀錄。
    • 欄位:
      • id (INT UNSIGNED, PRIMARY KEY, AUTO_INCREMENT)
      • migration (VARCHAR(255))
      • batch (INT)

2. 爬蟲相關資料表:

  • crawl_tasks 表:
    • 儲存爬取任務資訊。
    • 欄位:
      • id (BIGINT UNSIGNED, PRIMARY KEY, AUTO_INCREMENT)
      • url (VARCHAR(255))
      • depth (INT)
      • rules (JSON, NULLABLE)
      • status (VARCHAR(255))
      • result (JSON, NULLABLE)
      • created_at (TIMESTAMP, NULLABLE)
      • updated_at (TIMESTAMP, NULLABLE)
  • crawled_pages 表:
    • 儲存已爬取的網頁資訊。
    • 欄位:
      • id (BIGINT UNSIGNED, PRIMARY KEY, AUTO_INCREMENT)
      • crawl_task_id (BIGINT UNSIGNED, INDEX)
      • url (VARCHAR(255))
      • title (VARCHAR(255), NULLABLE)
      • content (LONGTEXT, NULLABLE)
      • http_status (INT, NULLABLE)
      • crawled_at (TIMESTAMP, NULLABLE)
      • created_at (TIMESTAMP, NULLABLE)
      • updated_at (TIMESTAMP, NULLABLE)
  • crawled_images 表:
    • 儲存爬取的圖像資訊。
    • 欄位:
      • id (BIGINT UNSIGNED, PRIMARY KEY, AUTO_INCREMENT)
      • crawled_page_id (BIGINT UNSIGNED, INDEX)
      • url (VARCHAR(255))
      • file_path (VARCHAR(255))
      • file_size (INT)
      • created_at (TIMESTAMP, NULLABLE)
      • updated_at (TIMESTAMP, NULLABLE)
  • crawled_videos 表:
    • 儲存爬取的影片資訊。
    • 欄位:
      • id (BIGINT UNSIGNED, PRIMARY KEY, AUTO_INCREMENT)
      • crawled_page_id (BIGINT UNSIGNED, INDEX)
      • url (VARCHAR(255))
      • file_path (VARCHAR(255))
      • file_size (INT)
      • created_at (TIMESTAMP, NULLABLE)
      • updated_at (TIMESTAMP, NULLABLE)
  • metadata 表:
    • 儲存爬取資源的元數據。
    • 欄位:
      • id (BIGINT UNSIGNED, PRIMARY KEY, AUTO_INCREMENT)
      • crawled_page_id (BIGINT UNSIGNED, INDEX)
      • key (VARCHAR(255))
      • value (TEXT, NULLABLE)
      • created_at (TIMESTAMP, NULLABLE)
      • updated_at (TIMESTAMP, NULLABLE)

3. 資料庫遷移:

  • 使用 Laravel 的資料庫遷移功能,建立上述資料表。

  • 建立遷移檔案:

    Bash
    php artisan make:migration create_crawl_tables
    
  • 在遷移檔案中,定義資料表結構。

  • 執行資料庫遷移:

    Bash
    php artisan migrate
    

4. 注意事項:

  • 根據您的實際需求,可以新增或修改資料表的欄位。
  • 對於大量的爬取數據,可以考慮使用資料庫分區或分表來提高效能。
  • 對於多媒體檔案,使用雲儲存服務,例如 AWS S3,會比使用本地檔案系統有更好的擴展性。

透過這些步驟,您將能夠建立完整的 Laravel 10 爬蟲 API 服務資料庫結構。

沒有留言:

張貼留言