- 表哥的Access入門:以Excel視角快速學習數據庫開發(第2版)
- 林書明
- 1614字
- 2021-10-29 12:01:03
3.1 Excel最后的演出
在通常情況下,人們一旦習慣了使用某種工具,就會試圖用這種工具解決盡可能多的問題,而不太愿意花一些時間去學習一種全新的、更適用的工具。我們經常看到,一些Excel熟練用戶用Excel做一些原本不應該它做的事情。例如,用Excel繪制工廠布局圖,用Excel制作手工編織圖樣,等等。
小張也不例外,他覺得,如果Excel能夠解決他目前關于小飯館的數據管理與分析問題,何必花時間和精力去學習一種全新的工具呢?我覺得他說的也有道理,那么讓我們先試試Excel的解決方案,用事實說服他吧!
我們在使用Excel對小飯館的客戶訂單原始數據進行了基本的規范化處理后,最終形成了4個不同的表,每個表都存儲于單獨的Excel工作表中;為了將來使用(或引用)方便,我們給每個表都取了規范化的名字,如圖3-1所示。
當然,你完全可以隨心所欲地給表命名,但規范化的表名稱會讓你的數據更易于管理和引用,我們的做法是在表名稱前加一個表編號作為前綴。這里,我們在每個表名稱前加一個字母“T”(T代表Table)。這4個表的名稱及內容分別如下。
· T1訂單編號:該表主要用于記錄“訂單編號”,以及每個訂單編號所對應的“客戶姓名”“客戶地址”“聯系電話”“要求送餐時間”,還有表示訂單是否履行完畢的“備注”。
· T2訂單詳情:該表主要用于記錄在每一個“訂單編號”下,客戶的“所定菜品”及其“份數”。這里,一個訂單編號對應著多種菜品,每一種菜品占據表中的一行。在Excel中,我們可以使用VLOOKUP()函數,在該表中的“訂單編號”列與“T1訂單編號”表中的“訂單編號”列之間建立關聯關系。

圖3-1
· T3菜品價格:該表主要用于記錄“菜品”和對應的“單價”。在Excel中,我們可以使用VLOOKUP()函數,在該表中的“菜品”列與“T2訂單詳情”表中的“所定菜品”列之間建立關聯關系。
· T4原料清單:該表包括每一種“菜品”的“原料”,以及制作單位菜品(一份)所需各種原材料的“數量”和“單位”。在該表中,一種菜品可能對應著多種原材料。
需要注意的是,雖然“T4原料清單”表中的“菜品”列與“T2訂單詳情”表中的“所定菜品”列之間存在關聯關系,似乎可以使用Excel中的VLOOKUP()函數將兩個表中的對應內容整合到一個表中,但是由于VLOOKUP()函數在功能上的限制,VLOOKUP()函數難以解決這兩個表之間存在的“一對多”(一個菜品對應多種原材料)問題。正是“一對多”問題,迫使我們最終不得不采用Access方案(這只是原因之一,還有很多其他原因,隨著本書內容的推進,你會了解更多)。
至此,我們完成了小飯館數據的規范化處理工作,接下來的任務是基于以上4個表,以Excel為工具,將它們重新“組裝”成便于數據管理和分析的“理想中的表”。
這里,請允許我先做一下“劇透”:基于這4個表,Excel方案只能完成小張所期望的理想狀態下的數據管理任務的一半,而任務的另一半,實在不太適合使用Excel完成,因此引出了本書的主要話題:Access數據庫(本章暫且不表)。
下面,我們先看看Excel是如何完成這“一半”工作的。在介紹Excel數據處理的詳細步驟之前,我們先來看看用Excel所能完成任務的最終形式,如圖3-2所示。
在圖3-2中,我們已經用VLOOKUP()函數將工作表“T2訂單詳情”、工作表“T1訂單編號”和工作表“T3菜品價格”中的數據“組裝”到一起了,“組裝”的基本邏輯如下。

圖3-2
以工作表“T2訂單詳情”為基礎,使用Excel中的VLOOKUP()函數,分別進行如下操作。
(1)將“訂單編號”作為查找關鍵字,從工作表“T1訂單編號”中提取出“客戶姓名”“客戶地址”“聯系電話”“要求送餐時間”“備注”。
(2)將“所定菜品”作為查找關鍵字,從工作表“T3菜品價格”中提取出每個訂單編號下所定菜品的“單價”。
就這樣,我們通過對小飯館客戶訂單原始數據進行初步規范化處理,借助Excel中的VLOOKUP()函數,可以非常方便地對小飯館的一些基本數據進行匯總分析了。但是,由于Excel功能上的局限性,目前這個Excel方案所能實現的最終表并不是我們“理想中的表”,它只能對小飯館中每種菜品的銷售數量和銷售額進行匯總分析,但對小飯館每天的菜品原材料消耗量與需求量等更重要數據的分析無能為力。
- 深度實踐OpenStack:基于Python的OpenStack組件開發
- 解構產品經理:互聯網產品策劃入門寶典
- Node.js Design Patterns
- JavaScript高效圖形編程
- 軟件界面交互設計基礎
- Vue.js 3.x從入門到精通(視頻教學版)
- Java 9 Programming Blueprints
- Learning AWS Lumberyard Game Development
- Learning Linux Binary Analysis
- Java程序設計與實踐教程(第2版)
- HTML5從入門到精通(第4版)
- Microsoft Dynamics AX 2012 R3 Financial Management
- Regression Analysis with Python
- Flowable流程引擎實戰
- Android移動應用項目化教程