從資料庫的起源談談Excel資料表(表格)的功能與應用

各位知道資料庫主要是以資料表(Table)的方式儲存數據嗎?Excel中其實也有類似的功能,那就是資料表(Table,目前繁體中文翻譯為表格)。

Excel資料表功能是每一位Excel使用者必學的功能之一,資料表功能的優點包含:具有結構化、易於參照及自動填滿公式等,利於用戶進行資料儲存、計算、比對或製作動態圖表;進階Excel用戶還可將資料表與Power Query及Power Pivot功能結合應用,製作資料模型。

本篇文章將會從資料庫的起源介紹做為開場,逐步帶入Excel資料表的功能及應用,最後再以「Excel是否適合做為資料庫」的開放式問題進行收尾。

資料庫及SQL歷史簡介

資料庫(Database)是什麼呢?簡單來說就是以某種形式儲存一系列關聯性的資訊,以電話簿為例,就是儲存了居住於某區域裡居民的聯絡資訊(姓名、地址與電話等)的資料庫;資料庫儲存資料的形式從電腦時代前的紙本、磁帶,演進到電腦時代後的電子檔案。

依資料庫系統發展順序,主要包含了從1968年的階層式資料庫系統(Hierarchical database systems)、1969年的網絡資料庫系統(Network database systems)、1970年的關聯式資料庫管理系統(Relational database management systems)、1985年的物件導向式資料庫系統(Object-oriented database systems),到NoSQL資料庫系統。

關聯式資料庫(Relational database)發展之後成為了主流系統(持續至今),而SQL資料庫語言也伴隨著關聯式資料庫的發展而誕生。(以下將針對關聯式資料庫及SQL語言的起源做簡單介紹)
PS Excel Power Pivot資料模型亦利用關聯式資料庫的原理,Power Query編輯器亦與SQL資料庫語言相關。

於Excel中Power Pivot等同於資料模型(Data Model)

於西元1970年英國電腦科學家Dr. Edgar Frank Codd於IBM的研究室發表了一篇影響後世深遠的論文—"A Relational Model of Data for Large Shared Data Banks",其論述了:

資料(Data)是可以用一系列的資料表(Table)來呈現。

此關聯式模型(Relational Model)的論點成為了後來關聯式資料庫(Relational Database)及關聯式資料庫管理系統(Relational Database Management System,簡稱RDBMS)發展的基礎。

參考文獻:Alan Beaulieu's Learning SQL, Third Edition (O'Reilly 2020)

關聯式資料庫的特性包含:

每一個資料表(Table)都具備1欄ID(獨一無二,不會重複)以做為識別每一資料列(Row)所用,此ID即稱為主鍵(Primary key),而主鍵外的其他欄位(Column)資訊則是為了來完整地描述此資料列。

例如上圖中的Customer資料表具備cust_id、Account資料表具備account_id;另各位可以看到Account資料表中亦具備cust_id欄位,目的是為了利用此cust_id與Customer資料表建立關聯性(例如當想要從Account資料表取得Customer資料表的客戶姓名,可以將兩個資料表進行連接(Join)。

此種具備了其他資料表主鍵的欄位稱為外鍵(Foreign key)。

在Dr. Codd發表了的關聯式模型(Relational Model)論點後,他緊接著發表了一種用來處理關聯式資料表(Relational Tables)的語言:DSL/Alpha,IBM隨後立即組成團隊進行建立DSL/Alpha語言的原型,創造了SQUARE語言,並再經改善成為了SEQUEL語言,最後終於再簡稱為大家耳熟能詳的資料庫語言:SQL。

另外補充,因僅依靠SQL是無法撰寫出複雜的應用程式,故相關資料庫廠商有開發出將SQL與程式語言(Programming language)結合在一起的語言,例如Oracle的PL/SQL語言、MySQL的語言及Microsoft的Transact-SQL語言等等。

Excel資料表功能介紹與應用

Excel資料表(Table)的功能是於Office 2003版本後釋出,資料表功能的目的如同資料庫的資料表般,係利於使用者將具關聯性的資料儲存在一起,進行一致性地資料管理、計算、數值類型設定,及再結合既有Excel的公式及範圍參照等功能,進行廣泛地運用。

小編認為只要有儲存資料的目的,都應設定為資料表才好管理,惟小編在業界觀察下來,使用率還偏低,大部分的人還是以自由化最高的儲存格來儲存資料。不知各位有沒有這樣的經驗,若於Excel中的資料沒有妥善管理,資料東一塊、西一塊,公式參照來參照去,到最後自己也不知道自己的檔案該如何操作了。

以下將以上圖Dr. Codd的銀行資料範例來說明Excel中資料表的相關功能。

1.插入Excel資料表及設定名稱

Excel在插入資料表前,需先將鼠標點選在欲插入資料表的資料範圍裡,之後插入資料表有兩個方式,第一種為於Tab Insert -> Table 進行設定(如下動圖),第二種為快捷鍵Ctrl + T,兩種方式點選後皆會跳出建立資料表視窗,視窗內有個檢核方塊(Checkbox)向我們確認此資料範圍是否包含表頭(Headers),完成確認後點選OK,即完成資料表插入。

20221212_G1

完成插入資料表後,各位不要忘了替資料表設定名稱,以利之後進行資料欄位參照(Reference)時讓人清楚易懂,設定資料表名稱方式為先將鼠標點選於資料表內任一儲存格,此時Tab Table Design會被激活,點選Tab Table Design後,於資料表名稱(Table Name)裡進行修改名稱。(如下動圖)

20221212_G2

設定好名稱後,試著於旁邊儲存格輸入公式進行參照,於公式欄輸入等於=,再以滑鼠點選C4儲存格,各位可以看到公式自動變成=Customer[@lname],公式讀起來是不是較儲存格參照公式易讀許多。(如下圖)

20221212_P5

接著小編依照上述步驟將4個資料皆設定為資料表,完成後如下圖。

20221212_P4

2.Excel資料表參照及自動填滿公式

在說明Excel資料表參照前,先跟各位介紹資料表的一個特性,那就是當我們在資料表最右邊欄位的旁邊一欄(Column)或最下方一列的下面一列(Row)輸入數值,Excel資料表會自動將我們輸入數值的欄或列範圍納入到資料表內。(如下動圖)

20221212_G3

以下將於剛剛Account資料表新增加的欄位(字串相連)中,示範如何設定資料表參照公式。

此範例我們要設定的公式為=product_cd & cust_id,意即兩個id欄位字串的連結,設定方式為:先於公式欄輸入等於=,再以滑鼠直接點取product_cd及cust_id欄位(如下動圖),各位可以看到公式欄中會出現@符號=[@[product_cd]]&[@[cust_id]],且按下Enter後,公式會自動填滿到整個欄位

20221212_G4

@符號係為資料表欄位參照的符號,代表著資料表會將我們輸入的公式套入到此欄位每一列中,很重要的一個觀念是:

設定參照公式時,滑鼠要點選同一列的欄位,@符號才會出現,不然資料表會改以儲存格參照的方式去設定公式,例如變成=[@[product_cd]] & G5。(如下動圖)

20221212_G5

它的原理其實跟上述介紹的關聯式資料庫特性有關,幫大家再複習一次:

每一個資料表(Table)都具備1欄ID(獨一無二,不會重複)以做為識別每一資料列(Row)所用,此ID即稱為主鍵(Primary key),而主鍵外的其他欄位(Column)資訊則是為了來完整地描述此資料列

由上述綠色字句看出,資料庫資料表係以列方向來進行一串關聯性資料的儲存,於Excel資料表也是同樣的道理,故要在同一個資料列設定公式時才會出現@符號。

PS 另外也有一些場合是不能以同一個資料列來設定公式的,例如於工廠裡生產數據資料庫中,會有累積量的計算欄位,需要以欄的方向來設定公式,例如:

今日累積生產量=昨日累積生產量+今日生產量

此種狀況就需使用@符號搭配儲存格參照來設定公式,例如:=IF(ISTEXT(D1),0+[@生產量],D1+[@生產量])。(如下圖)

20221212_P6

設定邏輯ISTEXT是為了防止第一列沒有前一天的日期,例如此表從12/1開始,沒有11/30的數據,這樣公式會參照到表頭(Header)而造成計算異常,故需設定邏輯:若前一天累積生產量是文字,就回傳0+[@生產量],不然回傳D1+[@生產量];另外第一列公式雖然輸入D1,但第二列、第三列會自動變成D2、D3,各位若對於儲存格參照概念還不清楚,可參考此篇文章(儲存格參照的絕對與相對關係)。

另還有一種處理方式為: =IF(ISTEXT(OFFSET([@累積生產量],-1,0)),0+[@生產量],D1+[@生產量]),如此就可避開使用儲存格參照。(如下圖)

20221212_P6_1

未來有機會將會再介紹工廠中生產數據資料庫的設計方式

3.資料表應用:動態圖表設定

使用資料表有個好處就是:圖表的資料來源若設定為資料表,當資料表更新數據時,圖表也會自動更新。(如下動圖)

20221212_G6

另外針對較進階的Power Pivot應用,有興趣的讀者請參考另一篇文章:Excel資料模型入門介紹

Excel是否適合做為資料庫?

「Excel是否適合做為資料庫?」一直是個爭議的話題,小編就曾於Linkedln上參與討論過,其中Excel專家Mr. Jordan Morris Goldmeier先生是主張:Excel適合做為資料庫,藉由Excel資料模型的功能架設儀表板,Excel本身就可做為儀表板的後端資料庫。(如下圖)

20220510_P20

另反對方的論點通常是,Excel是屬於報表軟體,且Excel儲存格自由性高,只要使用者稍有不慎或知識不足,容易造成資料公式跑掉、數據串改等缺點,可靠性低

小編的看法是贊成Excel適合做為資料庫來使用,原因說明如下:

於業界裡,將數據建立到資料庫的流程,常常是由非IT人員(以下稱現場人員)進行就源輸入(如ERP系統),但由於現場人員往往無法取得連結公司資料庫的權限(有時候只能下載到PDF檔案),故在輸入數據前後,較難自行統計及核對數據的正確性,進而影響到公司資料庫的可靠度。

此種狀況下,小編認為較好的做法是,現場人員自己以Excel資料表的功能建立數據資料庫,每當更新數據時,先輸入到自己的Excel資料庫檢查數據無誤後,再輸入數據到公司的資料庫中。另還可利用Excel資料庫去進行相關的數據分析、統計與作圖。

另如果要現場人員使用資料庫軟體(如Access軟體)建立資料庫,因入門技術門檻較高,實際上較難執行;相較起來Excel是較容易入手的軟體。

各位讀者覺得如何呢?歡迎留言分享給小編喔。

總結及補充:

本篇文章從資料庫的起源去介紹Excel資料表的功能,有些人可能會覺得疑惑,這兩者有什麼關係,但小編相信若大家持續地學習Excel及練習資料處理(ETL)的技巧,將會慢慢地理解這個問題;深入Excel的世界後,各位會開始了解結構化資料的重要性,並逐漸地走進資料設計的領域,接著會再進入資料模型的世界,Excel資料模型就是以關聯式資料庫為基礎去進行維度設計的(Dimensional design,未來將另寫文章介紹)。

Excel資料表(Table)的功能,其目的與資料庫資料表的功能類似,可利於使用者將具關聯性的資料儲存在一起,進行一致性地資料管理、計算、數值類型設定等,可以製作出動態圖表,及搭配Excel進階功能Power Pivot及Power Query來使用,也很適合做為辦公室(前端)人員的資料庫。

另外,有些人可能會問:主管要求的報表格式通常較複雜,常常不只一個表頭或為非結構化的格式,那要如何將資料表功能運用到報表裡面呢?這個問題小編之後會用另一篇文章來回答大家-Excel工作簿設計介紹,簡單說就是要將資料表與報表兩者拆分開來,資料表係做為報表的資料來源(要具結構化),只要在報表內設定相關公式如:INDEX(MATCH)VLOOKUP/XLOOKUPFILTER等等函數,即可自動化地引用資料表中的數據。

這篇文章對您有幫助嗎?

平均評分 5 / 5. 6

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?

發表迴響