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

正文內(nèi)容

數(shù)據(jù)庫設(shè)計規(guī)范化的五個要求(編輯修改稿)

2025-05-04 23:10 本頁面
 

【文章內(nèi)容簡介】 列。   例:下面的“課程”表,不符合3NF?!   lass(class-no,class-name,teacher-no,teacher-name)    其中:teacher-no為任課教師號,teacher-name為任課教師姓名。因為非主碼列teacher-name依賴于另一非主碼列teacher-no,所以它不符合3NF?! ∑浣鉀Q辦法也是把它分解成兩個表:“課程”表和 “教師”表,則它們就都滿足3NF了?!   lass(class-no,class-name,teacher-no)     teacher(teacher-no,teacher-name)    .  小結(jié)    當(dāng)一個表是規(guī)范的,則其非主碼列依賴于主碼列。從關(guān)系模型的角度來看,表滿足3NF最符合標(biāo)準(zhǔn),這樣的設(shè)計容易維護(hù)。一個完全規(guī)范化的設(shè)計并不總能生成最優(yōu)的性能,因此通常是先按照3NF設(shè)計,如果有性能問題,再通過反規(guī)范來解決?!   ?shù)據(jù)庫中的數(shù)據(jù)規(guī)范化的優(yōu)點是減少了數(shù)據(jù)冗余,節(jié)約了存儲空間,相應(yīng)邏輯和物理的I/O次數(shù)減少,同時加快了增、刪、改的速度,但是對完全規(guī)范的數(shù)據(jù)庫查詢,通常需要更多的連接操作,從而影響查詢的速度。因此,有時為了提高某些查詢或應(yīng)用的性能而破壞規(guī)范規(guī)則,即反規(guī)范?!   ?.  數(shù)據(jù)的反規(guī)范    .  反規(guī)范的好處    是否規(guī)范化的程度越高越好?這要根據(jù)需要來決定,因為“分離”越深,產(chǎn)生的關(guān)系越多,關(guān)系過多,連接操作越頻繁,而連接操作是最費時間的,特別對以查詢?yōu)橹鞯臄?shù)據(jù)庫應(yīng)用來說,頻繁的連接會影響查詢速度。所以,關(guān)系有時故意保留成非規(guī)范化的,或者規(guī)范化以后又反規(guī)范了,這樣做通常是為了改進(jìn)性能。例如帳戶系統(tǒng)中的“帳戶”表B-TB01,它的列busi-balance(企業(yè)帳戶的總余額)就違反規(guī)范,其中的值可以通過下面的查詢獲得:    select busi-code,sum(acc-balance)    from  B-TB06    group by busi-code    如果B-TB01中沒有該列,若想獲得busi-name(企業(yè)名稱)和企業(yè)帳戶的總余額,則需要做連接操作:    select busi-name,sum(acc-balance)    from B-TB01,B-TB06     where B--code=B--code    group by busi-code    如果經(jīng)常做這種查詢,則就有必要在B-TB01中加入列busi-balance,相應(yīng)的代價則是必須在表B-TB06上創(chuàng)建增、刪、改的觸發(fā)器來維護(hù)B-TB01表上busi-balance列的值。類似的情況在決策支持系統(tǒng)中經(jīng)常發(fā)生。    反規(guī)范的好處是降低連接操作的需求、降低外碼和索引的數(shù)目,還可能減少表的數(shù)目,相應(yīng)帶來的問題是可能出現(xiàn)數(shù)據(jù)的完整性問題。加快查詢速度,但會降低修改速度。因此決定做反規(guī)范時,一定要權(quán)衡利弊,仔細(xì)分析應(yīng)用的數(shù)據(jù)存取需求和實際的性能特點,好的索引和其它方法經(jīng)常能夠解決性能問題,而不必采用反規(guī)范這種方法。    .  常用的反規(guī)范技術(shù)    在進(jìn)行反規(guī)范操作之前,要充分考慮數(shù)據(jù)的存取需求、常用表的大小、一些特殊的計算(例如合計)、數(shù)據(jù)的物理存儲位置等。常用的反規(guī)范技術(shù)有增加冗余列、增加派生列、重新組表和分割表?!   ?  增加冗余列    增加冗余列是指在多個表中具有相同的列,它常用來在查詢時避免連接操作。例如前面例子中,如果經(jīng)常檢索一門課的任課教師姓名,則需要做class和teacher表的連接查詢:    select class-name,teacher-name    from  class,teacher    where  -no=-no    這樣的話就可以在class表中增加一列 teacher-name就不需要連接操作了。    增加冗余列可以在查詢時避免連接操作,但它需要更多的磁盤空間,同時增加表維護(hù)的工作量。    .  增加派生列    增加派生列指增加的列來自其它表中的數(shù)據(jù),由它們計算生成。它的作用是在查詢時減少連接操作,避免使用集函數(shù)。例如前面所講的賬戶系統(tǒng)中的表B-TB01的列 busi-balance就是派生列。派生列也具有與冗余列同樣的缺點?!   ?  重新組表    重新組表指如果許多用戶需要查看兩個表連接出來的結(jié)果數(shù)據(jù),則把這兩個表重新組成一個表來減少連接而提高性能。例如,用戶經(jīng)常需要同時查看課程號,課程名稱,任課教師號,任課教師姓名,則可把表class(class-no,class-name,teacher-no)和表 teacher(teacher-no,teacher-name)合并成一個表 class(class-no,class-name,teacher-no,teacher-name)。這樣可提高性能,但需要更多的磁盤空間,同時也損失了數(shù)據(jù)在概念上的獨立性?!   ?  分割表    有時對表做分割可以提高性能。表分割有兩種方式:    1水平分割:根據(jù)一列或多列數(shù)據(jù)的值
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1