身為使用 PostgreSQL 的開發者,為應用程式設計資料庫綱要(schema)是最重要的工作之一。要做出穩固的設計,必須理解綱要之後會如何被使用,以及其中牽涉的取捨。

給我看你的流程圖而隱藏你的資料表,我仍會一頭霧水;給我看你的資料表,我通常就不再需要流程圖——它們已不言自明。

—— 佛瑞德・布魯克斯(Fred Brooks)

  • 綱要的選擇決定哪些業務情境容易解決:取捨選錯了,某些 SQL 查詢會變得極難撰寫,甚至無法在單一查詢內以可接受的效能完成。
  • 如同應用程式碼設計,資料庫模型應為它所服務的日常業務而設計。如艾倫・凱(Alan Kay)所言:簡單的事要簡單,複雜的事要可能。好的綱要讓所有簡單業務情境都是相當簡單的 SQL,同時仍能支援報表、詐欺偵測或會計特例等進階需求。
  • 本書把資料建模放在較後面,正是因為檢驗資料庫模型的方式,是在 psql 提示符下針對真實業務情境撰寫 SQL 查詢。學完 PostgreSQL 的基礎、標準與進階功能後,再深入資料庫建模才順理成章。