在關聯式資料庫出現之前,查詢意味著導航:使用者必須指定存取路徑、索引與逐筆記錄的程序,而且每個系統各有自己的語言。1970 年,任職於 IBM 研究院的 Edgar Codd 發表了《A Relational Model of Data for Large Shared Data Banks》,主張建立一套以資料表為基礎的模型,並以資料獨立性為目標。

IBM 在關聯式基礎上打造了 SQL,到了 1980 年代中期,這門語言已累積足夠的動能得以標準化:ANSI X3.135-1986《Database Language SQL》。1987 年 3 月,美國國家標準局將其採納為 FIPS PUB 127,並聲明其目的在於促進資料庫定義與資料庫應用程式在不同安裝環境之間的可攜性。

宣告式設計正是重點所在:應用程式只說明想要什麼資料,由資料庫決定如何取得。這樣的分離讓 SQL 得以橫跨各家廠商而存續,從大型主機到嵌入式裝置皆然,並使它成為每個資料庫系統都必須支援的唯一查詢語言。

宣告你想要什麼,讓系統決定怎麼做

宣告式查詢讓應用程式不再依賴單一廠商的儲存細節。

單一的 ANSI 標準為採購方提供了共同的採購語言。

政府的採用(FIPS 127)迫使可攜性成為公部門的需求。

能夠存續的語言會把困難的工作移到平台上:宣告式查詢讓使用者能自由更換資料庫,而標準化則把可攜性變成採購要求。

SQL 成為通用的資料庫語言:ISO/IEC 9075 持續演進它,每個主要資料庫引擎都實作某種方言,而它所體現的關聯式模型則推動資料庫產業數十年。後來的 NoSQL 系統以它為對照來定義自身,這反而更確認了它作為預設選項的地位。

追溯依據

參考來源

  1. A Relational Model of Data for Large Shared Data Banks (E.F. Codd, CACM 13(6), 1970) Communications of the ACM / University of Pennsylvania · seas.upenn.edu
  2. FIPS PUB 127: Database Language SQL (adopting ANSI X3.135-1986) US National Bureau of Standards (NIST) · nvlpubs.nist.gov