複製鏈接
請複製以下鏈接發送給好友

數據庫程序

鎖定
數據庫是指長期存儲在計算機內有組織的、可共享的數據集合。數據庫中的數據按一定的數據模型組織、描述和存儲,具有較小的冗餘度、較高的數據獨立性和易擴展性,並可為各種用户共享。數據庫程序是指管理數據庫,以及對數據進行操作的程序。數據庫程序一般可以分為庫函數和自定義程序。
中文名
數據庫程序
外文名
Database Program
學    科
計算機
定    義
對數據進行操作的程序
有關術語
數據庫
領    域
數據庫

數據庫程序介紹

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

數據庫程序範圍

當前,數據庫研究的範圍有以下三個領域。
數據庫管理系統軟件的研製
數據庫管理系統(DBMS)是數據庫系統的基礎。DBMS的研製包括研製DBMS本身及以DBMS為核心的一組相互聯繫的軟件系統。研製的目標是擴大功能、提高性能和提高用户的生產率。
數據庫設計的主要任務是在DBMS的支持下,按照應用的要求,為某一部門或組織設計一個結構合理、使用方便、效率較高的數據庫及其應用系統。其中主要的研究方向包括數據庫設計方法、設計工具和設計理論的研究,數據模型和數據建模的研究,計算機輔助數據庫設計方法及其軟件系統的研究,數據庫設計規範和標準的研究等 [1] 
數據庫理論
數據庫理論的研究主要集中於關係的規範化理論、關係數據理論等。近年來,隨着人工智能與數據庫理論的結合及並行計算機的發展,數據庫邏輯演繹和知識推理、並行算法等理論研究,以及演繹數據庫系統、知識庫系統和數據倉庫的研製都已成為新的研究方向。

數據庫程序庫函數

庫函數(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. 釋放資源:成功執行語句並處理結果後需要釋放客户端與服務器端的資源,讓其他應用程序使用 [2] 
參考資料
  • 1.    陳國震,吳菁.21世紀高職高專規劃教材 網絡數據庫[M].清華大學出版社,2005年03月第1版.
  • 2.    (美)克蘭(Kline,K.E.),(美)克蘭(Kline,D.),(美)漢茨(Hunt,B.) 著.SQL技術手冊.南京:東南大學出版社.2008.第668-670頁.