管理系統資料庫的實現
『壹』 資料庫系統實現的目錄
出版者的話
譯者序
譯者簡介
出版前言
第1章dbms系統概述
1.1資料庫系統的發展
1.1.1早期的資料庫管理系統
1.1.2關系資料庫系統
1.1.3越來越小的系統
1.1.4越來越大的系統
1.1.5信息集成
1.2資料庫管理系統概述
1.2.1數據定義語言命令
1.2.2查詢處理概述
1.2.3主存和緩沖區管理器
1.2.4事務處理
1.2.5查詢處理器
1.3本書概述
1.4資料庫模型和語言回顧
1.4.1關系模型回顧
.1.4.2sql回顧
1.5參考文獻
第一部分資料庫系統實現
第2章輔助存儲管理
2.1存儲器層次
2.1.1存儲器層次
2.1.2在存儲器層次間傳送數據
2.1.3易失和非易失存儲器
2.1.4虛擬存儲器
2.1.5習題
2.2磁碟
2.2.1磁碟結構
2.2.2磁碟控制器
2.2.3磁碟存取特性
2.2.4習題
2.3加速對輔助存儲器的訪問
2.3.1計算的i/o模型
2.3.2按柱面組織數據
2.3.3使用多個磁碟
2.3.4磁碟鏡像
2.3.5磁碟調度和電梯演算法
2.3.6預取和大規模緩沖
2.3.7習題
2.4磁碟故障
2.4.1間斷性故障
2.4.2校驗和
2.4.3穩定存儲
2.4.4穩定存儲的錯誤處理能力
2.4.5從磁碟崩潰中恢復
2.4.6作為冗餘技術的鏡像
2.4.7奇偶塊
2.4.8一種改進:raid 5
2.4.9多個盤崩潰時的處理
2.4.10習題
2.5組織磁碟上的數據
2.5.1定長記錄
2.5.2定長記錄在塊中的放置
2.5.3習題
2.6塊和記錄地址的表示
2.6.1客戶機-伺服器系統中的地址
2.6.2邏輯地址和結構地址
2.6.3指針混寫
2.6.4塊返回磁碟
2.6.5被釘住的記錄和塊
2.6.6習題
2.7變長數據和記錄
2.7.1具有變長欄位的記錄
2.7.2具有重復欄位的記錄
2.7.3可變格式的記錄
2.7.4不能裝入一個塊中的記錄
2.7.5blob
2.7.6列存儲
2.7.7習題
2.8記錄的修改
2.8.1插入
2.8.2刪除
2.8.3修改
2.8.4習題
2.9小結
2.10參考文獻
第3章索引結構
3.1索引結構基礎
3.1.1順序文件
3.1.2稠密索引
3.1.3稀疏索引
3.1.4多級索引
3.1.5輔助索引
3.1.6輔助索引的運用
3.1.7輔助索引中的間接
3.1.8文檔檢索和倒排索引
3.1.9習題
3.2b-樹
3.2.1b-樹的結構
3.2.2b-樹的應用
3.2.3b-樹的查找
3.2.4范圍查詢
3.2.5b-樹的插入
3.2.6b-樹的刪除
3.2.7b-樹的效率
3.2.8習題
3.3散列表
3.3.1輔存散列表
3.3.2散列表的插入
3.3.3散列表的刪除
3.3.4散列表索引的效率
3.3.5可擴展散列表
3.3.6可擴展散列表的插入
3.3.7線性散列表
3.3.8線性散列表的插入
3.3.9習題
3.4多維索引
3.4.1多維索引的應用
3.4.2利用傳統索引執行范圍查詢
3.4.3利用傳統索引執行最近鄰查詢
3.4.4多維索引結構綜述
3.5多維數據的散列結構
3.5.1網格文件
3.5.2網格文件的查找
3.5.3網格文件的插入
3.5.4網格文件的性能
3.5.5分段散列函數
3.5.6網格文件和分段散列的比較
3.5.7習題
3.6多維數據的樹結構
3.6.1多鍵索引
3.6.2多鍵索引的性能
3.6.3kd-樹
3.6.4kd-樹的操作
3.6.5使kd-樹適合輔助存儲器
3.6.6四叉樹
3.6.7r-樹
3.6.8r-樹的操作
3.6.9習題
3.7點陣圖索引
3.7.1點陣圖索引的動機
3.7.2壓縮點陣圖
3.7.3分段長度編碼位向量的操作
3.7.4點陣圖索引的管理
3.7.5習題
3.8小結
3.9參考文獻
第4章查詢執行
4.1物理查詢計劃操作符介紹
4.1.1掃描表
4.1.2掃描表時的排序
4.1.3物理操作符計算模型
4.1.4衡量代價的參數
4.1.5掃描操作符的i/o代價
4.1.6實現物理操作符的迭代器
4.2一趟演算法
4.2.1一次單個元組操作的一趟演算法
4.2.2整個關系的一元操作的一趟演算法
4.2.3二元操作的一趟演算法
4.2.4習題
4.3嵌套循環連接
4.3.1基於元組的嵌套循環連接
4.3.2基於元組的嵌套循環連接的迭代器
4.3.3基於塊的嵌套循環連接演算法
4.3.4嵌套循環連接的分析
4.3.5迄今為止的演算法的總結
4.3.6習題
4.4基於排序的兩趟演算法
4.4.1兩階段多路歸並排序
4.4.2利用排序去除重復
4.4.3利用排序進行分組和聚集
4.4.4基於排序的並演算法
4.4.5基於排序的交和差演算法
4.4.6基於排序的一個簡單的連接演算法
4.4.7簡單的排序連接的分析
4.4.8一種更有效的基於排序的連接
4.4.9基於排序的演算法的總結
4.4.10習題
4.5基於散列的兩趟演算法
4.5.1通過散列劃分關系
4.5.2基於散列的消除重復演算法
4.5.3基於散列的分組和聚集演算法
4.5.4基於散列的並、交、差演算法
4.5.5散列連接演算法
4.5.6節省一些磁碟i/o
4.5.7基於散列的演算法的總結
4.5.8習題
4.6基於索引的演算法
4.6.1聚簇和非聚簇索引
4.6.2基於索引的選擇
4.6.3使用索引的連接
4.6.4使用有序索引的連接
4.6.5習題
4.7緩沖區管理
4.7.1緩沖區管理結構
4.7.2緩沖區管理策略
4.7.3物理操作符選擇和緩沖區管理的關系
4.7.4習題
4.8使用超過兩趟的演算法
4.8.1基於排序的多趟演算法
4.8.2基於排序的多趟演算法的性能
4.8.3基於散列的多趟演算法
4.8.4基於散列的多趟演算法的性能
4.8.5習題
4.9小結
4.10參考文獻
第5章查詢編譯器
5.1語法分析和預處理
5.1.1語法分析與語法分析樹
5.1.2sql的一個簡單子集的語法
5.1.3預處理器
5.1.4預處理涉及視圖的查詢
5.1.5習題
5.2用於改進查詢計劃的代數定律
5.2.1交換律與結合律
5.2.2涉及選擇的定律
5.2.3下推選擇
5.2.4涉及投影的定律
5.2.5有關連接與積的定律
5.2.6有關消除重復的定律
5.2.7涉及分組與聚集的定律
5.2.8習題
5.3從語法分析樹到邏輯查詢計劃
5.3.1轉換成關系代數
5.3.2從條件中去除子查詢
5.3.3邏輯查詢計劃的改進
5.3.4可結合/可分配的運算符的分組
5.3.5習題
5.4運算代價的估計
5.4.1中間關系大小的估計
5.4.2投影運算大小的估計
5.4.3選擇運算大小的估計
5.4.4連接運算大小的估計
5.4.5多連接屬性的自然連接
5.4.6多個關系的連接
5.4.7其他運算大小的估計
5.4.8習題
5.5基於代價的計劃選擇介紹
5.5.1大小參數估計值的獲取
5.5.2統計量的計算
5.5.3減少邏輯查詢計劃代價的啟發式估計
5.5.4枚舉物理計劃的方法
5.5.5習題
5.6連接順序的選擇
5.6.1連接的左右參數的意義
5.6.2連接樹
5.6.3左深連接樹
5.6.4通過動態規劃來選擇連接順序和分組
5.6.5帶有更具體的代價函數的動態規劃
5.6.6選擇連接順序的貪婪演算法
5.6.7習題
5.7物理查詢計劃選擇的完成
5.7.1選取一個選擇方法
5.7.2選取連接方法
5.7.3流水操作與物化
5.7.4一元流水運算
5.7.5二元運算的流水操作
5.7.6物理查詢計劃的符號
5.7.7物理運算的排序
5.7.8習題
5.8小結
5.9參考文獻
第6章系統故障對策
6.1可恢復操作的問題和模型
6.1.1故障模式
6.1.2關於事務的進一步討論
6.1.3事務的正確執行
6.1.4事務的原語操作
6.1.5習題
6.2undo日誌
6.2.1日誌記錄
6.2.2undo日誌規則
6.2.3使用undo日誌的恢復
6.2.4檢查點
6.2.5非靜止檢查點
6.2.6習題
6.3redo日誌
6.3.1redo日誌規則
6.3.2使用redo日誌的恢復
6.3.3redo日誌的檢查點
6.3.4使用帶檢查點redo日誌的恢復
6.3.5習題
6.4undo/redo日誌
6.4.1undo/redo規則
6.4.2使用undo/redo日誌的恢復
6.4.3undo/redo日誌的檢查點
6.4.4習題
6.5針對介質故障的防護
6.5.1備份
6.5.2非靜止轉儲
6.5.3使用備份和日誌的恢復
6.5.4習題
6.6小結
6.7參考文獻
第7章並發控制
7.1串列調度和可串列化調度
7.1.1調度
7.1.2串列調度
7.1.3可串列化調度
7.1.4事務語義的影響
7.1.5事務和調度的一種記法
7.1.6習題
7.2沖突可串列化
7.2.1沖突
7.2.2優先圖及沖突可串列化判斷
7.2.3優先圖測試發揮作用的原因
7.2.4習題
7.3使用鎖的可串列化實現
7.3.1鎖
7.3.2封鎖調度器
7.3.3兩階段封鎖
7.3.4兩階段封鎖發揮作用的原因
7.3.5習題
7.4有多種鎖模式的封鎖系統
7.4.1共享鎖與排他鎖
7.4.2相容性矩陣
7.4.3鎖的升級
7.4.4更新鎖
7.4.5增量鎖
7.4.6習題
7.5封鎖調度器的一種體系結構
7.5.1插入鎖動作的調度器
7.5.2鎖表
7.5.3習題
7.6資料庫元素的層次
7.6.1多粒度的鎖
7.6.2警示鎖
7.6.3幻象與插入的正確處理
7.6.4習題
7.7樹協議
7.7.1基於樹的封鎖的動機
7.7.2訪問樹結構數據的規則
7.7.3樹協議發揮作用的原因
7.7.4習題
7.8使用時間戳的並發控制
7.8.1時間戳
7.8.2事實上不可實現的行為
7.8.3臟數據的問題
7.8.4基於時間戳調度的規則
7.8.5多版本時間戳
7.8.6時間戳與封鎖
7.8.7習題
7.9使用有效性確認的並發控制
7.9.1基於有效性確認調度器的結構
7.9.2有效性確認規則
7.9.3三種並發控制機制的比較
7.9.4習題
7.10小結
7.11參考文獻
第8章再論事務管理
8.1可串列性和可恢復性
8.1.1臟數據問題
8.1.2級聯回滾
8.1.3可恢復的調度
8.1.4避免級聯回滾的調度
8.1.5基於鎖對回滾的管理
8.1.6成組提交
8.1.7邏輯日誌
8.1.8從邏輯日誌中恢復
8.1.9習題
8.2死鎖
8.2.1超時死鎖檢測
8.2.2等待圖
8.2.3通過元素排序預防死鎖
8.2.4通過時間戳檢測死鎖
8.2.5死鎖管理方法的比較
8.2.6習題
8.3長事務
8.3.1長事務的問題
8.3.2saga(系列記載)
8.3.3補償事務
8.3.4補償事務發揮作用的原因
8.3.5習題
8.4小結
8.5參考文獻
第9章並行與分布式資料庫
9.1關系的並行演算法
9.1.1並行模型
9.1.2一次一個元組的操作的並行
9.1.3整個關系的操作的並行演算法
9.1.4並行演算法的性能
9.1.5習題
9.2map?rece並行架構
9.2.1存儲模式
9.2.2映射函數
9.2.3歸約函數
9.2.4習題
9.3分布式資料庫
9.3.1數據的分布
9.3.2分布式事務
9.3.3數據復制
9.3.4習題
9.4分布式查詢處理
9.4.1分布式連接操作問題
9.4.2半連接化簡
9.4.3多個關系的連接
9.4.4非循環超圖
9.4.5非循環超圖的完全化簡
9.4.6為什麼完全化簡演算法有效
9.4.7習題
9.5分布式提交
9.5.1支持分布式原子性
9.5.2兩階段提交
9.5.3分布式事務的恢復
9.5.4習題
9.6分布式封鎖
9.6.1集中封鎖系統
9.6.2分布式封鎖演算法的代價模型
9.6.3封鎖多副本的元素
9.6.4主副本封鎖
9.6.5局部鎖構成的全局鎖
9.6.6習題
9.7對等分布式查找
9.7.1對等網路
9.7.2分布式散列問題
9.7.3分布式散列的集中式解決方案
9.7.4帶弦的圓
9.7.5帶弦的圓上的鏈接
9.7.6使用手指表查找
9.7.7加入新結點
9.7.8當一個端離開網路
9.7.9當一個端崩潰了
9.7.10習題
9.8小結
9.9參考文獻
第二部分現代資料庫系統專題
第10章信息集成
10.1信息集成介紹
10.1.1為什麼要進行信息集成
10.1.2異質性問題
10.2信息集成的方式
10.2.1聯邦資料庫系統
10.2.2數據倉庫
10.2.3mediator
10.2.4習題
10.3基於mediator的系統中的包裝器
10.3.1查詢模式的模板
10.3.2包裝器生成器
10.3.3過濾器
10.3.4包裝器上的其他操作
10.3.5習題
10.4基於能力的優化
10.4.1有限的數據源能力問題
10.4.2描述數據源能力的記號
10.4.3基於能力的查詢計劃選擇
10.4.4加入基於成本的優化
10.4.5習題
10.5優化mediator查詢
10.5.1簡化的修飾符記號
10.5.2獲得子目標的回答
10.5.3chain演算法
10.5.4在mediator上結合並視圖
10.5.5習題
10.6以局部作為視圖的mediator
10.6.1lav mediator的動機
10.6.2lav mediator的術語
10.6.3擴展解決方案
10.6.4合取查詢的包含
10.6.5為什麼包含映射測試有效
10.6.6發現mediator查詢的解決方法
10.6.7為什麼lmss定理能成立
10.6.8習題
10.7實體解析
10.7.1決定是否記錄代表一個共同實體
10.7.2合並相似記錄
10.7.3相似性和合並函數的有用性質
10.7.4icar記錄的r?swoosh演算法
10.7.5為什麼r?swoosh演算法會有效
10.7.6實體解析的其他方法
10.7.7習題
10.8小結
10.9參考文獻
第11章數據挖掘
11.1頻繁項集挖掘
11.1.1市場-購物籃模型
11.1.2基本定義
11.1.3關聯規則
11.1.4頻繁項集的計算模型
11.1.5習題
11.2發現頻繁項集的演算法
11.2.1頻繁項集的分布
11.2.2尋找頻繁項集的樸素演算法
11.2.3a?priori演算法
11.2.4a?priori演算法的實現
11.2.5更好地使用主存
11.2.6何時使用pcy演算法
11.2.7多級演算法
11.2.8習題
11.3發現近似的商品
11.3.1相似度的jaccard度量
11.3.2jaccard相似度的應用
11.3.3最小散列
11.3.4最小散列與jaccard相似度
11.3.5為什麼能用最小散列估計相似度
11.3.6最小散列的實現
11.3.7習題
11.4局部敏感散列
11.4.1lsh實例:實體分辨
11.4.2標簽的局部敏感散列
11.4.3最小散列法和局部敏感散列的結合
11.4.4習題
11.5大規模數據的聚簇
11.5.1聚簇的應用
11.5.2距離的定義
11.5.3凝聚式聚簇
11.5.4k?means演算法
11.5.5大規模數據的k?means方法
11.5.6內存中滿載點後的處理過程
11.5.7習題
11.6小結
11.7參考文獻
第12章資料庫系統與互聯網
12.1搜索引擎體系結構
12.1.1搜索引擎的組成
12.1.2web爬蟲
12.1.3搜索引擎中的查詢處理
12.1.4對網頁進行排名
12.2用於識別重要網頁的pagerank
12.2.1pagerank的直觀思想
12.2.2pagerank的遞歸公式——初步嘗試
12.2.3爬蟲陷阱和死角
12.2.4考慮爬蟲陷阱和死角的pagerank
12.2.5習題
12.3特定主題的pagerank
12.3.1「遠距離移動」集
12.3.2計算主題相關的pagerank
12.3.3鏈接作弊
12.3.4主題相關的pagerank和鏈接作弊
12.3.5習題
12.4數據流
12.4.1數據流管理系統
12.4.2數據流應用
12.4.3數據流數據模型
12.4.4數據流轉換為關系
12.4.5關系轉換為數據流
12.4.6習題
12.5數據流挖掘
12.5.1動機
12.5.2統計二進制位數
12.5.3統計不同元素的個數
12.5.4習題
12.6小結
12.7參考文獻
『貳』 資料庫管理系統能實現對資料庫中數據的查詢、插入、修改和刪除,這類功能稱為()。
【答案】:C
C[解析]數據操縱功能可以實現對數據的查詢、插入、修改和刪除。
『叄』 學籍管理系統 資料庫程序編寫!!
一. 應用實例的分析與開發
---- 我們以學籍管理系統為背景,基於Windows DNA的思想,開發了一套應用系統。在該系統中,有關教務學籍的事務邏輯都是由定製COM組件來處理的,動態Web頁面通過ASP腳本調用這些組件。系統在開發速度和軟體質量等方面都優於不用COM組件而僅用ASP腳本的方案。為說明問題,我們通過一個定製組件和ASP腳本的主要代碼簡單介紹局部功能的實現過程。
---- 在displayscore.asp頁面中接受、辨別用戶的查詢請求,做出不同的查詢處理。當客戶的身份為教師或教務時,可以查詢所有學生的成績;當客戶的身份為學生時,只能查詢該生本人的成績。
---- 定製COM組件Score.dll進行查詢處理。首先設計該組件的介面,為組件設置四個屬性: Subj(課程)、Term(課程所屬學期)、Class(查詢的班級)和Stu_No(查詢學生的學號);定義兩個方法:RequeryScores和RequeryAllScores,分別對教師、教務部門和學生的請求做出相應的處理,並將查詢結果集返回給用戶。
---- 以下是實現該組件Score.dll的部分關鍵代碼。從中我們可以看到組件的介面是如何實現的:
Option Explicit
Private m_StuNo As Variant
Private m_Subj As String
Private m_Term As String
Private m_Class As String
' 設置屬性為可寫入的
Public Property Let StuNo(ByVal vNewValue As Variant)
m_StuNo = vNewValue
End Property
Public Property Let Subj(ByVal vNewValue As Variant)
m_Subj = vNewValue
End Property
......
' 學生查詢成績請求處理
Public Function RequeryScores() As Object
Dim objContext As MTxAS.ObjectContext
Set objContext = GetObjectContext()
' 建立事務性組件
Dim ObjConn As ADODB.Connection
' 利用ADO訪問資料庫
Dim ObjRecordset As ADODB.Recordset
Set ObjConn = New ADODB.Connection
ObjConn.Open "xia", "sa", ""
Set ObjRecordset = New ADODB.Recordset
Dim query As String
' 根據查詢要求(查詢所有課程、查詢特定學期的所有課程、
查詢指定課程、查詢特定學期的某一課程)進行不同的查詢操作
If (m_Subj = "all" And m_Term <> "all") Then
query="select Client_Name,Client.Client_No,Courses.subject,
stu_score.score,stu_score.term,sub_type"
query = query & " from client,stu_score,courses"
query=query&"where client.client_no=stu_score.client_no
and stu_score.subject=courses.subject
and courses.term=stu_score.term
and courses.term='" & m_Term & "'
and Client.Client_no='" & m_StuNo & "'"
End If
......
ObjRecordset.Open query, ObjConn
' 進行資料庫查詢
ObjContext.SetComplte
' 若事務成功完成,則提交該事務
RequeryScoresExit:
Set RequeryScores = ObjRecordset
' 返回查詢結果集
Exit Function
RequeryScoresErr:
Set RequeryScores=Nothing
' 事務失敗處理
End Function
' 教師、教務查詢成績請求處理
Public Function RequeryAllScores() As Object
......
End Function
---- 在ASP頁面displayscore.asp中引用組件,ASP代碼如下(其中加粗的部分便是對該組件的調用):
< %@ LANGUAGE="VBSCRIPT" % >
< HTML >
< HEAD >
< META NAME="GENERATOR" Content="Microsoft
Visual InterDev 1.0" >
< META HTTP-EQUIV="Content-Type"
content="text/html; charset=gb_2312-80" >
< TITLE >Show To Teacher< /TITLE >
< /HEAD >
< BODY background="images/bk.GIF" >
< %
dim objResult
set objResult=Server.CreateObject("Display.Score")
dim Term,Subject
Term=Cstr(Request.Form("Term"))
Subject=Cstr(Request.Form("Subject"))
objResult.term=Request.Form("term")
objResult.Subj=RequestForm("Subject")
objresult.class=Request.Form("Class")
dim Scores
set Scores=objResult.RequeryAllScores
% >
' 以下代碼為顯示處理的結果
< div align="center" >< center >
......
< table border="0" cellpadding="0"
cellspacing="1" width="100" >< tr >
< %For I = 0 To Scores.Fields.Count - 1% >
< td bgcolor="#004080" >
< strong >< font color="#FFFFFF" > < small >
< %=scores(I).Name% >< /font > < /strong >< /td >
< %NEXT
Do While (Not Scores.EOF)% >
< /tr >< tr >
< % For I = 0 To Scores.Fields.Count - 1% >
< td bgcolor="#ACE8F9" >< p align="center" >
< %= Scores(I).Value% >< /td >
< %Next
Scores.MoveNext% >< /tr >
< %Loop% >
< %Scores.close
' 關閉資料庫連接
set Scores=Nothing
set objResult=Nothing % >
' 釋放對象
< /table >< /center >< /div >
< /BODY >
< /HTML >
---- 可以想像,如果僅使用ASP腳本進行業務處理就會使ASP頁面中代碼十分臃腫、晦澀。而使用組件的方案也較單純的ASP腳本執行速度速度快。並且可以將整個查詢處理作為一個事務,保證資料庫信息的安全、完整。將該組件在MTS中注冊,又可避免多用戶訪問該主頁時可能造成的網路擁塞。實際應用中,學生和教師的使用許可權是不同的。在學生查詢成績的頁面中,可重用該組件,只是調用其不同的介面而已。僅使用ASP腳本進行業務處理,則需重新編寫與displayscore.asp類似的、同樣煩瑣的代碼。在開發過程中,不同的開發人員可各盡所能,同時進行組件和ASP頁面的設計,縮短了軟體開發周期。
---- 以下兩圖顯示的是教師(教務)查詢成績和顯示查詢結果的頁面:
二. 開發過程中輔助工具的使用
---- 傳統的軟體工程進行的需求分析、資料庫設計等都是人們「純手工」完成的,缺乏嚴謹性和規范性。而在以組件為中心的系統分析和軟體開發過程中,應力爭使用有效的計算機輔助工具,以適應快速建模和組件方法新形勢的需要,提高分析的質量及精度。
---- 有很多輔助工具可以利用。由於以組件為中心的系統分析過程仍保留著傳統軟體工程方法的脈絡痕跡,北大青鳥的CASE工具對傳統的軟體工程方法比較有效,我們採用了這一工具。在資料庫建模方面,我們選用了SYBASE 公司的S-Designer,可將資料庫概念模型自動轉化為物理模型。
---- 1. 利用青鳥CASE工具編寫需求分析文檔
---- 長久以來,人們已習慣於「純手工」地進行需求分析。開發人員對現有系統和用戶要求進行調查後,需要設計系統的數據流圖(DFD圖),編寫小說明,設計系統的結構圖(SC圖)。但這種分析方法是不嚴謹的,由於種種原因,可能會發生加工、數據流、文件的語法定義錯誤;數據流圖上下各層不一致;數據流圖分解後的數據不平衡,或文件等重名及文檔不完備等各種問題,影響了我們對用戶需求的分析和理解,防礙了今後的工作。尤其是對組件的分析失當,後果不堪設想。
---- 青鳥CASE工具提供的即是一套支持軟體工程中採用傳統的結構化方法進行需求分析、軟體設計的工具。由工具生成的每個文件即一個項目,每個項目均包括數據流圖和模塊結構圖兩部分:
數據流圖部分輔助系統分析員完成對軟體系統的需求分析、建立目標系統的需求模型、生成一份正確、完整的關於目標系統的說明文檔;同時,提供對需求文檔的查詢、列表、分片、影響范圍等分析功能,輔助軟體設計人員對需求分析的結果文檔進行深入、細致的分析和理解,以利於軟體設計工作。
模塊結構圖部分輔助程序設計人員在需求分析階段完成後對軟體系統進行設計,支持模塊的逐層細化,建立系統的軟體體系結構,最後得到一份正確、完整的軟體設計文檔。同時,提供對設計文檔進行查詢、列表、分片、影響范圍等分析功能,完成對設計的結果文檔進行深入、細致的分析理解,以利於軟體開發及維護工作。在SC圖中組件的規劃方案已見端倪,繼續細化將得出每個組件的概要設計方案。
---- 在教務系統的實例中,利用青鳥CASE工具生成的DFD圖和SC圖如下圖所示:
---- 系統1層DFD圖 系統0層SC圖
---- 2. 利用S-Designer進行資料庫設計
---- 當完成系統的詳細設計後,接下來便是資料庫設計。資料庫設計在整個軟體工程中佔有舉足輕重的地位。資料庫設計不合理,數據得不到合理、有效的存儲,數據存在潛在的不一致性、不完整性或有大量冗餘,都會降低系統性能,甚至使系統崩潰。
---- 手工的資料庫設計完全依賴於設計者的設計水平。設計者首先必須根據實際需要建立若干個邏輯上存在的資料庫表,並使其滿足第三範式;而後根據它們之間的聯系建立特定資料庫表將其聯系起來。這是一件相當煩瑣的事。資料庫設計者既要進行資料庫的邏輯設計,又要將邏輯模型轉成物理模型,而且設計出的資料庫不一定能滿足第三範式。合理的庫表結構決定了訪庫組件介面的設計質量,所以原先資料庫設計方式不適用於以組件對象為中心的軟工設計。
---- 在教務系統的實例中,S-Designer使資料庫設計變得輕松、簡單起來。設計者只須根據現實需要,設計出資料庫的E-R圖,S-Designer會將邏輯模型轉化為物理模型,為資料庫表間的聯系建立新表,指明表的主碼、外碼,並自動對資料庫表進行一致性、冗餘性、完整性檢查,使資料庫表滿足第三範式。
---- 例:可首先設計出資料庫表課程(Courses)和學生(Client)的邏輯模型:
---- 接下來,為表Courses和Client間建立聯系。由S-Designer自動生成的物理模型,如下圖所示,它們為訪庫組件的介面設計提供了准確的依據。
---- 可以相信,隨著軟體工程學的進一步成熟,將出現更多的計算機輔助工具,幫助軟體開發人員構建出更完善的應用系統。許多輔助軟體工具可以完成相似的工作,到底選用何種輔助工具取決於這些工具的性能以及使用者的習慣。
---- 以組件對象為中心的動態Web方法和DNA思想並不高深莫測,開發技術也愈加規范化。應當說,這套方法更適合客觀信息結構的現實,也更接近於人們的思維方式,其技術有如行雲流水般自然,很適合在中小型企業環境中推廣和普及。
『肆』 急求一份完整的資料庫課程設計圖書管理系統(要求用VB 以及SQL-server製作)
1、如果論文頁碼不多,前置部分並不一定要有,或只加個封面即可。
2、封面、標題等不要太花哨,一般以簡潔大方為好。 3、如果論文很厚實,可考慮正反面排版列印。 4、頁碼較多的論文,可考慮用頁眉標注論文標題及層次標題,如單頁用文章標題,雙頁用層次標題。 5、不管論文長短,頁碼均需標注。頁碼標注由正文的首頁開始,作為第1頁,可以標注在頁眉或頁腳的中間或右邊。論文的前置部分、封三和封底不編入頁碼。附件部分一般單獨編排頁碼。 6、封底底色與封面一致為好,若用底圖則與封面應有相關性。 7、若用訂書釘裝訂,兩枚釘應分別居於上下沿四分之一處,左縮進1厘米處
可以發你一份參考
『伍』 (30) 關系資料庫管理系統能實現的專門關系運算包括______。
答案為B. 選擇、投影、連接。
關系的基本運算有兩類:一類是傳統的集合運算(並、差、交等),另一類是專門的關系運算(選擇、投影、自然連接、除法、外連接),有些查詢需要幾個基本運算的組合,要經過若干步驟才能完成。
在關系資料庫管理系統中,資料庫的全部數據及其相互聯系都被組織成關系,即二維表的形式。關系資料庫系統提供一種完備的高級關系運算,支持對資料庫的各種操作。關系模型有嚴格的數學理論,使資料庫的研究建立在比較堅實的數學基礎上。
(5)管理系統資料庫的實現擴展閱讀:
資料庫中的專門關系運算:
1、選擇:
選擇的邏輯表達式的基本形式為:XθY。其中θ代表比較運算符,它可以是比較運算符。X、Y是屬性名或常量或簡單函數。它是從行的角度進行的運算。
2、投影:
關系R上的投影是從關系R中選出若干屬性列組成新的關系。它是從列的角度進行的運算。由於投影取消了某些列之後可能出現重復的行,應取消這些完全相同的行。
3、自然連接:
自然連接是一種特殊的等值連接,它要求兩個關系進行比較的分量必須是同名的屬性組,並且在結果中把重復的屬性列去掉。一般的連接是從行的角度進行操作,自然連接需要取消重復列,所以它是從行和列的角度進行操作。
4、除法:
設關系R除以關系S的結果為關系T,則關系T包含所有在R但不在S中的屬性及其值,且T的元組與S的元組的所有組合都在R中。
5、外連接:
兩個關系R和S在做自然連接時,選擇兩個關系在公共屬性上值相等的元組構成新的關系。
此時,關系R和S可能有在公共屬性上不相等的元組,從而造成R或S中元組的舍棄,這些舍棄的元組被稱為懸浮元組。
如果把懸浮元組也保存在結果關系中,而在其他屬性上填空值,那麼這種連接就叫做外連接。
參考資料來源:網路-關系運算
『陸』 資料庫系統的獨立性是怎樣實現的
數據獨立性是由DBMS的二級映象功能來保證的。資料庫系統通常採用外模式、模式和內模式三級結構,資料庫管理系統在這三級模式之間提供了外模式/模式和模式/內模式兩層映象。
當整個系統要求改變模式時(增加記錄類型、增加數據項)時,由DBMS對各個外模式/模式的映象作相應改變,可以使外模式保持不變,應用程序是依據數據的外模式編寫的,從而應用程序不必修改,保證了數據的邏輯獨立性。
當數據的存儲結構改變時,由DBMS對模式/內模式映象作相應改變,可以使模式不變,從而應用程序也不必改變,保證了數據的物理獨立性。
(6)管理系統資料庫的實現擴展閱讀
數據獨立性的作用
1、數據與程序的獨立
把數據的定義從程序中分離出去,加上數據的存取又由DBMS負責,從而簡化了應用程序的編制,大大減少了應用程序的維護和修改。可以說數據處理的發展史就是數據獨立性不斷進化的歷史。在手工管理階段,數據和程序完全交織在一起,沒有獨立性可言,數據結構作任何改動,應用程序也需要做相應的修改。
2、獨立發展
文件系統出現後,雖然將拆明兩者分離,但實際上應用程序中依扒念然要反映文件在存儲設備上的組織方法、存取方法等物理細節,因而只要數據作了任何修改春御困,程序仍然需要作改動。而資料庫系統的一個重要目標就是要使程序和數據真正分離,使它們能獨立發展。