<aside> 🍔
</aside>
其他技術
Docker
PostgreSQL
Prisma Schema
任意門
上課範例城市
上課範例程式
2025寒假專班課程完整程式碼 - https://github.com/Chen11111112/Flask_E-commerce.git
練習解答
🐬 MySQL・🌶️ Flask・🚀 Django・🍃 SpringBoot・🐘 PHP・⚡️ FastAPI・ 🟩 Express
<aside> 📌
以下是本書七個主題的簡介:每個技術是什麼、和同類技術差在哪裡、專案大概長什麼樣子,以及官方資源。
</aside>
MySQL 是一套關聯式資料庫管理系統(RDBMS),1995 年發布,現在由 Oracle 維護,有開源的社群版(Community Edition)可以免費使用。「關聯式」的意思是:資料會整理成一張張像 Excel 的資料表(Table),每一列(Row)是一筆資料、每一欄(Column)是一種屬性;表跟表之間可以透過主鍵(Primary Key)和外鍵(Foreign Key)建立關係,例如「訂單」表會記錄這筆訂單是哪一位「會員」下的。
我們用 SQL(Structured Query Language)這個語言跟資料庫溝通:建立資料表、新增、查詢、修改、刪除資料,都是送一段 SQL 給 MySQL 伺服器執行。
而 MySQL 的預設儲存引擎 InnoDB 支援 Transaction 邏輯控制機制,在這種機制下一連串的操作要嘛全部成功、要嘛全部取消,像轉帳這種「扣款和入帳必須同時成立」的情境就是靠它保護。
不管用 Flask、Django、SpringBoot、PHP 還是 FastAPI,後端最後都要把資料存進資料庫,而 SQL 的觀念在各種關聯式資料庫之間大多通用,所以本書建議先打好 MySQL 的基礎,之後要改學習其他資料庫上手速度也會快很多。
<aside> 🐬
在後端專案裡,通常會把建立資料表的 SQL 檔放在專案裡的資料夾(例如 db 或 migrations),讓每個人都能建出一樣的資料表;連線用的帳號密碼則放在環境變數。
</aside>
資料庫大致分成兩類:關聯式(SQL)資料庫,例如 MySQL、PostgreSQL、SQLite;以及非關聯式(NoSQL)資料庫,例如用「文件」來存資料的 MongoDB。
| 項目 | 🐬 MySQL | PostgreSQL | SQLite | MongoDB |
|---|---|---|---|---|
| 類型 | 關聯式,獨立的資料庫伺服器 | 關聯式,獨立的資料庫伺服器 | 關聯式,整個資料庫就是一個檔案,不用開伺服器 | 文件型(NoSQL),資料存成類似 JSON 的文件 |
| 資料結構 | 先定義好資料表的欄位 | 先定義好資料表的欄位,支援更多進階型別(如 JSONB、陣列) | 先定義好資料表的欄位,型別規則比較寬鬆 | 不用事先定義欄位,同一個集合裡的文件可以長得不一樣 |
| 強項 | 普及、教學資源多,主機商與雲端幾乎都支援,WordPress 等常見系統的預設選擇 | 功能完整、嚴謹,擴充套件豐富(如地理資料的 PostGIS) | 零設定、輕巧,適合內嵌在 App 或小工具裡 | 結構彈性大,資料格式常變動時很好調整 |
| 要注意 | 部分進階功能比 PostgreSQL 少 | 設定與調校的門檻稍高 | 大量同時寫入時效能有限,不適合多人同時使用的大型網站 | 跨集合的關聯查詢不如關聯式資料庫直覺 |