資料庫程式

資料庫程式

資料庫是指長期存儲在計算機內有組織的、可共享的數據集合。資料庫中的數據按一定的數據模型組織、描述和存儲,具有較小的冗餘度、較高的數據獨立性和易擴展性,並可為各種用戶共享。資料庫程式是指管理資料庫,以及對數據進行操作的程式。資料庫程式一般可以分為庫函式和自定義程式。

介紹

資料庫程式是指管理資料庫,以及對數據進行操作的程式。資料庫程式設計方向一般與資料庫研究領域有關,不同領域資料庫程式實現功能的側重點不同。資料庫程式設計步驟和程式設計步驟差不多:(1) 確定要解決的問題。根據問題所提出的要求,首先弄清要輸入、輸出的信息。(2)算法設計。選擇解決問題的算法,即考慮對數據進行一些什麼基本操作及處理這些操作的合適的順序。(3)框圖設計或模組設計。(4)編寫程式。根據已選定的算法用某種語言寫出實現此算法的完整程式。(5)檢驗、調試,這個過程要反覆進行,直至程式完全正確。(6)編寫程式使用說明書。

範圍

當前,資料庫研究的範圍有以下三個領域。

資料庫管理系統軟體的研製

資料庫管理系統(DBMS)是資料庫系統的基礎。DBMS的研製包括研製DBMS本身及以DBMS為核心的一組相互聯繫的軟體系統。研製的目標是擴大功能、提高性能和提高用戶的生產率。

資料庫設計

資料庫設計的主要任務是在DBMS的支持下,按照套用的要求,為某一部門或組織設計一個結構合理、使用方便、效率較高的資料庫及其套用系統。其中主要的研究方向包括資料庫設計方法、設計工具和設計理論的研究,數據模型和數據建模的研究,計算機輔助資料庫設計方法及其軟體系統的研究,資料庫設計規範和標準的研究等 。

資料庫理論

資料庫理論的研究主要集中於關係的規範化理論、關係數據理論等。近年來,隨著人工智慧與資料庫理論的結合及並行計算機的發展,資料庫邏輯演繹和知識推理、並行算法等理論研究,以及演繹資料庫系統、知識庫系統和數據倉庫的研製都已成為新的研究方向。

庫函式

庫函式(Library function)是把函式放到庫里,供別人使用的一種方式。.方法是把一些常用到的函式編完放到一個檔案里,供不同的人進行調用。調用的時候把它所在的檔案名稱用#include<>加到裡面就可以了。一般是放到lib檔案里的。常見庫函式如下(註:例子使用的是SQL語言):

AVG 返回指定組中的平均值,空值被忽略。

例:select prd_no,avg(qty) from sales group by prd_no2. COUNT 返回指定組中項目的數量。

例:select count(prd_no) from sales3. MAX 返回指定數據的最大值。例:select prd_no,max(qty) from sales group by prd_no4. MIN 返回指定數據的最小值。

例:select prd_no,min(qty) from sales group by prd_no5. SUM 返回指定數據的和,只能用於數字列,空值被忽略。例:select prd_no,sum(qty) from sales group by prd_no6. COUNT_BIG 返回指定組中的項目數量,與COUNT函式不同的是COUNT_BIG返回bigint值,而COUNT返回的是int值。

例:select count_big(prd_no) from sales7. GROUPING 產生一個附加的列,當用CUBE或ROLLUP運算符添加行時,輸出值為1.當所添加的行不是由CUBE或ROLLUP產生時,輸出值為0。

例:select prd_no,sum(qty),grouping(prd_no) from sales group by prd_no with rollup8. BINARY_CHECKSUM 返回對表中的行或表達式列表計算的二進制校驗值,用於檢測表中行的更改。

例:select prd_no,binary_checksum(qty) from sales group by prd_no9. CHECKSUM_AGG 返回指定數據的校驗值,空值被忽略。

例:select prd_no,checksum_agg(binary_checksum(*)) from sales group by prd_no10. CHECKSUM 返回在表的行上或在表達式列表上計算的校驗值,用於生成哈希索引。

STDEV 返回給定表達式中所有值的統計標準偏差。

例:select stdev(prd_no) from sales12. STDEVP 返回給定表達式中的所有值的填充統計標準偏差。

例:select stdevp(prd_no) from sales13. VAR 返回給定表達式中所有值的統計方差。

例:select var(prd_no) from sales14. VARP 返回給定表達式中所有值的填充的統計方差。

例:select varp(prd_no) from sales有時候以上的聚合函式並不能符合我們數據處理的要求,我們也可以自定義聚合函式,來得到我們想要的結果。

設計概要

開發成功的資料庫應用程式,不分大小,都牽涉到好幾個步驟。需要仔細思考應用程式的結構,尤其是以下幾點:

如何將應用程式數據 (通常是面向對象的) 映射至關係資料庫

如何巧妙處理錯誤

如何提升性能與可伸縮性

一般資料庫應用程式需要許多不同的SQL語句。由於SQL語句在應用程式內大致採用 相同執行模式,才得以簡化眾多語句的管理。圖1顯示與關係資料庫系統互動時,數 據庫應用程式是如何準備、執行,然後處理SQL語句。狀態圖分成11個步驟,其中有 4個步驟為選擇性的。

以下是圖1所示各步驟的詳細說明:

1. 建立連線:每個成功資料庫應用程式的第一步都是建立連線。客戶端(即資料庫應用程式)在這個步驟中實際連上資料庫,傳輸SQL語句至資料庫並把結果返回至 客戶端。與客戶端的物理連線可以通過LAN、WAN建立,甚至當資料庫應用程式與伺服器都在同一台機器上運行時,也可以通過簡單的邏輯連線回到客戶端。有關連線建立的詳細信息,請參閱本章稍後的 “打開資料庫連線”。

2. 開始事務(選擇性的):事務開始,使資料庫改變失敗時可以回滾或在改變成功時可以提交。有關資料庫程式設計API的事務控制,請參閱本章稍後的“管理事務”。

3. 建立語句對象:大部分先進的資料庫程式設計API都採取面向對象式,以對象表示 SQL語句。通常應用程式內執行的每個SQL語句各有一個語句對象。語句對象內有執行所需的狀態信息,例如SQL語句本身及輸入參數。

4. 使SQL與語句對象產生關聯:創建語句對象後,需要為對象指派SQL語句。完成後,即可執行語句對象。

5. 綁定輸入參數 (選擇性的):把參數綁定至SQL語句內的占位符(placeholder)的 功能雖不屬於ANSI SQL標準,但本書所收錄的平台都有這項功能。如果SQL語 句包含輸入參數的占位符,語句對象就需要與各輸入參數相關的程式變數。如果 SQL語句並不包含輸入參數,則可略過此步驟。當相同的SQL語句重複執行數次 時,輸入參數有助於提升性能,因為伺服器只需在第一次執行前解析語句。另一個使用參數的理由,是要在SQL語句中 (如INSERT與UPDATE語句) 嵌入二進制 數據,例如BLOB數據。

6. 執行語句對象: 以SQL語句成功創建並初始化語句對象後,即可執行該對象。此 步驟在資料庫伺服器上執行SQL語句。

7. 處理結果(選擇性的): 資料庫伺服器返回結果集後,應用程式即可處理結果。此 步驟是選擇性的,因為插入或更新數據的語句通常不需要此步驟。

8. 重新執行:若因執行失敗或在輸入參數內輸入不同數據值而需要重複執行相同語句 時,應用程式便重返步驟6。如果應用程式不需要重複執行相同的語句,則進行步 驟9。

9. 執行另一個SQL語句:如果應用程式需要執行不同的SQL語句並重複使用語句對 象,則應用程式可回到步驟4; 如果不是,則進行步驟10。

10. 結束事務 (選擇性的): 假設事務於步驟2開始,現在便是提交或回滾事務的時候 了。如果回滾事務,則語句對象對資料庫所做的一切改變都會從資料庫中被移除。

11. 釋放資源:成功執行語句並處理結果後需要釋放客戶端與伺服器端的資源,讓其他應用程式使用 。

相關詞條

相關搜尋

熱門詞條

聯絡我們