freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

范式及其對數(shù)據(jù)庫設計的指導意義-資料下載頁

2025-01-18 20:06本頁面
  

【正文】 的方案 1- 3的處理方法。 引用問題:一個進貨單與供應商名稱為 1- 1關系,可以用(供應商編號,供應商名稱版本號)引用供應商名,但學生在讀期間,系名可能發(fā)生多次變更,所以學生對系名可能為 1-多關系 ? 系名信息不可能保存在學生表中 ? 通過學生中系編號將引用到系名變更表中多個系名 64 例:有下列兩個表: department *設置日期 *系編號 系名稱 199821 B001 數(shù)學系 199821 B002 物理系 199821 C001 計算機系 199951 C001 軟件學院 2022610 C001 信息學院 students *學號 姓名 系編號 98101 王海 C001 98102 李明 C001 98201 周濤 B001 98202 吳名 B001 98301 孫新 B002 完成下列 select語句: ? 獲得各系的最新系名 ? 由于要輸出學號為 98101的學生 199971的成績單,如何獲得當時的該學生所在系名? 65 獲得各系的最新系名: 語句一:使用 max聚集函數(shù) select deptid,deptname from department a where setdate=(select max(setdate) from department where deptid= group by deptid) 語句二:使用 all操作符 select deptid,deptname from department a where setdate=all (select setdate from department where deptid=) 66 獲得 199971學生 98101所在系名: 關鍵點:獲得 199971日前的最后一次設置的所有系名,實際在上例語句一子查詢中加條件setdate=?199971?即可: select deptname from department a where setdate=(select max(setdate) from department where deptid= and setdate=39。19997139。 group by deptid) 在上述查詢中限制為 98101學生所在系: select deptname from department a where setdate=(select max(setdate) from department where deptid= and setdate=‘199971’ group by deptid) 紅色部分語句同上 and deptid in (select deptid from students where id=39。9810139。) 67 引用方法小結: 供應商問題中進貨單也可以用上述方法獲得供應商名稱,但由于查詢使用了子查詢(對包括供應商的進貨單的查詢將更復雜),當數(shù)據(jù)量很大時,效率明顯降低。所以建議使用版本號的引用方法。 引用信息表達的是某一時刻的特征,如供應商問題中進貨單對供應商名稱的引用,可采用 “ 編號 +版本號 ”作為外鍵引用的方法得到名稱。 引用信息表達的是某一時期的特征,如系名問題中學生信息引用各時期的系名,則必須結合日期用查詢語句得到該日期的系統(tǒng)。 68 范式的局限-對冗余的進一步討論 使一個不符合范式的設計符合范式,通??梢韵哂? 滿足范式,冗余還是可能出現(xiàn)在表的單行、行間和多表之間 能以較少的空間代價和算法代價換取較大的系統(tǒng)運行效率的提高,這樣的冗余是合理的 69 范式無法消除的冗余 - 計算列問題 在學生表中加入 “ 選中 ” 標志列,該列的數(shù)值是依據(jù)某個算法由學號中的各位數(shù)字計算得到 這個列并不傳遞函數(shù)依賴或部分函數(shù)依賴于碼“ 學號 ” ,所以增加這個列并不會改變原設計所符合的范式,但是這個列的信息完全可以由學號計算得到,冗余是顯而易見的 范式不能消除可以由主碼直接計算得到的列所產生的冗余 70 范式無法消除的其他冗余 表間冗余(多表冗余) 范式無法去除表間冗余 多表冗余的必要性:多個關系之間的數(shù)據(jù)冗余的必要性要權衡空間,時間和安全性等各方面的考慮: ? 出于安全性考慮的完全相同的數(shù)據(jù)表(熱備份) ? 出于計算時間(效率)上考慮的月結轉表(用單獨的表保存各月的累計數(shù),每月計算一次,作為下月的初始值) 71 單表冗余 定義:所謂單表冗余指某行某列數(shù)據(jù)可由本行或其他行的數(shù)據(jù)計算得到。如存在子結點的樹結點的數(shù)據(jù)為對應下層子結點數(shù)據(jù)之和。 行間冗余可能違反范式(下例 1),也可能不違反范式(下例 2),后者屬于范式無法排除的冗余。 冗余必要性:通過與無冗余設計在性能、安全性和算法復雜性等方面比較后評價其必要性。 冗余的代價:系統(tǒng)一般要提供冗余數(shù)據(jù)的生成程序及冗余數(shù)據(jù)正確性的檢測程序。 72 例 1:在 Level后是否符合范式? 必要性:原設計要獲得第 n層結點的層數(shù) n要對整表掃描 n遍,當樹結點層次很深時,執(zhí)行效率低。 可行性:增加層數(shù)列 level,在結點加入時(總是在父結點已知的情況下)為其賦值,其值level=父結點 level+1。 改進后優(yōu)點:以簡單的 level維護算法取代了相對復雜的求 level的算法,直接通過 level獲得層數(shù),效率極大提高。 代價:產生了冗余及數(shù)據(jù)不一致的風險。 73 是否符合 3NF: 關鍵問題:從語意上判定是否成立傳遞依賴關系:id?pid?level, 主要是判定后者是否成立 不成立理由:由于 pid( 父結點)確定后, level值取決于id=pid( 父結點)的 pid( 父結點)取值,即 level似乎并不完全取決于 pid( 自身的父結點),換句話說, pid值(父結點)不變,而 id=pid行的 pid值(父結點的父結點)變化,level值就會變化。 成立理由:在數(shù)據(jù)表數(shù)據(jù)不變的前提下,即結點的父子關系不變,顯然 pid?level。 A?B的驗證方法:在數(shù)據(jù)表合理取值的任何情況下,所有滿足 A=A0的行的 B列值唯一確定 結論: pid?level成立,理由是父結點相同的結點的結點級別相同。所以如此設計不符合 3NF。 74 例 2:賬表中的余額,符合范式但有行間冗余 下列為 2022年收支表 : (常見于財務、家庭記帳、銀行帳戶等) 日期 摘要 收入 支出 余額 0101 上期余額 1400 0105 工資 8000 9400 0107 存款 5000 4400 0110 水電煤 400 4000 0111 超市購物 200 3800 0115 …… 余額 =上行余額 +本行收入 本行支出 75 分析: 設計:收支表(流水號 *,日期,摘要,收入,支出,余額),其中余額為冗余數(shù)據(jù) 符合范式:注意由余額的計算方法,不成立下列依賴: “ 流水號 ?(收入,支出) ?余額 ” ,即 “ 余額 ” 并不完全依賴于本元組的 “ 收入 ”和 “ 支出 ” 數(shù)據(jù),所以符合所有范式。 76 小結: 范式一般能消除一個表的單行冗余,但計算列是一個例外。 有時為了提高系統(tǒng)的效率,可以突破范式的限制,但必須作全面而詳細的論證,因為更多的情況是符合范式比不符合范式從總體上更合理和高效。 一個表行之間的數(shù)據(jù)冗余和多個表之間的數(shù)據(jù)冗余不是范式所能規(guī)范的范圍,對這種數(shù)據(jù)冗余的合理性、有效性和因此為保證冗余數(shù)據(jù)的一致性而在算法上付出的代價,我們同樣要作全面和詳細的評估
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1