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

正文內(nèi)容

范式及其對數(shù)據(jù)庫設(shè)計的指導(dǎo)意義(參考版)

2025-01-21 20:06本頁面
  

【正文】 一個表行之間的數(shù)據(jù)冗余和多個表之間的數(shù)據(jù)冗余不是范式所能規(guī)范的范圍,對這種數(shù)據(jù)冗余的合理性、有效性和因此為保證冗余數(shù)據(jù)的一致性而在算法上付出的代價,我們同樣要作全面和詳細(xì)的評估 。 76 小結(jié): 范式一般能消除一個表的單行冗余,但計算列是一個例外。所以如此設(shè)計不符合 3NF。 成立理由:在數(shù)據(jù)表數(shù)據(jù)不變的前提下,即結(jié)點(diǎn)的父子關(guān)系不變,顯然 pid?level。 代價:產(chǎn)生了冗余及數(shù)據(jù)不一致的風(fēng)險。 可行性:增加層數(shù)列 level,在結(jié)點(diǎn)加入時(總是在父結(jié)點(diǎn)已知的情況下)為其賦值,其值level=父結(jié)點(diǎn) level+1。 冗余的代價:系統(tǒng)一般要提供冗余數(shù)據(jù)的生成程序及冗余數(shù)據(jù)正確性的檢測程序。 行間冗余可能違反范式(下例 1),也可能不違反范式(下例 2),后者屬于范式無法排除的冗余。 68 范式的局限-對冗余的進(jìn)一步討論 使一個不符合范式的設(shè)計符合范式,通??梢韵哂? 滿足范式,冗余還是可能出現(xiàn)在表的單行、行間和多表之間 能以較少的空間代價和算法代價換取較大的系統(tǒng)運(yùn)行效率的提高,這樣的冗余是合理的 69 范式無法消除的冗余 - 計算列問題 在學(xué)生表中加入 “ 選中 ” 標(biāo)志列,該列的數(shù)值是依據(jù)某個算法由學(xué)號中的各位數(shù)字計算得到 這個列并不傳遞函數(shù)依賴或部分函數(shù)依賴于碼“ 學(xué)號 ” ,所以增加這個列并不會改變原設(shè)計所符合的范式,但是這個列的信息完全可以由學(xué)號計算得到,冗余是顯而易見的 范式不能消除可以由主碼直接計算得到的列所產(chǎn)生的冗余 70 范式無法消除的其他冗余 表間冗余(多表冗余) 范式無法去除表間冗余 多表冗余的必要性:多個關(guān)系之間的數(shù)據(jù)冗余的必要性要權(quán)衡空間,時間和安全性等各方面的考慮: ? 出于安全性考慮的完全相同的數(shù)據(jù)表(熱備份) ? 出于計算時間(效率)上考慮的月結(jié)轉(zhuǎn)表(用單獨(dú)的表保存各月的累計數(shù),每月計算一次,作為下月的初始值) 71 單表冗余 定義:所謂單表冗余指某行某列數(shù)據(jù)可由本行或其他行的數(shù)據(jù)計算得到。 引用信息表達(dá)的是某一時刻的特征,如供應(yīng)商問題中進(jìn)貨單對供應(yīng)商名稱的引用,可采用 “ 編號 +版本號 ”作為外鍵引用的方法得到名稱。) 67 引用方法小結(jié): 供應(yīng)商問題中進(jìn)貨單也可以用上述方法獲得供應(yīng)商名稱,但由于查詢使用了子查詢(對包括供應(yīng)商的進(jìn)貨單的查詢將更復(fù)雜),當(dāng)數(shù)據(jù)量很大時,效率明顯降低。 group by deptid) 在上述查詢中限制為 98101學(xué)生所在系: 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。 引用問題:一個進(jìn)貨單與供應(yīng)商名稱為 1- 1關(guān)系,可以用(供應(yīng)商編號,供應(yīng)商名稱版本號)引用供應(yīng)商名,但學(xué)生在讀期間,系名可能發(fā)生多次變更,所以學(xué)生對系名可能為 1-多關(guān)系 ? 系名信息不可能保存在學(xué)生表中 ? 通過學(xué)生中系編號將引用到系名變更表中多個系名 64 例:有下列兩個表: department *設(shè)置日期 *系編號 系名稱 199821 B001 數(shù)學(xué)系 199821 B002 物理系 199821 C001 計算機(jī)系 199951 C001 軟件學(xué)院 2022610 C001 信息學(xué)院 students *學(xué)號 姓名 系編號 98101 王海 C001 98102 李明 C001 98201 周濤 B001 98202 吳名 B001 98301 孫新 B002 完成下列 select語句: ? 獲得各系的最新系名 ? 由于要輸出學(xué)號為 98101的學(xué)生 199971的成績單,如何獲得當(dāng)時的該學(xué)生所在系名? 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學(xué)生 98101所在系名: 關(guān)鍵點(diǎn):獲得 199971日前的最后一次設(shè)置的所有系名,實(shí)際在上例語句一子查詢中加條件setdate=?199971?即可: select deptname from department a where setdate=(select max(setdate) from department where deptid= and setdate=39。 思考和練習(xí):分析是否符合 NF, 進(jìn)行概要設(shè)計。 62 設(shè)計特點(diǎn): 較方案二的特點(diǎn)是去掉供應(yīng)商表,把供應(yīng)商信息全部放到變更表中,一但供應(yīng)商名稱變化,該供應(yīng)商其他信息要復(fù)制一遍,是缺點(diǎn),但也是優(yōu)點(diǎn),即具有了變更供應(yīng)商其他屬性的能力,對信息變更不常發(fā)生的情況下, 重復(fù)的數(shù)據(jù)量很小。 實(shí)現(xiàn)較方案一簡單 若進(jìn)貨單查詢中要包括供應(yīng)商的其他信息,不論供應(yīng)商名稱是否發(fā)生過變更,都要連接供應(yīng)商表和供應(yīng)商名稱變更表,較方案一多連接一個表。(練習(xí) select) 供應(yīng)商名稱變更: (包括供應(yīng)商信息維護(hù)) ? 新增供應(yīng)商或名稱變更:供應(yīng)商名稱變更表新增一行,版本號從 0開始,或為上一變更版本號 +1 查詢進(jìn)貨單(含供應(yīng)商):全部通過供應(yīng)商編號和名稱版本號引用供應(yīng)商名稱變更表。 供應(yīng)商名稱變更較少發(fā)生的情況下,本設(shè)計對系統(tǒng)的性能(查詢效率)基本無影響。 查詢進(jìn)貨單(含供應(yīng)商):若供應(yīng)商名稱版本號 =0,則供應(yīng)商名稱引用供應(yīng)商表,否則引用供應(yīng)商名稱變更表。 56 概要設(shè)計: 新增進(jìn)貨單:僅引用供應(yīng)商表,名稱版本號取 0 供應(yīng)商名稱變更: (供應(yīng)商信息維護(hù)的一個部分) ( 1)名稱變更:供應(yīng)商名稱變更表新增一行,版本號為上一變更版本號 +1 ( 2)更新當(dāng)前供應(yīng)商名稱:以新供應(yīng)商名稱替換供應(yīng)商表中供應(yīng)商名稱。 ? 供應(yīng)商名稱變更表合理假設(shè)同一天供應(yīng)商名稱不會變更兩次,所以可以以(日期,供應(yīng)商編號)為碼。 54 冗余分析:存在兩個方面的冗余 ? 對引用信息變更部分:變更前的信息重復(fù) ( 下例中的紅色部分) ? 對引用信息未變更部分:若引用信息發(fā)生變更的頻率極低,顯然增加的列對大多數(shù)引用信息未發(fā)生變更的情況是純粹的冗余。 2)誤區(qū):當(dāng)供應(yīng)商名稱發(fā)生變更,由于進(jìn)貨單中存放的是進(jìn)貨時供應(yīng)商名,所以( 1)中傳遞依賴不再成立,所以符合 3NF。 53 供應(yīng)商問題 一) 把可能發(fā)生變更的數(shù)據(jù)放入引用表中 把供應(yīng)商編號和進(jìn)貨時的供應(yīng)商名稱同時存入進(jìn)貨單中。與系名問題不同的是一個進(jìn)貨單只可能對應(yīng)一個供應(yīng)商名。一個學(xué)生在就學(xué)期間可能對應(yīng)多個系名。 一個看上去比較復(fù)雜的設(shè)計,并不一定會給以后的實(shí)現(xiàn)帶來更多的復(fù)雜性。 code類型必須使用 varchar避免空格,該語句對最大級數(shù)為 1, 2, 3均適用 ) 51 一般不符合范式就會有數(shù)據(jù)冗余,上例并不是例外,因為 “ 代碼 ” 列本身存在冗余,“ 010101” 是對 “ 0101
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1