• 沒有找到結果。

中 華 大 學

N/A
N/A
Protected

Academic year: 2022

Share "中 華 大 學"

Copied!
76
0
0

加載中.... (立即查看全文)

全文

(1)

中 華 大 學 碩 士 論 文

分析與衡量結構化查詢語言敘述的任務複雜 度

Analyzing and Measuring the Task Complexity of Coding SQL Statements

系 所 別:資訊管理學系碩士班 學號姓名:M09710008 許峻維 指導教授:李之中 博士

中華民國 100 年 8 月

(2)

摘要

在資料庫普遍於資訊業界使用的今日,如何具體衡量撰寫 SQL 敘述任務複雜度 藉此評估資料庫應用系統開發者撰寫 SQL 敘述的績效是一個重要的議題。在分析與 衡量撰寫 SQL 敘述任務複雜度的先前研究中,Halstead 方法與運算子權重法是兩個 僅有衡量撰寫 SQL 敘述的任務複雜度的研究。但是本研究發現使用 Halstead 方法與 運算子權重法衡量撰寫 SQL 敘述任務複雜度的方式,其衡量出來的任務複雜度,與 使用者實際撰寫 SQL 敘述所感受的任務複雜度並不相同。因此本研究設計了一個能 夠貼近使用者實際撰寫 SQL 敘述所感受的任務複雜度的衡量方法-延伸式 Halstead 方法,並透過實驗說明延伸式 Halstead 方法所衡量的使用者撰寫 SQL 敘述任務複雜 度相對於使用 Halstead 方法與運算子權重法所衡量的使用者撰寫 SQL 敘述任務複雜 度更接近使用者實際撰寫 SQL 敘述所感受的任務複雜度。

在本研究的實驗中,透過四個題組測驗取得使用者的作答時間、信心度與正確性,

以此資料作為分析三種衡量方法優劣的依據。在資料分析中,題組內分析幫助研究運 算元對於結構化查詢敘述任務複雜度的影響,題組間分析幫助研究運算子對於結構化 查詢敘述任務複雜度的影響,順序維度能夠分析三種衡量方法數值序列與使用者實際 感受任務複雜度的吻合程度。資料分析結果顯示,使用者衡量撰寫 SQL 敘述任務複 雜度受到 SQL 中運算子及運算元的影響,Halstead 方法對於運算子與運算元並無權 重的差別,而運算子權重法則完全偏重運算子權重來衡量任務複雜度,本研究所提出 之延伸式 Halstead 方法則兼具運算子與運算元的考量。而研究資料也顯示本研究所 提出之延伸式 Halstead 方法相較於 Halstead 方法與運算子權重法,衡量的使用者撰 寫結構化查詢語言任務複雜度,更能夠貼近使用者實際之感受。

關鍵詞:結構化查詢語言、任務複雜度、Halstead 方法、運算子權重法、順序維度

(3)

ABSTRACT

Nowadays, businesses store their operational data in the database and therefore the SQL statement coding has been became a critical task for of database application system developers. To evaluate the performance of the developers, the issue of measuring the task complexity of coding SQL statements is necessary to be raised. However, little work has been done on this issue. Only two methods, that is, Halstead method and operator weight method, had been proposed to measure the task complexity of coding the SQL statement.

Unfortunately, the measured task complexities of coding SQL statements on the use of Halstead method and operator weight method are not consistent with that of developers actually performed. For the reason, this study proposed a method which its measured task complexities were consistent with those of the developers actually performed and called the proposed method the enhanced Halstead method.

To evaluate the performance of the proposed method, the experiments were performed to compare the effectiveness among the enhanced Halstead, the Halstead, and the operator weight methods in terms of the order degree. The results showed that the proposed method, i.e. the enhanced Halstead method, obtained the largest order degree. This conformed that the measured task complexity of coding SQL statements on the use of the enhanced Halstead method was closer to the task complexity of the developers actually performed than those on the use of the Halstead, and the operator weight methods. This study thus concludes that the enhanced Halstead method is able to measure the task complexity of coding the SQL statements effectively.

Keywords: Structured Query Language, task complexity, Halstead method, operator weight method, order degree

(4)

誌謝

感謝指導教授李之中博士在我就讀研究所的期間給予許多的指導與幫助,使我可 以順利的完成論文及碩士學業,也要感謝口試委員王貞雅博士及吳美玉博士,給予我 許多論文上的指導與建議,使得我的論文能夠更加的完善。

在這段日子裡也感謝碩士班的學長姐政傑、莉婷、鈞毅、澄宇、宜 眞、宏儒和同 學學駿、昇岳、則銘以及學弟妹書豪、遜彰、永昊、瑋柔、乙丹、秉正、英明的陪伴,

不管是在學業或生活上與你們相處,給了我一個豐富且快樂的碩士生活,還有其他碩 士班的同學及學弟妹,在此獻上我最深的祝福與感謝,謝謝你們。

最後感謝我的家人與女友佩玲,在就讀碩士班的期間給予我許多的幫助及協助,

並且感謝你們對我的包容與付出,使我可以順利的完成碩士學業。

許峻維 謹誌 中華大學 資訊管理學系 中華民國 一百年八月

(5)

目錄

摘要 ... i

ABSTRACT ... ii

誌謝 ... iii

目錄 ... iv

圖目錄 ... vii 表目錄 ... ix

第一章 緒論 ... 1

1-1 研究背景與動機 ... 1

1-2 研究目的與問題 ... 2

1-3 研究流程 ... 2

1-4 論文架構 ... 4

第二章 文獻探討 ... 5

2-1 結構化查詢語言 ... 5

2-2 任務複雜度 ... 7

2-3 撰寫結構化查詢語言之任務複雜度 ... 8

第三章 研究方法 ... 11

3-1 研究架構 ... 11

3-2 題目設計 ... 13

3-3 預測、實施測驗與批改方法 ... 17

3-4 延伸式Halstead衡量方法介紹 ... 18

3-5 研究對象 ... 22

3-6 資料分析 ... 23

第四章 資料分析結果與討論 ... 25

4-1 題組資料分析 ... 25

4-2 題組間資料分析 ... 32

(6)

4-3 順序維度資料分析 ... 38

4-4 資料分析結果 ... 51

第五章 結論與建議 ... 53

5-1 結論 ... 53

5-2 未來研究與建議 ... 54

參考文獻 ... 56

(7)

圖目錄

圖 1-1 論文研究流程圖 ... 3

圖 2-1 SQL環境簡化圖 ... 6

圖 3-1 研究架構圖 ... 12

圖 3-2 實體關係模型 ... 16

圖 3-3 關聯式資料模型 ... 16

圖 4-1 SELECT題組平均分數 ... 26

圖 4-2 WHERE題組平均分數... 26

圖 4-3 JOIN題組平均分數 ... 26

圖 4-4 SUB QUERY題組平均分數 ... 27

圖 4-5 SELECT題組平均作答時間 ... 28

圖 4-6 WHERE題組平均時間... 28

圖 4-7 JOIN題組平均作答時間 ... 28

圖 4-8 SUB QUERY題組平均作答時間 ... 29

圖 4-9 SELECT題組平均信心度 ... 29

圖 4-10 WHERE題組平均信心度 ... 30

圖 4-11 JOIN題組平均信心度 ... 30

圖 4-12 SUB QUERY題組平均信心度 ... 30

圖 4-13 SELECT題組各衡量方法數值 ... 31

圖 4-14 WHERE題組各衡量方法數值 ... 31

圖 4-15 JOIN題組各衡量方法數值 ... 32

圖 4-16 SUB QUERY題組各衡量方法數值 ... 32

圖 4-17 1 運算元題目平均分數 ... 33

(8)

圖 4-18 2 運算元題目平均分數 ... 33

圖 4-19 3 運算元題目平均分數 ... 34

圖 4-20 5 運算元題目平均分數 ... 34

圖 4-21 1 運算元題目平均信心度 ... 35

圖 4-22 2 運算元題目平均信心度 ... 35

圖 4-23 3 運算元題目平均信心度 ... 35

圖 4-24 5 運算元題目平均信心度 ... 36

圖 4-25 1 運算元題目各衡量方法數值長條圖 ... 36

圖 4-26 2 運算元題目各衡量方法數值長條圖 ... 37

圖 4-27 3 運算元題目各衡量方法數值長條圖 ... 37

圖 4-28 5 運算元題目各衡量方法數值長條圖 ... 37

圖 4-29 群組A 運算子權重序列平均時間 ... 39

圖 4-30 群組A Halstead序列平均時間 ... 40

圖 4-31 群組A Enhanced Halstead序列平均時間 ... 40

圖 4-32 群組B 運算子權重序列平均時間 ... 40

圖 4-33 群組B Halstead序列平均時間 ... 41

圖 4-34 群組B Enhanced Halstead序列平均時間 ... 41

圖 4-35 群組C 運算子權重序列平均時間 ... 41

圖 4-36 群組C Halstead序列平均時間 ... 42

圖 4-37 群組C Enhanced Halstead序列平均時間 ... 42

圖 4-38 群組A 運算子權重序列平均信心度 ... 44

圖 4-39 群組A Halstead序列平均信心度 ... 44

圖 4-40 群組A Enhanced Halstead序列平均信心度 ... 45

(9)

圖 4-42 群組B Halstead序列平均信心度 ... 45

圖 4-43 群組B Enhanced Halstead序列平均信心度 ... 46

圖 4-44 群組C 運算子權重序列平均信心度 ... 46

圖 4-45 群組C Halstead序列平均信心度 ... 46

圖 4-46 群組C Enhanced Halstead序列平均信心度 ... 47

圖 4-47 群組A 運算子權重序列平均分數 ... 48

圖 4-48 群組A Halstead序列平均分數 ... 49

圖 4-49 群組A Enhanced Halstead序列平均分數 ... 49

圖 4-50 群組B 運算子權重序列平均分數 ... 49

圖 4-51 群組B Halstead序列平均分數 ... 50

圖 4-52 群組B Enhanced Halstead序列平均分數 ... 50

圖 4-53 群組C 運算子權重序列平均分數 ... 50

圖 4-54 群組C Halstead序列平均分數 ... 51

圖 4-55 群組C Enhanced Halstead序列平均分數 ... 51

(10)

表目錄

表 3-1SQL查詢敘述運算子複雜度量表 ... 19

表 4-1 平均作答時間與衡量方法數值資料表 ... 38

表 4-2 平均時間順序維度資料分析結果表 ... 39

表 4-3 平均信心度與衡量方法數值資料表 ... 43

表 4-4 平均信心度順序維度資料分析結果表 ... 43

表 4-5 平均分數與衡量方法數值資料表 ... 47

表 4-6 平均分數順序維度資料分析結果表 ... 48

表 4-7 順序維度資料分析總表 ... 52

(11)

第一章 緒論

1-1 研究背景與動機

資料庫和資料庫系統在現今社會中的應用非常廣泛,在不同類型的公司中幾乎都 可以看到資料庫應用系統的使用,例如,在網路上購買各類商品,或是目前流行的各 類社交網站,都是資料庫應用系統的運用的例子。資料庫應用系統需要由龐大的資料 庫作為後端支援前端網站的各項功能。因此當資料庫應用系統運作時,需要自後端資 料庫擷取前端應用所需的資料,並將這些資料呈現給使用者。上述的資料庫應用系統 中,前端網站向後端資料庫擷取資料時,需要向後端資料庫發出 Structured English Query Language(SQL)敘述,後端資料庫在接收到由前端所發出的 SQL 敘述之後,

根據該 SQL 敘述自資料庫中擷取資料再交給前端。而前述資料庫應用系統中的 SQL 敘述需要資料庫應用系統開發者於資料庫應用系統開發時完成撰寫並嵌入於資料庫 應用系統中。因此如何評估資料庫應用系統開發者撰寫 SQL 敘述的績效成為一個重 要的議題。

在學者 Chan 等(1999)結合學者 Reisner(1981)與學者 Chan 等(1993)所進 行的研究中指出影響使用者查詢績效(Query performance)的因子應包含資料表示式

(Data expression)、任務複雜度(Task complexity)、查詢表達方式(Query expression)、

使用者特性(User characteristics)與系統特性(System characteristics)等五個因子。

上述五個因子中的任務複雜度即為撰寫 SQL 敘述的任務複雜度。在這些使用者查詢 績效領域的論文中,就本研究能力範圍所及的調查僅發現有少數研究探討任務複雜度 對使用者查詢績效的影響。然而在這些研究中,學者僅將任務複雜度簡單的二分為「簡 單」與「複雜」兩種類別,並據以分析不同任務複雜度對使用者查詢績效的影響。在 這些研究中學者使用個人主觀認知將任務複雜度二分為「簡單」與「複雜」兩種類別 進而探討其對使用者查詢績效的影響。也因此不同學者對於區分撰寫 SQL 敘述任務 複雜度為「簡單」或「複雜」的作法各不相同,莫衷一是。因此學界需要一個具體衡 量撰寫 SQL 敘述任務複雜度的方法。

在探討衡量撰寫 SQL 敘述任務複雜度的研究中,本研究發現兩個針對衡量撰寫 SQL 敘述任務複雜度進行討論的研究工作。在學者 Borthick 等(2001)的研究中,

(12)

提出使用 Halstead 方法來衡量撰寫 SQL 敘述的任務複雜度。使用 Halstead 方法衡量 撰寫 SQL 敘述任務複雜度的優點為可以簡單及客觀的衡量出 SQL 敘述任務複查度,

但是在 Halstead 方法中,對於所有的運算子都是同等地位的,因此只要運算元越多,

衡量出的數值就會相對的上升,會產生 SQL 敘述越長複雜度就越高的情況。為了改 進 Halstead 方法的缺點,學者袁輝偉(2010)提出應給予 SQL 查詢敘述中運算子不 同的權重後,根據運算子的權重來決定查詢命令任務複雜度的運算子權重法,此方法 卻忽略了運算元對 SQL 敘述任務複雜度的影響。以上兩個研究工作的衡量撰寫 SQL 敘述任務複雜度的方式,其衡量出來的任務複雜度,與使用者實際撰寫 SQL 敘述所 感受的任務複雜度並不相同。因此本研究希望找出一個能夠更貼近使用者實際撰寫 SQL 敘述所感受的任務複雜度的衡量方法,來衡量撰寫 SQL 查詢敘述的任務複雜 度。

1-2 研究目的與問題

本研究的研究目的為衡量使用者撰寫 SQL 敘述時任務複雜度,同時希望衡量完 成的任務複雜度與使用者實際撰寫 SQL 敘述所感受的任務複雜度能夠相一致。最終 找出一個能夠更貼近使用者實際撰寫 SQL 敘述所感受的任務複雜度的衡量方法,藉 此以客觀方式衡量使用者撰寫 SQL 查詢敘述的任務複雜度。

本研究將 SQL 查詢敘述分為運算子與運算元兩個部分,運算子為 SQL 敘述各種 不同的 SQL 關鍵字組合做為運算子,而各種不同 SQL 敘述所需的表格、欄位或是條 件式做為運算元,依照這樣的規則去設計測驗問題,並以不同的衡量方法算出各自所 代表的數值順序,並以此排序與實際使用者查詢績效的結果排序後做比較。

為達到上述的研究目的,本研究的待答問題分列如下:

1. SQL 中不同數量的運算元在相同運算子時任務複雜度的差別。

2. SQL 中不同運算子間任務複雜度的關係。

3. 若以撰寫 SQL 敘述的任務複雜度為應變數,運算子與運算元為自變數,則撰寫 SQL 敘述的任務複雜度與 SQL 敘述中運算子與運算元函數關係。

1-3 研究流程

本研究之流程共分七個步驟依序為形成研究動機、相關文獻探討、建立模型與假

(13)

說、實驗設計與修正、實驗、資料整理與分析以及結論與建議。如圖 1-1 所示:

圖 1-1 論文研究流程圖

研究流程個步驟說明如下:

一、研究動機

首先了解結構化查詢語言與任務複雜度,及現有衡量方法,確認問題所在後,

將問題具體化以供研究的進行與操作。

二、相關文獻探討

確定研究動機與目的後,蒐集相關文獻資料研究,做為假設及實驗衡量依 據。

三、建立模型與假說

研究動機

相關文獻探討

建立模型與假說

實驗設計與修正

資料整理與分析

結論與建議 實驗

(14)

根據相關文獻探討建立本研究不同的影響因素,最後形成本研究模型後提出 問題與假說。

四、實驗設計與修正

根據問題與假說設計本研究測驗題目初稿後,實施預測,並依據預測結果做 測驗題目之修正,以形成本研究測驗題目之最終版。

五、實驗

根據研究範圍與對象,正式實施測驗。

六、資料整理與分析

回收測驗數據後批改答案與整理數據,並依照不同的衡量方法衡量任務複雜 度後做數據分析。

七、結論與建議

根據資料分析之結果來驗證本研究之假說後提出結論與建議。

1-4 論文架構

本研究根據前節研究流程進行研究工作。論文分為五章,除第一章外,後續各章 的內容重點簡述如後。

第二章 文獻探討

本章第一節首先介紹何謂結構化查詢語言,第二節介紹何謂任務複雜度,第三節 介紹目前有關結構化查詢語言與任務複雜度之間關係的相關研究與衡量結構化查詢 語言任務複雜度之方法。

第三章 研究設計與方法

說明本研究之研究設計與參數的定義、題目設計、衡量方法介紹及研究對象。

第四章 資料分析結果與討論

本章根據各題組測驗之後的結果與所有測驗資料的結果應用不同的衡量方法衡 量結構化查詢語言任務複雜度的結果做分析與討論。

第五章 結論與建議

歸納本研究資料分析後的結論與說明研究限制與未來研究之建議。

(15)

第二章 文獻探討

本研究探討如何有效的衡量結構化查詢語言之任務複雜度,其中提到了結構化查 詢語言與任務複雜度這兩個重要的名詞,將在本章第一節簡介結構化查詢語言,第二 節則介紹任務複雜度,其它相關的研究則在第三節做介紹。

2-1 結構化查詢語言

SQL 語言,最早是出現在 1970 年,由 E.F Coddy 發表的經典論文中,當時 Codd 任職於 IBM 在加州聖荷西的研究實驗室,1974 年由同樣任職於 IBM 加州聖荷西研究 實驗室的 D. Chamberlin 正式定義了此語言名稱為 Structured English Query Language 或 SEQUEL,而現在大多數的人稱呼此語言為‘See-Quel’或者是‘S-Q-L’。

1986 年在美國國家標準協會(American Nation Standards Institute)與國際標準組 織(International Standards Organization)發表了 ANSI SQL 標準 SQL-86,之後在 1989 年、1992 年、1999 年、2003 年都進行過改版,目前最為廣泛使用的 SQL 標準為 1999 年改版的 SQL-99 而最新版本為 2003 年改版的 SQL-2003。

第一個支援 SQL 語法的資料庫是 1979 年推出的 Oracle 資料庫管理系統,一直到 現在 Oracle 資料庫系統還是一直支援 SQL 語法,而 Oracle 資料庫廣泛的應用在各種 產業領域中,許多的作業系統也都支援 Oracle 資料庫;目前不只是 Oracle 資料庫支 援 SQL 語言,IBM、Microsoft 推出的資料庫系統也都支援 SQL 語言,因此 SQL 語 言可以說成為了各類資料庫系統所用的標準語言。

在現在許多的產品都已經支援 SQL 語言,並且在各種規模的電腦主機都可以執 行,不論是個人小型電腦或者是大型主機都可以執行 SQL 語言,而且在 SQL 語言應 用如此廣泛的情況下,將來也很難出現取代 SQL 的語言。

2-1-1 結構化查詢語言所扮演的角色

現在網路蓬勃發展的時代,資料庫系統更是扮演一個不可或缺的角色,各式各樣 的網站都廣泛的應用資料庫系統,例如在購物網站中可以看到琳瑯滿目的商品,當您 瀏覽或者是消費的時候這些動作都牽涉到資料庫系統中的存取,甚至於您到銀行或者 是提款機領錢,這些動作也都會透過資料庫系統去做記錄。

使用者在透過網站或軟體所提供的介面,做上述動作的時候,其實都是透過程式 設計者所設計的使用者介面,對資料庫系統下了 SQL 查詢敘述,這些執行資料庫上

(16)

新增、修改、刪除、查詢等的命令,都是程式設計者在撰寫使用者介面的時候,透過 SQL 語言與資料庫系統的聯結,將資料庫系統中的資料,呈現在使用者介面上,如 圖 2-1。

圖 2-1 SQL 環境簡化圖(引自陳玄玲、應鳴雄,2007,p.8-5)

透過圖 2-1 的方式使用者可以在完全不接觸到 SQL 查詢敘述的情況下對資料庫 系統進行控制,但如何符合使用者需求且快速正確的去對資料庫系統做存取,就會受 到程式設計者撰寫的 SQL 查詢敘述績效而影響了,隨著網站的內容越來越豐富,資 料庫系統越來越龐大,受到程式設計者撰寫的 SQL 查詢敘述績效影響也會越來越龐 大,因此 SQL 語法對程式設計者而言是一個非常重要的工具。

2-1-2 結構化查詢語言的查詢命令

SELECT 是 SQL 語法的基本查詢命令,透過 SELECT 命令可以簡單的從資料庫 取出我們所需要的資料,有關 SELECT 命令的使用形式如下:

SELECT <attribute list>

(17)

FROM <table list>

WHERE <condition>

<attribute list>查詢時所要參考的屬性名稱。

<table list>查詢時所要參考的表格名稱。

<condition>查詢時所要參考的條件或運算式。

在 SQL 語言中,SELECT 是最簡單的查詢命令,其它還有很多複雜的命令形式而本 研究除了 SELECT、WHERE 命令的測驗外,其它還使用了 JOIN 及 Sub Query 命令 的測驗,以下將分別介紹 JOIN 及 SUB QUERY 命令的形式。

JOIN 命令形式:

SELECT <attribute list>

FROM <table list> JOIN <table list> USING(<attribute list>)

JOIN 命令主要的功能是在做表格的合併,使用者可以利用表格中相關聯的屬性,將 兩個或多個表格合併後,再選取自己所需要的屬性,

SUB QUERY 命令形式:

SELECT <attribute list>

FROM <table list>

WHERE <condition><operator>(<SUB QUERY>)

<SUB QUERY>查詢時所參考的子查詢。

SUB QUERY 較以上命令形式來得複雜,可以將它視為兩個 SQL 查詢敘述的結合,

<SUB QUERY>是擺放子查詢的地方,而子查詢並無限制要擺放何種查詢命令,以 本研究來說,是在<SUB QUERY>裡擺入一個 SELECT、WHERE 命令句。

2-2 任務複雜度

在介紹任務複雜度之前首先要說明,任務複雜度(Task complexity)與任務難度

(Task difficulty)之間的不同,任務困難度具有相互比較的意味,任務複雜度則沒有,

不同的人,感受到的任務困難度不盡相同,而任務複雜度則一樣,因此有些任務可能 很困難,但並不複雜,反之亦然(Campbell,1988),舉例來說,一位經驗豐富的醫 生跟剛從學校畢業的醫生執行同樣的手術,對於經驗豐富者來說可能非常簡單,而剛 畢業的學生可能會覺得非常困難,就算他們所做的動作與目標都是一樣的。

(18)

2-2-1 任務複雜度之定義

任務複雜度可以分為三個組成的要素,結果(Product)、動作(Acts)及資訊線 索(Information cues)(Wood,1986)。結果是個體執行行為或動作後所預期產生的 結果;動作是有特定目的的行為模式,例如:聽、說、讀、寫等;資訊線索則是個人 在執行這些特定的行為模式時所需要使用到的資訊。

任務複雜度大致可分為兩種,主觀任務複雜度(Subjective complexity)與客觀任 務複雜度(Objective complexity),主觀任務複雜度與客觀任務複雜度最大的不同在 於,主觀任務複雜度較易受到個人經驗及能力的影響,因此不同的人對同樣的任務可 能會感受到不一樣的主觀任務複雜度,客觀任務則較不易受影響(Campbell,1988);

本研究期望找出可以有效衡量客觀任務複雜度的方法,因此本研究分別找三群不同程 度的受測者接受測驗,依照測驗後的結果排列順序後,找出衡量方法中最符合實際排 列順序的方法。

對於何謂複雜的任務,根據 Wood(1986)的定義為,越是複雜的任務,通常需 要越多的資訊線索才能夠進行任務的執行,但當資訊線索的量超過個人所能處理的上 限,會發生‘超載’(Overload),而超載將會導致較差的任務績效,因此越是複雜 的任務,任務績效也會越差,本研究將根據此定義來設計測驗題目。

2-2-2 使用者查詢績效與任務複雜度

根據 Wood(1986)對於任務複雜度的定義,越複雜的任務將導致越差的任務績 效,將此定義對照到 SQL 查詢敘述的研究上,也就是越複雜的 SQL 查詢敘述將導致 越差的使用者查詢績效,學者 Chan 等(1999)結合學者 Reisner(1981)與學者 Chan 等(1993)所進行的研究中指出使用者查詢績效(Query performance)應包含時間

(Time)、信心度(Confidence)與正確性(Accuracy)。

Borthick 等(2001)、Topi 等(2005)、Nadolski 等(2005)、黃莉婷(2009)、袁 輝偉(2010)有關衡量任務複雜度之研究,皆以時間(Time)、信心 度(Confidence)

與正確性(Accuracy)來當作衡量使用者查詢績效之指標,因此本研究也利用這三個 因素來當作衡量使用者查詢績效之指標。

2-3 撰寫結構化查詢語言之任務複雜度

本節將介紹有關結構化查詢語言任務複雜度之相關研究,袁輝偉(2010)及

(19)

Borthick 等(2001)是針對衡量結構化查詢語言任務複雜度有提出具體方法的研究,

本節將對這兩個方法詳細介紹。

2-3-1 以 Halstead 方法衡量結構化查詢語言任務複雜度之方法

Borthick 等(2001)提出以 Halstead 方法衡量結構化查詢語言之任務複雜度,將 結構化查詢語言簡單分為兩個部分,運算子(Operators)與運算元(Operands),並 以公式做計算。Halstead 方法公式如下:

D=(N log2𝑛)/(𝑛log2𝑛) (公式 1)

N=𝑁1+𝑁2;𝑁1=查詢敘述中運算子的個數;𝑁2=查詢敘述中運算元的個數;n=𝑛1+ 𝑛2;𝑛1=查詢敘述中相異運算子的個數;𝑛2=查詢敘述中相異運算元的個數;𝑛為最 短查詢敘述的 n 其值為 5,因為最短的查詢敘述為:

SELECT * FROM table;

以下以本研究測驗第 8 題為例,以 Halstead 方法計算其查詢命令任務複雜度:

第八題題目為:請找出所有員工的姓名(E_NAME)與工作部門位於的城市(CITY)

第八題答案:SELECT E_NAME, CITY

FROM (EMPLOYEE JOIN DEPARTMENT USING (D_ID)) JOIN LOCATIONS USING (LOCATION_ID)

運算子與運算元分類結果:

運算子 數量 運算元 數量

SELECT 1 E_NAME 1

, 1 CITY 1

FROM 1 EMPLOYEE 1

() 3 DEPARTMENT 1

JOIN 2 D_ID 1

USING 2 LOCATIONS 1

; 1 LOCATION_ID 1

𝑛=7 𝑛2=7

𝑁1=11

𝑁2=7 D=(18 log214)/(5 log25)=5.90

Halstead 方法是同時考慮運算子與運算元的衡量方法,合乎目前文獻對於任務複

(20)

雜度的定義,但是本研究對於 Halstead 方法將運算子與運算元視為同等的並且所有的 運算子都是相同的觀點並不認同,而且 Halstead 方法在 SQL 查詢敘述字數增加時,

複雜度就會相對的上升,在實際測驗後是不符合實際情況的,詳細分析將在本論文第 四章做解說。

2-3-2 以運算子權重法衡量結構化查詢語言任務複雜度之方法

學者袁輝偉(2010)提出的運算子權重法,主要是利用 SQL 查詢敘述中運算子 的權重來衡量 SQL 查詢敘述的任務複雜度,學者袁輝偉設計了 24 題題目來給受測者 做測驗後,計算所有受測者的答題正確率,設計出以下運算子量表:

表 2-1 SQL 查詢敘述運算子複雜度量表

Operators Selection Where Alias Distinct Between Having

Complexity 1 10 23 21 28 16

Operators IN LIKE Order By JOIN Group By SUB Query

Complexity 43 43 26 17 56 34

利用這個量表可以簡單的計算 SQL 查詢敘述任務複雜度,以本研究測驗第 8 題為例:

SELECT E_NAME, CITY

FROM (EMPLOYEE JOIN DEPARTMENT USING (D_ID)) JOIN LOCATIONS USING (LOCATION_ID)

以運算子權重法計算,因 SQL 查詢敘述中出現 SELECT 及 JOIN,量表中 SELECT 的複雜度為 1,JOIN 的複雜度為 17,而 JOIN 在查詢命令中出現兩次,所以本題答案 以運算子權重法計算的複雜度為:

1+17+17=35

此方法雖然可以根據量表很簡單的計算出 SQL 查詢敘述任務複雜度,但完全只 考慮運算子權重的方法,與其他文獻中對於任務複雜度的定義並不相符,並且當 SQL 查詢敘述只做運算元數量變化時,無法有效的衡量出其中的差別,此觀點將在本論文 第四章資料分析中詳細解說。

(21)

第三章 研究方法

本章節主要說明研究的設計與方法,藉由文獻探討,我們了解到目前對於任務複 雜度與查詢任務複雜度的定義,根據文獻探討的結果,在第一節介紹研究架構,第二 節介紹題目設計,第三節講述預測、實施測驗與批改答案的方法,第四節介紹本研究 所提出的 Enhanced Halstead 衡量複雜度方法,第五節說明本研究的研究對象,第六 節則介紹本研究資料分析的過程。

3-1 研究架構

本研究的研究目的為衡量使用者撰寫 SQL 敘述時任務複雜度,同時希望衡量完 成的任務複雜度與使用者實際撰寫 SQL 敘述所感受的任務複雜度能夠相一致。根據 文獻探討的結果,我們發現無論是 Borthick 等學者(2001)所使用的 Halstead 方法與 學者袁輝偉(2010)所提出的運算子權重法進行撰寫 SQL 敘述任務複雜度的衡量,

在衡量撰寫 SQL 敘述任務複雜度的學理探討中,均發現考慮不夠周延的地方,因此 導致 Halstead 方法與運算子權重法無法正確衡量撰寫 SQL 敘述的任務複雜度。本研 究因此希望找出一個能夠更貼近使用者實際撰寫 SQL 敘述所感受的任務複雜度的衡 量方法,並透過實驗說明使用本研究所提出的方法所衡量的使用者撰寫 SQL 敘述任 務複雜度,相對於使用 Halstead 方法與運算子權重法所衡量的使用者撰寫 SQL 敘述 任務複雜度更接近使用者實際撰寫 SQL 敘述所感受的任務複雜度。

本研究的研究架構如圖 3-1 所示。在這個研究架構中本研究的首要工作即為

「Enhanced Helstead 衡量方法的設計」,亦即先行設計一個相對於使用 Halstead 方法 與運算子權重法所衡量的使用者撰寫 SQL 敘述任務複雜度更接近使用者實際撰寫 SQL 敘述所感受的任務複雜度的衡量方法。本研究發現撰寫 SQL 敘述的任務複雜度,

應該由 SQL 敘述的運算子與運算元(包含屬性、表格以及的條件式)共同決定,同 時不同運算子之間所具有的任務複雜度亦有不同。因此本研究以 Borthick 等學者

(2001)所使用的 Halstead 方法以及學者袁輝偉所提出的運算子權重法為基礎,提出 一個依據所撰寫 SQL 敘述中運算子與運算元(包含屬性、表格以及的條件式)並給 予 運 算 子 不 同 任 務 複 雜 度 的 衡 量 方 法 。 這個 方 法 被 稱為 延 伸式 Halstead 方 法

(Enhanced Halstead)。有關延伸式 Halstead 方法的更深入說明,本研究將在本章的

(22)

第四節中進行。

圖 3-1 研究架構圖

在完成架構中「Enhanced Halstead 衡量方法設計」後,本研究準備透過實驗方式 說明延伸式 Halstead 方法相較於 Halstead 方法與運算子權重法,更能貼近使用者實際 撰寫 SQL 敘述所感受的任務複雜度。為了達到上述的目的,本研究首先透過實驗取 得使用者實際撰寫 SQL 敘述的任務複雜度。但是任務複雜度在實務上難以衡量,因 此本研究透過使用者撰寫 SQL 敘述的績效衡量任務複雜度。使用者撰寫 SQL 敘述的 績效衡量可以分成三個變數分別進行衡量,分別為撰寫 SQL 敘述所使用的時間、使 用者正確完成 SQL 敘述撰寫的信心度及使用者所完成 SQL 敘述的正確性(Borthick

(2001),袁輝偉(2010))。為使上述三個變數能夠具體衡量,本研究將正確性轉換 為受測者作答結束後的分數來代表,而使用時間為受測者於實驗中完成 SQL 敘述所

實驗設計

題目設計

實施預測

正式測驗

資料分析

題組間資料分析 批改測驗答

題組內資料分析 序列資料分析

Enhanced Halstead 複雜

度衡量 Halstead 複雜度衡量 運算子權重法複雜度衡量

Enhanced Halstead 衡量方

法設計

(23)

使用的時間,至於信心度則以在受測者於完成作答之後自我評估是否答對問題的程度,

上述三個變數在本研究中均為撰寫 SQL 敘述任務複雜度的操作型變數。

根據上一節中的說明,本研究實驗部分所進行的第一個工作為實驗題目的設計-

「題目設計」。「題目設計」完成之後接著進行「預測實施」以找出實驗問題可能的不 足之處。在完成「預測實施」之後,進行「正式測驗」,於實驗中取得使用者撰寫 SQL 敘述的時間與信心度。而正確率則以 Borthick 等學者(2001)所建議的方法批改受測 者答案後取得。在完成上述工作之後,本研究將各測驗題目題號依據實驗中所取得各 個題目的答題時間由低而高排列,而信心度與正確率,則由高而低排列。因此本研究 得到三個序列,分別稱之為時間基準序列、信心度基準序列與正確率基準序列。這三 個基準序列在本研究中將用來表示使用者實際撰寫 SQL 敘述所感受的任務複雜度。

接著本研究分別使用 Halstead 方法、運算子權重法以及本研究提出的 Enhanced Halstead 方法取得這三個方法在實驗中各個題目的任務複雜度,並將使用同一方法衡 量實驗題目所取得的任務複雜度,並依照所衡量得到任務複雜度由低而高排列題號。

因此本研究可以得到三個序列,其中使用使用 Halstead 方法進行任務複雜度衡量所取 得的序列稱為 Halstead 序列,使用運算子權重方法進行任務複雜度衡量所取得的序列 稱為運算子權重序列,而使用使用 Enhanced Halstead 方法進行任務複雜度衡量所取 得的序列稱為 Enhanced Halstead 序列。

在取得三個方法的任務複雜度與任務複雜度序列之後,接著將進行資料分析,本 研究所進行的資料分析包含題組內資料分析、題組間資料分析以及序列資料分析。在 題組內資料分析中,探討同一運算子在運算元數量變化時對任務複雜度的影響,在題 組間資料分析中,探討不同運算子在運算元數量固定時對任務複雜度的影響,在序列 資料分析中,本研究使用順序維度對 Halstead 序列、運算子權重序列以及 Enhanced Halstead 序列與時間基準序列、信心度基準序列與正確率基準序列等三基準序列進行 相似程度比較,以說明本研究所提出的 Enhanced Halstead 序列與表示使用者實際感 受撰寫 SQL 敘述任務複雜度的基準序列最為接近。

3-2 題目設計

本研究參考 Borthick 等(2001)對於 SQL 查詢命令的定義,將 SQL 查詢命令分 為運算子(Operators)及運算元(Operands)兩部分,以 SQL 基本查詢命令為例:

(24)

SELECT <attribute list>

FROM <table list>

WHERE <condition>

運算子的部分為 SELECT、FROM 及 WHERE,而運算元的部分為<attribute list>、

<table list>及<condition>,簡單來說,有關 SQL 查詢命令中關鍵字的部分定義為 運算子,而 SQL 命令中所使用的屬性、表格名稱及條件式、邏輯運算等部分定義為 運算元。

本研究實驗題目根據上述的說明進行設計。實驗所使用的實體關係模型(E-R Model)如圖 3-2,圖中包含 5 個實體,4 個關係及 24 個屬性,而實體關係模型相應 對的關聯式資料模型(Relational Model)如圖 3-3,由圖中可以清楚看到所有表格、

屬性以及外來鍵所參照的關聯;首先本研究將實驗題目分成四個題組,每個題組包含 若干個實驗題目,在同屬一個題組中的題目間僅有某一固定運算子所需運算元個數。

題組的名稱使用被改變運算元個數的運算子名稱命名。在本實驗題目中選擇了 SELECT、WHERE、JOIN 及 SUB QUERY 等四個運算子,分別探討這四個運算子它 們的運算元數量改變時撰寫這些 SQL 敘述工作複雜度的變化情形。因此本實驗題目 中包含了四個題組,分別為 SELECT、WHERE、JOIN 及 SUB QUERY 等四個題組。

在 SELECT 題組中共有 3 題,分別為 SELECT 子句中需要指定 1 個、5 個及 15 個屬 性;WHERE 題組亦有 3 題,分別為 WHERE 子句中需要指定有 1 個、3 個及 5 個查 詢條件;JOIN 題組則有 4 題,完成這 4 題的題目,使用者需要分別完成 2 個、3 個、

4 個及 5 個表格合併的 SQL 敘述,而 SUB QUERY 題組則僅有 2 題,分別為在 WHERE 子句中需要寫入有 1 個與 2 個子句查詢。以下以 SELECT 題組舉例說明:

一、請找出所有員工的編號(E_ID)

答案:SELECT E_ID FROM EMPLOYEE;

二、請找出所有員工的編號(E_ID)、姓名(E_NAME)、國籍(NATIONLITY)、績 效(PERFORMANCE)、電話分機(EXTENSION)

答案:SELECT E_ID, E_NAME, NATIONLITY, PERFORMANCE, EXTENSION FROM EMPLOYEE;

三、請找出所有員工的編號(E_ID)、姓名(E_NAME)、國籍(NATIONLITY)、績 效(PERFORMANCE)、電話分機(EXTENSION)、薪資(SALARY)、性別(SEX)、

年齡(AGE)、電話(TEL)、年資(SENIORITY)、生日(BIRTHDAY)、獎金

(25)

(BONUS)、專長(SKILL)、語言(LANGUAGE)、經歷(BACKGROUND)

答案:SELECT E_ID, E_NAME, NATIONLITY, PERFORMANCE, EXTENSION,SALARY, SEX, AGE, TEL, SENIORITY, BIRTHDAY, BONUS, SKILL, LANGUAGE, BCKGROUND FROM EMPLOYEE;

由上述的 SELECT 題組中可以看到同一題組中的題目本研究使用同一種問題表達方 式。舉例如下:

一、請找出所有員工的編號(E_ID)。

二、請找出所有員工的編號(E_ID)、姓名(E_NAME)、國籍(NATIONLITY)、績 效(PERFORMANCE)、電話分機(EXTENSION)。

三、請找出所有員工的編號(E_ID)、姓名(E_NAME)、國籍(NATIONLITY)、績 效(PERFORMANCE)、電話分機(EXTENSION)、薪資(SALARY)、性別(SEX)、

年齡(AGE)、電話(TEL)、年資(SENIORITY)、生日(BIRTHDAY)、獎金

(BONUS)、專長(SKILL)、語言(LANGUAGE)、經歷(BACKGROUND)。

而回答上述題組中的問題僅需使用下列語法撰寫 SQL 敘述即可。

SELECT <attribute list>

FROM <table list>

其中<attribute list>為查詢時所要參考的屬性名稱,<table list>為查詢時所要參考 的表格名稱。回答上述三個問題的 SQL 敘述其 FROM 子句皆相同,三個敘述中不同 之處為 SELECT 子句之中需填入不同數量的屬性名稱。如下所示。

第一題答案:SELECT E_ID FROM EMPLOYEE;

第二題答案:SELECT E_ID, E_NAME, NATIONLITY, PERFORMANCE, EXTENSION FROM EMPLOYEE;

第三題答案:SELECT E_ID, E_NAME, NATIONLITY, PERFORMANCE, EXTENSION, SALARY, SEX, AGE, TEL, SENIORITY, BIRTHDAY, BONUS, SKILL, LANGUAGE, BCKGROUND

FROM EMPLOYEE;

換言之,在同題組中採用相同的問法,並將使用的運算子及查詢參考的表格固定,唯 一變化的是運算元數量,在每一題題目設計中增加答案所需的運算元數量(如上述三 題答案的 SQL 敘述),利用這樣的方式,答案的運算元數量增加,以達到研究所需的 效果。(實驗詳細題目請參照附錄一)

(26)

圖 3-2 實體關係模型

(27)

袁輝偉(2010)與 Borthick 等(2001)研究中,題目的設計皆與本研究不同,袁 輝偉(2010)主要是利用各種不同的 SQL 查詢敘述運算子來做題目的設計,而 Borthick 等(2001)則是以題目的詢問方式來做設計,這兩種命題方式,在題目與題目間並無 明顯的關係,因此題目與題目間的任務複雜度並不方便做比較,而本研究的題目設計,

因為題目與題目間做運算子及運算元數量的控制,可以利用這樣的題目設計有效的分 析,運算子與運算元數量變化對於受測者任務複雜度的感受。

3-3 預測、實施測驗與批改方法

在完成實驗題目設計之後,接下來對實驗題目進行預測。預測所使用的實驗環境 與後續正式實驗的環境完全相同(測驗系統請參照附錄二)。預測由三位中華大學碩 士班的同學實施,這三位同學至少曾修習三門資料庫課程。因實驗透過由本研究所開 發的測驗資訊系統進行,所以在預測時可以測試該測驗系統運行是否順暢,以及受測 者是否能順利建立帳號密碼,測驗資訊系統將使用該帳號作為該次測試的辨識子。此 外,也測試受測者於測試資訊系統完成作答後的實驗答案、作答時間、信心度能否順 利紀錄。最後,預測結束後根據預測結果進行測驗資訊系統與實驗題目的調整,務求 正式測驗能夠順利進行。

正式實驗時,先請受測者註冊自己的帳號密碼,以便網站資料庫能夠據此紀錄受 測者答題資料。接著測試者使用剛註冊的帳號登入測驗資訊系統,此時資訊系統同時 呈現作答所需的實體關係模型(E-R Model)以及與實體關係模型相應對的關聯式資 料模型(Relational Model)給受測者參考。在實驗進行中,受測者依題號循序進行做 答,測驗資訊系統在受測者作答時將同時紀錄受測者的作答時間,完成作答後由系統 紀錄該題答案並進行信心度的詢問,信心度代表受測者對於本題答案正確回答問題的 信心,信心度計分方式為 1~5,分數越高,代表受測者對於本題答案正確的信心越 強;受測者所有答題結束後,網站將自動登出受測者的帳號,並無法再次登入,避免 受測者重複修改答案影響資料的真實性。

上述答題時間與信心度於完成實驗實施之後即可自測試資訊系統得知,正確率則 需批改受測者的答案後方能獲得。本研究以 Borthick 等學者(2001)建議的方法進行 受測者測試答案的批改。Borthick 等學者(2001)將受測者所回答的答案可能發生的 錯誤分為兩種-微觀錯誤(Micro Errors)與巨觀錯誤(Macro Errors)。微觀錯誤指的

(28)

是可以經過一次修改就成為正確查詢的錯誤,而巨觀錯誤指的是會影響到查詢結果欄、

行或者是集合的錯誤。Borthick 等(2001)的研究經由計算這兩種錯誤出現的次數來 當作使用者查詢績效的正確性,但本研究並不去計算微觀錯誤與巨觀錯誤的數量,而 是以錯誤計分,每題滿分為 10 分每出現一個微觀錯誤扣 2.5 分,一個巨觀錯誤則扣 10 分,以此方式計分,這樣的方式可以將微觀錯誤與巨觀錯誤具體化來比較,而不 用將微觀錯誤與巨觀錯誤的數量分開來檢視,讓使用者查詢績效正確性的表現更為明 確。

3-4 延伸式 Halstead 衡量方法介紹

本研究從文獻調查進行衡量撰寫 SQL 敘述任務複雜度學理探討,在這個學理探 討中,本研究發現 Borthick 等學者(2001)所使用的 Halstead 方法與學者袁輝偉(2010)

所提出的運算子權重法,在方法設計上均有未臻周延的地方。因此導致在衡量撰寫 SQL 敘述任務複雜度時,Halstead 方法與運算子權重法均無法正確衡量撰寫 SQL 敘 述的任務複雜度。本研究發現撰寫 SQL 敘述的任務複雜度,應該由 SQL 敘述的運算 子與運算元(包含屬性、表格以及的條件式)共同決定,同時不同運算子之間所具有 的任務複雜度亦有不同。在 Halstead 方法中,Halstead 方法同時使用了 SQL 敘述的 運算子與運算元衡量 SQL 敘述的任務複雜度。在實際的衡量方法上 Halstead 方法透 過 SQL 敘述中的運算子的與運算元的數量衡量撰寫 SQL 敘述的任務複雜度。基本上 Halstead 方法認為撰寫 SQL 敘述的任務複雜度與所撰寫 SQL 敘述的長度(運算子+

運算元的個數)成正比。因此兩個敘述,如果其中一個包含 SELECT、FROM、WHERE 的 SQL 敘述,與另一個包含合併運算的 SQL 敘述,如果兩個 SQL 敘述長度相同的 話,這兩個 SQL 敘述的任務複雜度幾近相同。就資料庫系統研究社群的一般認知,

撰寫一個合併運算的 SQL 敘述其任務複雜度應該比撰寫一個包含 SELECT、FROM、

WHERE SQL 敘述的任務複雜度來的高。因此,學者袁輝偉(2010)提出的運算子權 重法衡量撰寫 SQL 敘述的任務複雜度。運算子權重法針對不同的 SQL 運算子訂定了 不同的權重,藉此處理 Halstead 方法中的不足之處,但是運算子權重法僅考慮應該給 運算子不同的權重,並未考慮運算元也同時影響撰寫 SQL 敘述時的任務複雜度。

本研究參考 Halstead 與運算子權重兩個衡量撰寫 SQL 查詢敘述任務複雜度的方 法後,認為完整有效的衡量 SQL 查詢命令任務複雜度的方法應該同時具備運算子的

(29)

權重以及運算元的數量兩個因素,因此將參考運算子加權法與 Halstead 方法,將兩個 方法結合為延伸式 Halstead 方法(Enhanced Halstead)。

延伸式 Halstead 方法利用運算子權重法的運算子量表來當作 SQL 查詢敘述中運 算子的權重,並在 Halstead 方法公式變型後加入運算子的權重,如下所示:

Halstead:D=(𝑁1+𝑁2)log2(𝑛1+𝑛2)/(𝑛log2𝑛

Enhanced Halstead:D=(𝑛1+α𝑁1)log2(𝑛2+𝑁2)/(𝑛log2𝑛

𝑁1=查詢敘述中運算子的個數;𝑁2=查詢敘述中運算元的個數;𝑛1=查詢敘述中相 異運算子的個數;𝑛2=查詢敘述中相異運算元的個數;α=運算子權重。

本研究將 Halstead 方法中有關運算子的變數相加後並給予變數𝑁1運算子的權重,

因為𝑁1為查詢敘述中運算子的個數,將運算子的權重放在這裡,會使運算子權重產生 較明顯的作用,而又不會對運算元影響太顯著,而變成完全注重運算子的衡量方法。

運算子權重部分,本研究同樣參考袁輝偉(2010)運算子權重法的運算子權重量表,

但因為量表中學者袁輝偉的運算子權重定義數值太過龐大,如果直接使用的話,無法 與其他衡量方法做適當的比較,因此本研究將運算子權重量表數值縮減為 1/10,以 下列出本研究所使用的運算子權重:

表 3-1 SQL 查詢敘述運算子複雜度量表 Operators SELECT WHERE JOIN Complexity 0.1 1 1.7

SUB QUERY 的部分不再使用學者袁輝偉所定義的權重去計算,因為子查詢的寫 法有很多種,如果只固定的使用同一種運算子權重,無法客觀有效的衡量使用者的任 務複雜度感受,而本研究子查詢使用的是 WHERE 命令,因此在權重部分使用的是 WHERE 的權重。

3-4-1 延伸式 Halstead 方法使用例題介紹

本小節將根據研究中所使用到的四種 SQL 查詢敘述形式,以本研究測驗題目舉 例說明延伸式 Halstead 方法衡量 SQL 查詢敘述任務複雜度的計算,如以下所示:

以本研究第二題為例,說明 SELECT 查詢命令形式的計算:

第二題題目:請找出所有員工的編號(E_ID)、姓名(E_NAME)、國籍(NATIONLITY)、

(30)

績效(PERFORMANCE)、電話分機(EXTENSION)

第二題答案:SELECT E_ID, E_NAME, NATIONLITY, PERFORMANCE, EXTENSION FROM EMPLOYEE;

運算子與運算元分類結果:

運算子 數量 運算元 數量

SELECT 1 E_ID 1

FROM 1 E_NAME 1

; 1 NATIONLITY 1

, 4 PERFORMANCE 1

EXTENSION 1

EMPLOYEE 1

n1=4 n2=6

N1=7 N2=6

D=(4+0.1 ∗ 7) log2(6+6)/(5 log25)= 1.45 以本研究第五題為例,說明 WHERE 查詢命令形式的計算:

第五題題目為:請找出年齡(AGE)為 35 歲、年資(SENIORITY)為 10 年且薪資

(SALARY)為 45000 員工的編號(E_ID)

第五題答案:SELECT E_ID FROM EMPLOYEE

WHERE AGE=35 and SENIORITY=10 and SALARY=45000;

運算子與運算元分類結果:

運算子 數量 運算元 數量

SELECT 1 E_ID 1

FROM 1 EMPLOYEE 1

WHERE 1 AGE 1

= 3 35 1

; 1 SENIORITY 1

and 2 10 1

SALARY 1

45000 1

(31)

n1=6 n2=8

N1=9 N2=8

D=(6+1 ∗ 9) log2(8+8)/(5 log25)= 5.17 以本研究第八題為例,說明 JOIN 查詢命令形式的計算:

第八題題目為:請找出所有員工的姓名(E_NAME)與工作部門位於的城市(CITY)

第八題答案:SELECT E_NAME, CITY

FROM (EMPLOYEE JOIN DEPARTMENT USING (D_ID)) JOIN LOCATIONS USING (LOCATION_ID)

運算子與運算元分類結果:

運算子 數量 運算元 數量

SELECT 1 E_NAME 1

, 1 CITY 1

FROM 1 EMPLOYEE 1

() 3 DEPARTMENT 1

JOIN 2 D_ID 1

USING 2 LOCATIONS 1

; 1 LOCATION_ID 1

𝑛=7 𝑛2=7

𝑁1=11

𝑁2=7

D=(7+1.7 ∗ 11) log2(7+7)/(5 log25)= 8.42 以本研究第十一題為例,說明 SUB QUERY 查詢命令形式的計算:

第十一題題目為:請找出薪資(SALARY)高於員工編號(E_ID)0102 員工的姓名

(E_NAME)及薪資(SALARY)

第十一題答案:SELECT E_NAME, SALARY FROM EMPLOYEE

WHERE SALARY > (SELECT SALARY FROM EMPLOYEE WHERE E_ID=0102);

(32)

運算子與運算元分類結果:

運算子 數量 運算元 數量

SELECT 2 E_NAME 1

, 1 SALARY 3

FROM 2 EMPLOYEE 2

WHERE 2 E_ID 1

> 1 0102 1

( ) 1

= 1

; 1

𝑛=8 𝑛2=5

𝑁1=11

𝑁2=8 D=(8+1 ∗ 11) log2(5+8)/(5 log25)= 6.06

3-5 研究對象

本研究是探究衡量 SQL 語法複雜度方法的正確性,因此受測者必須接受過撰寫 SQL 語法的訓練,並且了解實體關係模型與關聯式資料模型。本研究共找了 100 位 接受過撰寫 SQL 語法的受測者進行測驗,其中共有 19 位中華大學碩士專班學生(以 下簡稱群組 B)接受過撰寫 SQL 語法訓練或工作上可能有實際操作經驗,其餘 81 位 則為大學部學生,其中 26 位是台灣科技大學學生(以下簡稱群組 A)是受過兩學期 撰寫 SQL 語法訓練課程的學生,另外 55 位則為中華大學二年級學生(以下簡稱群組 C)是受過一學期 SQL 語法訓練的學生。

Campbell ( 1988 )提 到任務 複雜 度分 為兩 種,主 觀任 務複 雜度 ( Subjective complexity)與客觀任務複雜度(Objective complexity),主觀任務複雜度較易受到個 人經驗及能力的影響,因此不同的人對同樣的任務可能會感受到不一樣的主觀任務複 雜度,而客觀任務則較不易受影響,因此本研究希望檢視各衡量方法是否在三個接受 過不同程度訓練的受測者群組中,都能有效的衡量受測者實際的 SQL 查詢敘述任務 複雜度的感受。

(33)

3-6 資料分析

本研究所進行的資料分析包含「題組內資料分析」、「題組間資料分析」以及「序 列資料分析」。在題組內資料分析中,探討同一運算子在運算元數量變化時對任務複 雜度的影響,在題組間資料分析中,探討不同運算子在運算元數量固定時對任務複雜 度的影響。根據研究題目設計,題目共分為 4 個題組,各題組內運算子不變,只做運 算元數量的變化,題組內分析主要就是在觀察固定運算子的情況下,運算元數量對於 SQL 查詢命令任務複雜度的影響;題組間資料分析,則是選擇不同題組間,使用相 同數量運算元的題目來做分析,觀察固定運算元數量的情況下,運算子對於 SQL 查 詢命令任務複雜度的影響。序列資料分析則是利用整理完受測者作答資料後所產生的 時間基本序列、信心度基本序列與正確率基本序列與 Halstead 序列、運算子權重序列 與 Enhanced Halstead 序列做比較分析。在序列資料分析中使用順序理論(Order theory)

定義順序維度(Order degree)進行序列資料分析,順序維度將在下一小節做詳細介 紹。

3-6-1 順序維度

為了定義順序維度,本論文首先定義基準序列 Sq為一個偏序集合(Q+, ≤q)(Partial ordered set),Q+為基準序列 Sq中所有題目題號的集合,而≤q是一個在 Q+上定義的二 元關連(binary relation)。對於任意兩個在 Q+中題目的題號,在≤q中的值組(qi, qj表示在基準序列 Sq中題目 qi在題目 qj之前。接著本研究定義 Halstead 序列、運算子 權重序列以及延伸式 Halstead 序列為測試序列。令測試序列 St為一個偏序集合(Q+,

t),其中 T+為測試序列 St中所有題目題號的集合,而≤t是一個在 Q+上定義的二元 關連。對於任意兩個在 Q+中題目的題號,在≤t 中的值組(ti, tj)表示在測試序列 St

中題目 ti在題目 tj之前。根據以上的定義,本研究定義順序維度 R 為

q t

R q

= ≤

例子:假設本研究使用三個撰寫 SQL 敘述的題目(題號分別為 1, 2, 3)進行實驗,

在實驗完成之後發現受測者回答此三個問題的依其正確率高低的題號排列的基準序 列 Sq為 q1 ≤ q2 ≤ q3。此三個撰寫 SQL 敘述的題目使用 Halstead 方法進行複雜度衡 量依其獲得的任務複雜度高低的題號排列的測試序列為 q2≤ q1≤ q3。因此,基準序 列 Sq的偏序集合為(Q+, ≤q),其中 Q+為{q1, q2, q3},≤q為{(q1, q2), (q1, q3), (q2,

(34)

q3)}。而測試序列 St的偏序集合為(Q+, ≤t),其中 Q+為{q2, q1, q3},≤t為{(q2, q1),

(q1, q3), (q2, q3)}。根據上述的定義

| ≤q−≤t |=|{(q1, q2), (q1, q3), ( q2, q3)}-{(q2, q1), (q1, q3), ( q2, q3)}|

=|{(q1, q2)}|=1

| ≤q|=|{(q1, q2), (q1, q3), ( q2, q3)}|=3 則順序維度 R 為:

R =| ≤q−≤t |

| ≤q | = 1

3=0.33

因此當順序維度 R 值越大時,代表兩個序列間排序的相異的排序越多,順序維度 R 值越小則代表兩個排序間相異的排序越少。

(35)

第四章 資料分析結果與討論

本研究使用實驗所取得的資料進行資料分析。資料分析包含題組資料分析、題組 間資料分析以及使用順序維度進行的順序分析。同題組資料分析探討 SQL 語法中不 同數量的運算元在相同運算子時任務複雜度是否有所差別。題組間資料分析利用不同 題組間相同運算元數量的題目探討 SQL 語法中不同運算子間任務複雜度的關係,最 後利用順序維度進行的順序維度分析,分析運算子權重法、Halstead 及延伸 Halstead 三個方法與實際資料的排序差異程度,藉此找出哪些方法可以有效的衡量撰寫 SQL 敘述的任務複雜度。

4-1 題組資料分析

利用題組設計,分析同題組中相同運算子搭配不同數量運算元時,受測者在使用 者績效、時間及信心度的變化,這樣的方式可以詳細的解釋 SQL 語法中不同數量的 運算元在相同運算子時任務複雜度的變化。

4-1-1 題組內平均分數分析

本研究參考 Borthick 等學者(2001)建議的方法進行受測結果的正確性的評定。

評定方式以分數呈現,在評定過中,每個實驗題目的滿分為 10 分,結果中每發現一 個微觀錯誤(Micro Errors)扣 2.5 分,一個巨觀錯誤(Macro Errors)則扣 10 分,直 至分數扣完為止。以下將三個不同群組(群組 A:26 位是台灣科技大學學生,受過 兩學期撰寫 SQL 訓練課程、群組 B:19 位中華大學碩士專班學生,接受過撰寫 SQL 語法訓練或工作上可能有實際操作經驗、群組 C:55 位則為中華大學二年級學生,

受過一學期 SQL 訓練)。受測者的資料整理後如圖 4-1,由圖 4-1 可以看到在 SELECT 題組中使用者對於不同運算元數目時平均分數的變動。基於任務複雜度的學理,使用 者在運算元數目越多時,平均分數應該要越低,因為 SQL 語法的任務複雜度提升,

使用者的查詢績效應下降。但是此一現象在 SELECT 題組時表現並不明顯,然而在 WHERE 題組(圖 4-2)、JOIN 題組(圖 4-3)及 SUB QUERY 題組(圖 4-4)中都可 以明顯的觀察到,隨著運算元的數量增加,使用者的查詢績效越來越低,可以證實查 詢敘述中運算元的多寡,對使用者的查詢績效有著一定程度的影響。因此,運算子權 重法衡量 SQL 查詢複雜度方法中,只考慮 SQL 語法中運算子的衡量方法是有誤的。

(36)

圖 4-1 SELECT 題組平均分數

圖 4-2 WHERE 題組平均分數

圖 4-3 JOIN 題組平均分數 0.00

1.00 2.00 3.00 4.00 5.00 6.00 7.00 8.00 9.00 10.00

1 2 3

平均分數

題號

群組A 群組B 群組C

0.00 1.00 2.00 3.00 4.00 5.00 6.00 7.00 8.00 9.00 10.00

4 5 6

平均分數

題號

群組A 群組B 群組C

0.00 1.00 2.00 3.00 4.00 5.00 6.00 7.00 8.00 9.00 10.00

7 8 9 10

平均分數

題號

群組A 群組B 群組C

(37)

圖 4-4 SUB QUERY 題組平均分數

4-1-2 題組內平均作答時間分析

在本研究的實驗中,受測者登入測驗網站作答時,測驗系統將自動紀錄作答時間。

在實驗完成之後,測驗系統也自動計算每位受測者的平均做答時間。以下將三個不同 群組的受測者的作答時間資料整理後進行分析。在 SELECT 題組(圖 4-5)、WHERE 題組(圖 4-6)及 SUB QUERY 題組(圖 4-8)皆可以看到群組 A(台科大)與群組 C

(中華大二)這兩個群組的受測者在作答題組最後一題時,所花費的時間都比題組內 第一題的時間來得長,可以解釋當資訊檢索越多,使用者必須花費越多的時間來處理 這些資訊,但 JOIN 題組(圖 4-7)在此觀點的表現並不明顯。

群組B在這四個題組的平均時間線型與群組 A、B 所表現的時間線型完全不同,

原因可能與受測者做答習慣與實驗題目設計有關,在圖 4-5 與圖 4-6 可以很明顯的觀 察到群組B的受測者在題組內第一題花費較多的時間,由實驗過程中的觀察得知群組 B的受測者在作答前會較仔細的去查看整個作答的環境,包括題目的實體關係模型與 關連式資料模型,而研究題目設計的方式為題組內第一題運算元最少之後的題目陸續 疊加,導致題組內最後一題的答案會是前面題目答案的綜合,因此當環境熟悉後,會 加快作答速度,此一原因也是導致 JOIN 題組時間曲線不符的原因。

0.00 1.00 2.00 3.00 4.00 5.00 6.00 7.00 8.00 9.00 10.00

11 12

平均分數

題號

群組A 群組B 群組C

(38)

圖 4-5 SELECT 題組平均作答時間

圖 4-6 WHERE 題組平均時間

圖 4-7 JOIN 題組平均作答時間 00:00:00

00:00:43 00:01:26 00:02:10 00:02:53 00:03:36 00:04:19 00:05:02 00:05:46

1 2 3

平均時間

題號

群組A 群組B 群組C

00:00:00 00:00:43 00:01:26 00:02:10 00:02:53 00:03:36 00:04:19 00:05:02 00:05:46 00:06:29

4 5 6

平均時間

題號

群組A 群組B 群組C

00:00:00 00:00:43 00:01:26 00:02:10 00:02:53 00:03:36 00:04:19 00:05:02 00:05:46 00:06:29

7 8 9 10

平均時間

題號

群組A 群組B 群組C

(39)

圖 4-8 SUB QUERY 題組平均作答時間

4-1-3 題組內平均信心度分析

受測者在作答結束後,測驗系統會要求受測者填寫對此題答案的信心度,最高為 5,最低為 1,分數越高,代表受測者對於本題答案正確的信心越強。本研究完成各 群組對於每題的平均信心度後,將三個不同群組的受測者資料整理如下圖 4-9、圖 4-10、

圖 4-11 及圖 4-12 後做比較。

信心度方面根據研究題目設計,題組中最後一題,信心度應該要比第一題信心度 低,但在各題組中表現的都不是很明顯,本研究認為應該是受到受測者在填寫信心度 時較為保守,以及實驗題目設計的關係,因題組中答案太過相似,因此會產生像圖 4-9 受測者對於題組內每一題的信心度皆相似的情況。

圖 4-9 SELECT 題組平均信心度 00:00:00

00:00:43 00:01:26 00:02:10 00:02:53 00:03:36 00:04:19 00:05:02 00:05:46 00:06:29

11 12

平均時間

題號

群組A 群組B 群組C

0.00 1.00 2.00 3.00 4.00 5.00

1 2 3

平均信心度

題號

群組A 群組B 群組C

(40)

圖 4-10 WHERE 題組平均信心度

圖 4-11 JOIN 題組平均信心度

圖 4-12 SUB QUERY 題組平均信心度 0.00

1.00 2.00 3.00 4.00 5.00

4 5 6

平均信心度

題號

群組A 群組B 群組C

0.00 1.00 2.00 3.00 4.00 5.00

7 8 9 10

平均信心度

題號

群組A 群組B 群組C

0.00 1.00 2.00 3.00 4.00 5.00

11 12

平均信心度

題號

群組A 群組B 群組C

(41)

4-1-4 題組內各衡量方法數值分析

根據各題組平均分數分析的結果,本研究的實驗題目能夠有效衡量撰寫 SQL 查 詢敘述的任務複雜度。根據學理,查詢績效應隨著運算元的增加而下降,代表任務複 雜度上升,所以衡量方法計算出的數值,應隨著題組內運算元的增加而增加。圖 4-13、

圖 4-14 及圖 4-16 可以看到運算子權重法在題組內所算的數值皆相同,無法明顯的表 現出運算元在 SQL 查詢任務中對任務複雜度的影響;Halstead 及 Enhanced Halstead 方法則符合題組平均分數圖的走向,隨著運算元的增加所計算的數值皆會上升。

圖 4-13 SELECT 題組各衡量方法數值

圖 4-14 WHERE 題組各衡量方法數值 0

2 4 6 8 10 12 14

1 2 3

數值

題號

Halstead 運算子權重法 Enhanced Halstead

0 2 4 6 8 10 12

4 5 6

數值

題號

Halstead 運算子權重法 Enhanced Halstead

(42)

圖 4-15 JOIN 題組各衡量方法數值

圖 4-16 SUB QUERY 題組各衡量方法數值

4-2 題組間資料分析

同題組資料分析,主要目的是為了瞭解運算元對於 SQL 查詢敘述任務複雜度的 影響,而;作答時間因受上述因素影響,本節將不做時間因素的分析。

本節所進行的題組間資料分析將同樣數量運算元的題目群組為同一分析群組,主 要目的是要了解運算子對於 SQL 查詢敘述複雜度是否具有影響力。因此資料分析將 依照題目運算元的數量進行,第一組為第 1、4 及 11 題同為使用 1 個運算元的題目,

第二組為第 7 及 12 題同為使用 2 個運算元的題目,第三組為第 5 及 8 題同為使用 3 個運算元的題目,最後為第 2、6 及 10 題為一組,同為使用 5 個運算元的題目,以下 將按照上述分析分組順序進行分析。

0 10 20 30 40 50 60 70 80

7 8 9 10

數值

題號

Halstead 運算子權重法 Enhanced Halstead

0 5 10 15 20 25 30 35 40

11 12

數值

題號

Halstead 運算子權重法 Enhanced Halstead

(43)

4-2-1 題組間平均分數分析

圖 4-17 為 SELECT、WHERE 和 SUB QUERY 同為一個運算元時三個群組的平 均分數圖,圖 4-18 為 JOIN 與 SUB QUERY 同為兩個運算元時三個群組的平均分數圖,

圖 4-19 為 WHERE 與 JOIN 同為三個運算元時三個群組的平均分數圖,圖 4-20 為 SELECT、WHERE 與 JOIN 同為五個運算元時三個群組的平均分數圖。在上列圖中 本研究觀察到群組 A、B 與 C 在不同題目中,平均分數皆不相同。不論是使用的運算 元多或少,都可以看到運算子對於使用者績效都存在著一定的影響。以圖 4-20 而言,

SELECT 與 JOIN 同樣使用 5 個運算元,但受測者的查詢績效卻相距非常大,不論是 哪一個群組,JOIN 的平均分數,皆比 SELECT 時來得低。

圖 4-17 1 運算元題目平均分數

圖 4-18 2 運算元題目平均分數 0.00

1.00 2.00 3.00 4.00 5.00 6.00 7.00 8.00 9.00 10.00

1 4 11

平均分數

題號

群組A 群組B 群組C

0.00 1.00 2.00 3.00 4.00 5.00 6.00 7.00 8.00 9.00 10.00

7 12

平均分數

題號

群組A 群組B 群組C

參考文獻

相關文件

For pedagogical purposes, let us start consideration from a simple one-dimensional (1D) system, where electrons are confined to a chain parallel to the x axis. As it is well known

The observed small neutrino masses strongly suggest the presence of super heavy Majorana neutrinos N. Out-of-thermal equilibrium processes may be easily realized around the

incapable to extract any quantities from QCD, nor to tackle the most interesting physics, namely, the spontaneously chiral symmetry breaking and the color confinement.. 

(1) Determine a hypersurface on which matching condition is given.. (2) Determine a

• Formation of massive primordial stars as origin of objects in the early universe. • Supernova explosions might be visible to the most

The difference resulted from the co- existence of two kinds of words in Buddhist scriptures a foreign words in which di- syllabic words are dominant, and most of them are the

(Another example of close harmony is the four-bar unaccompanied vocal introduction to “Paperback Writer”, a somewhat later Beatles song.) Overall, Lennon’s and McCartney’s

DVDs, Podcasts, language teaching software, video games, and even foreign- language music and music videos can provide positive and fun associations with the language for