資料庫體驗營 #10 結語
資料庫練習網站、加碼影音錄影的時間軸、完課獎勵證書、未來規畫
新增日期:2025/12/30 17:30 (UTC+8)
更新日期:2025/12/30 18:02 (UTC+8)

各種資料庫工具服務介紹
db-fiddle 線上測試資料庫服務

DB Fiddle - SQL Database Playground
- Schema SQL:建立資料表、加入資料的指令 CREATE TABLE, INSERT, UPDATE 等等
- Query SQL:查詢指令
- Results:執行結果
加碼影音錄影
資料庫 QA
00:00:00 調查學生有參加的課程
1 體驗營、2 培訓營、3 後端專題
00:02:05 問題一:如何在 Docker 上用 PostgreSQL 創建資料表
在 docket-compose.yml 建立 postgres service
00:08:15 問題二:PostgreSQL 和 MySQL 的差異
- PostgreSQL:功能完備,適合高併發、複雜查詢、JSON / 地理空間等需求。
- MySQL:部署簡單、讀取量大時效能突出,適合一般 Web / 輕量應用。
選型可視資料特性、工作負載模式與團隊經驗而定,兩者都十分成熟且有強大社群支持。
00:24:43 問題三:六角學院後台運作的資料庫設計
分享開發心路歷程
- 早期六角學院是在 Udemy 上架課程,助教人數不夠,因此開始衡量是否要自己做系統,幫助十幾位助教更快速的回覆同學問題
- 在 Udemy 販售課程的收益只能進到 PayPal,之後只能進玉山銀行,美金轉台幣的手續費很高
- 從 2016 ~ 2019 年,沒有從 Udemy 領出半毛錢
- 在 2018 年使用 Node.js + AngularJS 開發獨立的金流系統,就是註冊課程時用到的付費系統,沒有串接學習系統,學生先用台灣金流付款、開發票,隔天早上發 email 提供 Udemy 課程開通免費 coupon 連結
- 在 2019 年 Udemy 停止提供課程開通免費 coupon,所以後來就放棄 Udemy 了,在 2019 ~ 202 年,把課程放到 Teachable 租用的開課平台
- 使用 Udemy 和 Teachable 提供的 public API 把學生的問題存在資料庫,串接到助教批改平台,助教回覆的答案更新到資料庫,再透過 public API 回傳答案到 Udemy 和 Teachable
介紹助教批改平台,程式勇者村網站的問與答系統
早期是用 PHP + Heroku,後來轉型成 AWS + Node.js + Grafana 監控系統錯誤狀況
為什麼不要把金流、官網、課程、任務、社群整合在一起?因為沒錢
一個系統的營運時間越長,改版成功率越低
先做 MVP 最小可行性產品 > 營業額養活自己 > 慢慢變得更好
01:10:30 中場休息
01:15:50 雲端成本和效益怎麼做管控?
觀察雲端租用主機的 CPU 負荷和 RAM 用量,30% 健康、50% 還可以、80% 警告,也可以觀察 API 請求次數、預估用戶人數成長趨勢
01:35:00 問題四:許願 mysql & mongodb & 要如何將資料庫內容匯出並於另一台電腦資料庫匯入
一、MySQL
- 匯出 (Export) 使用 mysqldump 指令:
mysqldump -u [使用者名稱] -p [資料庫名稱] > [匯出檔名].sql
- 匯入(Import)
mysql -u [使用者名稱] -p [資料庫名稱] < [匯出檔名].sql
二、MongoDB
- 匯出 (Export)
mongodump --db [資料庫名稱] --out ./mongodb_backup/
- 匯入(Import)
mongorestore --db [要匯入的資料庫名稱] ./mongodb_backup/[資料庫名稱]/
01:35:25 問題五:本地端如何存取 Docker 內的檔案資料,拿來用在開新容器時可以還原
假設有個跑一陣子的容器 my_container,想把容器內的某些檔案或整個資料夾抓到本地端做備份:
docker cp my_container:/app/data/home/user/backup_data
my_container:/app/data:容器裡的路徑
/home/user/backup_data:本地要放置的路徑
備註:docker cp 只會在執行複製指令的當下抓取容器內資料,並不會持續同步。
01:38:00 問題六:許願任務二第五題延伸題:計算王小明剩餘時數跟 DBeaver 怎麼用,跟後端實際是怎麼用 DBeaver,Docker 這些工具
可以直接去看資料表、思考如何撰寫 SQL 以達成需求
職缺工作內容比較
- SA:收集整理需求、分析系統邏輯、找出潛在問題、產出需求規格書 (會員系統、流程)
- SD:系統設計、系統架構草圖 (資料表結構、功能模組)、要用哪些語言、系統配備
- RD:軟體工程師、執行、CRUD、權限管理
- SRE:管理雲端服務、維護系統、確保系統穩定運作
01:59:50 問題七:wireframe 時會怎麼拆解對應功能的資料表
建議從 user 資料表開始延伸,思考用戶的需求和行為
02:07:20 未來趨勢
之後可能會有系統架構相關課程,正在找合適的講師
證書
須完成任務一和任務二才可獲得證書

結語
回顧這段學習歷程,課程中豐富的教學資源,包含文件、簡報、影片等等,並非單純講解 SQL 語法的用途,還有透過生活中常見的情境範例,例如規劃學生、班級、導師的資料結構,我能夠理解如何利用各種 SQL 語法解決真實世界中的數據問題。特別值得一題的是,練習題目不只貼近現實,老師更補充了許多在報名課程前未必知道的細節,就是練習題目與現實開發的落差。未來實際開發專案時,我將能夠針對資料表結構進行調整與優化,預先考慮一個將要長期營運下去的系統該保存哪些資料、如何保存資料。
計畫趕不上變化,2025 年 Teamie 核心團隊成員因各自事務繁忙,專案進度暫時進入停滯期。
2025 年 2 月,在應徵公司的過程中,我被要求實作一個「待辦清單(Todo List)」專案。起初,這只是為了符合面試要求的任務,需求文件和 API 均由公司端提供。然而到了 3 月,我突然產生了一個想法:「公司提供的 API 未必會永遠存在,不如趁這個機會將這套系統的後端自行實作出來」。於是我依照需求文件規劃資料表,連接 Neon Serverless PostgreSQL,應用課程所學撰寫與執行 TypeScript + SQL 腳本,新增資料表和初始資料,再用 Next.js Route Handler 實作 RESTful CRUD API,替換掉公司提供的 API,最後製作自己的 API 文件頁面,展示所有可呼叫的路徑。
2025 年 8 月,原本個人網站的資料是靜態 JSON,和待辦清單一樣自行實作後端並串接,雖然只有 RESTful Read API,但是資料結構比較複雜,我實作了「專案」與「技能標籤」之間的多對多關聯架構,透過中繼表來處理一個專案對應多個技能的數據邏輯。不僅應用了我在課程中學到的正規化思維,也讓個人網站的技術展示具備了更強的資料擴展性。
2025 年底,我為 2026 年設定了新的目標:培養進階前後端開發與整合能力。我計畫採取由小到大、循序漸進的策略來實作:
- 個人網站:改用獨立實作的後端服務,並將渲染模式從 SSR (Server-Side Rendering) 轉為 SG (Static Generation)。這將大幅加快載入速度、提升 SEO 表現。
- 待辦清單:改編為全新主題並實作獨立後端服務,完整涵蓋 CRUD API 與具備資安意識的帳號註冊登入功能。
- Teamie:實作前端與後端服務,將其從商業簡報轉化為真實運作的系統。
剛好於 2025 年底得知有新的課程,2026 後端工程師體驗營。這門課程涵蓋了環境架設、RESTful API 開發、JWT 與 Cookie 資安觀念、單元測試、以及多人協作流程(issue 與卡片管理),這將是我補齊後端開發能力的大好機會,已完成報名。
完成新課程之後,我會參考新課程提供的範例開發環境框架,根據需求替換工具,例如評估更適合高併發或易於維護的 ORM 工具與框架,再實作上述三個專案。
此外,在與 Gemini 討論這系列文章的編排過程中,我得知幾個未來深耕的方向:
- Neon PostgreSQL Tutorial:進階 SQL 語法學習。
- 正規化實戰 (1NF/2NF/3NF):深化課程中的基礎觀念,確保資料庫設計的嚴謹性與彈性。
- 多對多關係與中繼表應用:這將是 Teamie 媒合功能(人才與專案的多對多關聯)的核心技術。
此系列文章記錄了我從 2024 年底至今的成長。2026 年 1 月,我將會在參加新課程的同時撰寫新的文章,記錄更多知識、經驗和心得。