版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
關(guān)系型數(shù)據(jù)庫(kù)設(shè)計(jì)規(guī)范目錄TOC\o"1-3"文檔類別使用對(duì)象 41. 概述 51.1簡(jiǎn)介 51.2術(shù)語(yǔ)定義 51.3參考資料 51.4版本更新記錄 52.?dāng)?shù)據(jù)庫(kù)設(shè)計(jì)的目標(biāo) 63. 數(shù)據(jù)庫(kù)的特征 63.1完整性約束 63.1.1notnull約束 73.1.2缺省值 73.1.3 unique約束 73.1.4 primarykey約束 73.1.5 參照完整性約束 83.1.6 check約束 83.2 存儲(chǔ)過(guò)程 83.3 觸發(fā)器 93.4 事務(wù)處理 93.4.3 事務(wù)與一致性 103.4.4 事務(wù)和恢復(fù) 103.5 并發(fā)處理 103.5.3 死鎖 113.5.4 讀一致性 113.6 序號(hào)生成器 113.7 視圖 113.7.3 安全性 123.7.4 邏輯數(shù)據(jù)獨(dú)立性 124. 調(diào)整數(shù)據(jù)庫(kù)設(shè)計(jì)以提高系統(tǒng)性能 134.1 建立有用的性能標(biāo)準(zhǔn) 134.2 數(shù)據(jù)庫(kù)的規(guī)范化 134.3 通過(guò)非規(guī)范化設(shè)計(jì)提高數(shù)據(jù)庫(kù)的效率 134.3.3 非規(guī)范化的原因 134.3.4 非規(guī)范化技術(shù) 144.3.5 進(jìn)行非規(guī)范化處理時(shí)的注意事項(xiàng) 144.4 表的大小 154.4.3 表是否過(guò)小 154.4.4 表是否過(guò)大 154.4.5 如何減小表的尺寸 154.5 記錄的大小 154.5.3 列有最佳的位置嗎 154.5.4 存在最佳的記錄大小嗎 154.5.5 記錄是否過(guò)小 154.5.6 記錄是否過(guò)大 154.5.7 如何減小記錄 164.5.8 總結(jié) 165. 其它 16
文檔類別使用對(duì)象文檔類別該文檔是通用軟件公司的關(guān)系型數(shù)據(jù)庫(kù)的設(shè)計(jì)規(guī)范,是技術(shù)文檔。使用對(duì)象該文檔使用人員包括:開(kāi)發(fā)本部總經(jīng)理各產(chǎn)品部、事業(yè)部的經(jīng)理、項(xiàng)目經(jīng)理、設(shè)計(jì)人員軟件中心負(fù)責(zé)人、設(shè)計(jì)人員公司總經(jīng)理
概述1.1簡(jiǎn)介本文檔總結(jié)了公司進(jìn)行多年來(lái)的SYBASE數(shù)據(jù)庫(kù)設(shè)計(jì)經(jīng)驗(yàn),目的將公司進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)的經(jīng)驗(yàn)積累下來(lái),實(shí)現(xiàn)設(shè)計(jì)經(jīng)驗(yàn)的復(fù)用,為項(xiàng)目評(píng)審與項(xiàng)目質(zhì)量保證提供進(jìn)行檢查的依據(jù)。本規(guī)范從數(shù)據(jù)庫(kù)設(shè)計(jì)的目的、數(shù)據(jù)庫(kù)的各個(gè)特征、數(shù)據(jù)庫(kù)的規(guī)范化等各個(gè)方面進(jìn)行論述,對(duì)進(jìn)行SYBASE數(shù)據(jù)庫(kù)的設(shè)計(jì)提供了很好的依據(jù)。1.2術(shù)語(yǔ)定義1.3參考資料《Powerbuilder開(kāi)發(fā)設(shè)計(jì)中的數(shù)據(jù)庫(kù)設(shè)計(jì)》曉通數(shù)據(jù)庫(kù)研究與發(fā)展中心公司1.4版本更新記錄版本/修訂版日期修改記錄備注1.010/10初始版本
2.?dāng)?shù)據(jù)庫(kù)設(shè)計(jì)的目標(biāo)好的數(shù)據(jù)庫(kù)物理設(shè)計(jì)應(yīng)當(dāng)充分考慮應(yīng)用的需求和開(kāi)發(fā)工具的特征,應(yīng)當(dāng)充分利用和挖掘數(shù)據(jù)庫(kù)的功能。一流的數(shù)據(jù)庫(kù)設(shè)計(jì)會(huì)給整個(gè)應(yīng)用系統(tǒng)帶來(lái)以下的好處:維護(hù)容易。當(dāng)需求發(fā)生變化時(shí),優(yōu)良的數(shù)據(jù)庫(kù)設(shè)計(jì)會(huì)使應(yīng)用系統(tǒng)容易地適應(yīng)這種變化。編程簡(jiǎn)單。由于數(shù)據(jù)庫(kù)設(shè)計(jì)充分挖掘了數(shù)據(jù)庫(kù)的功能,所以應(yīng)用程序的復(fù)雜度可以明顯降低。加快開(kāi)發(fā)速度。因?yàn)閿?shù)據(jù)庫(kù)設(shè)計(jì)充分地考慮了需求和開(kāi)發(fā)工具的特征,所以開(kāi)發(fā)人員會(huì)感到左右逢源,得心應(yīng)手,從而可以加快開(kāi)發(fā)速度。系統(tǒng)具有良好的整體運(yùn)行效率。數(shù)據(jù)庫(kù)的特征完整性約束。完整性約束允許在表上定義某種約束條件,這些條件作為表定義的一部分存在,從而強(qiáng)制表中的數(shù)據(jù)滿足一定的規(guī)則。存儲(chǔ)過(guò)程。存儲(chǔ)過(guò)程是由流控制語(yǔ)句(if…else)和SQL語(yǔ)句書寫的過(guò)程,這個(gè)過(guò)程經(jīng)過(guò)編譯和優(yōu)化后存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)器中,使用時(shí)只要調(diào)用即可。觸發(fā)器。觸發(fā)器是一種特殊的存儲(chǔ)過(guò)程,不同的是這種過(guò)程不是由程序調(diào)用來(lái)執(zhí)行,而是通過(guò)數(shù)據(jù)庫(kù)數(shù)據(jù)的更新自動(dòng)地“觸發(fā)”執(zhí)行。事務(wù)處理:事務(wù)是最小的邏輯工作單元,在這個(gè)單元中對(duì)數(shù)據(jù)庫(kù)所有的更新要么全成功要么全失敗。并發(fā)處理。允許用戶在沒(méi)有沖突的情況下更新表中不同的行。行級(jí)鎖和頁(yè)級(jí)鎖對(duì)聯(lián)機(jī)事務(wù)處理非常有用。序號(hào)生成器。數(shù)據(jù)庫(kù)可以自動(dòng)生成連續(xù)的序號(hào)供應(yīng)用程序使用。遵守工業(yè)標(biāo)準(zhǔn)的SQL。視圖。視圖是原始數(shù)據(jù)庫(kù)表的變換,可給應(yīng)用程序帶來(lái)安全性、簡(jiǎn)單性和獨(dú)立性。分布處理。數(shù)據(jù)可以分布在網(wǎng)絡(luò)的多個(gè)點(diǎn)上,數(shù)據(jù)本身支持分布查詢和分布修改。數(shù)據(jù)復(fù)制。數(shù)據(jù)可以在網(wǎng)絡(luò)的多個(gè)數(shù)據(jù)庫(kù)點(diǎn)相互復(fù)制。3.1完整性約束完整性約束是數(shù)據(jù)庫(kù)用于維護(hù)數(shù)據(jù)庫(kù)完整性的一種機(jī)制。這種約束是表定義的一部分,是內(nèi)部的。與在應(yīng)用程序中維護(hù)數(shù)據(jù)庫(kù)的完整性不同,它的代價(jià)小而且性能高。完整性約束有以下兩點(diǎn)作用:使企業(yè)的規(guī)則與數(shù)據(jù)庫(kù)聯(lián)系起來(lái)。防止操作員或終端用戶輸入錯(cuò)誤的數(shù)據(jù),破壞數(shù)據(jù)庫(kù)的完整性。完整性約束有以下幾種:notnull約束缺省值unique約束primarykey約束foreignkey約束check約束3.1.1notnull約束notnull的含義是列中不能有空值。notnull在創(chuàng)建表時(shí)定義。notnull約束限定了列中必須有值,但不能限定列中可以有什么值,因此它常常與其它的約束配合使用。3.1.2缺省值缺省值是在數(shù)據(jù)錄入時(shí),若用戶沒(méi)有輸入數(shù)據(jù),數(shù)據(jù)庫(kù)自動(dòng)輸入的值。下面是定義缺省時(shí)應(yīng)注意的一些事項(xiàng):要確保列寬對(duì)缺省值來(lái)說(shuō)足夠大。要注意缺省值與規(guī)則間的沖突,確保缺省值為規(guī)則所允許,否則,缺省值會(huì)被規(guī)則忽略掉。unique約束唯一列是這樣的列,它的值不能在表中重復(fù)出現(xiàn)。注意,唯一列與主鍵不同,主鍵可用來(lái)唯一地標(biāo)識(shí)表中的一行(不能有空值),而唯一列僅僅表示該列的值不能在表中重復(fù)出現(xiàn)(可以有空值)??梢栽谝粋€(gè)列上定義唯一列,也可以在表上定義唯一列,也可以在表上對(duì)多個(gè)列定義唯一列。primarykey約束每個(gè)表中都應(yīng)有主鍵,主鍵唯一標(biāo)識(shí)表中的行。選擇主鍵應(yīng)注意以下幾點(diǎn):選擇數(shù)據(jù)是唯一的列。選擇數(shù)據(jù)值不會(huì)改變的列。主鍵的目的是唯一地標(biāo)識(shí)一行,不含有用于其它目的的數(shù)據(jù),選擇一般不需要改變主鍵值的列。選擇不含有空值的列。根據(jù)定義,主鍵列不允許輸入空值。選擇短的和數(shù)值型的列。避免選擇聯(lián)合主鍵。雖然允許聯(lián)合主鍵,但很難滿足以上四點(diǎn)要求。參照完整性約束參照完整性約束用來(lái)約束兩個(gè)表間的關(guān)系??罩岛屯獠挎I對(duì)于缺?。o(wú)notnull或check語(yǔ)句)的情況,外部鍵約束為組合外部鍵實(shí)施“無(wú)匹配”規(guī)則。通過(guò)使用check和notnull也可使用全部或部分規(guī)則:在組合外部鍵中實(shí)施全匹配規(guī)則,要求鍵的全部要么都為空要么都不為空。在一般情況下,不能使用參照完整性在組合鍵中實(shí)施部分匹配規(guī)則。部分匹配規(guī)則要求鍵的非空部分出現(xiàn)在引用表的主鍵的對(duì)應(yīng)部分上,這種情況一般要用觸發(fā)器來(lái)處理。父表和子表的關(guān)系父表和子表的關(guān)系決定于在子表的外部鍵上定義的其它類型的完整性約束。在外部鍵上沒(méi)有約束。在外部鍵上有非空約束。在外部鍵上有unique約束。在外部鍵上有unique和notnull約束。check約束當(dāng)需要根據(jù)邏輯表達(dá)式來(lái)限定列的值域時(shí),可以用check完整性約束。check約束的寫法和where子句的寫法一樣,但它有如下的限制:條件必須是能夠利用更新行中的值來(lái)求值的表達(dá)式。條件中不能有子查詢或序號(hào)。條件中不能含有函數(shù)。條件中不能含有偽列。存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程是由流控制和SQL語(yǔ)句書寫的過(guò)程,這個(gè)過(guò)程經(jīng)編譯和優(yōu)化后存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)器中,使用時(shí)只要調(diào)用即可。使用存儲(chǔ)過(guò)程有以下優(yōu)點(diǎn):存儲(chǔ)過(guò)程的能力大大增強(qiáng)了SQL語(yǔ)言的功能和靈活性。存儲(chǔ)過(guò)程可以用流控制語(yǔ)句編寫,有很強(qiáng)的靈活性,可以完成復(fù)雜的判斷和較復(fù)雜的運(yùn)算??杀WC數(shù)據(jù)的安全性和完整性。通過(guò)存儲(chǔ)過(guò)程可以使沒(méi)有權(quán)限的用戶在控制之下間接地寸取數(shù)據(jù)庫(kù),從而保證數(shù)據(jù)的安全。通過(guò)存儲(chǔ)過(guò)程可以使相關(guān)的動(dòng)作在一起發(fā)生,從而可以維護(hù)數(shù)據(jù)庫(kù)的完整性。在運(yùn)行存儲(chǔ)過(guò)程前,數(shù)據(jù)庫(kù)已對(duì)其進(jìn)行了語(yǔ)法和句法分析,并給出了優(yōu)化執(zhí)行方案。這種已經(jīng)編譯好的過(guò)程可極大地改善SQL語(yǔ)句的性能。由于執(zhí)行SQL語(yǔ)句的大部分工作已經(jīng)完成,所以存儲(chǔ)過(guò)程能以極快的速度執(zhí)行??梢越档途W(wǎng)絡(luò)的通信量。使體現(xiàn)企業(yè)規(guī)則的運(yùn)算程序放入數(shù)據(jù)庫(kù)服務(wù)器中,以便:集中控制。當(dāng)企業(yè)規(guī)則發(fā)生變化時(shí)在服務(wù)器中改變存儲(chǔ)過(guò)程即可,無(wú)須修改任何應(yīng)用程序。觸發(fā)器觸發(fā)器是一種特殊的存儲(chǔ)過(guò)程,它在插入、刪除或修改特定表中的數(shù)據(jù)時(shí)觸發(fā)執(zhí)行,它比數(shù)據(jù)庫(kù)本身標(biāo)準(zhǔn)的功能有更精細(xì)和更復(fù)雜的數(shù)據(jù)控制能力。數(shù)據(jù)庫(kù)觸發(fā)器有以下的作用:安全性??梢曰跀?shù)據(jù)庫(kù)的值使用戶具有操作數(shù)據(jù)庫(kù)的某種權(quán)利??梢曰跁r(shí)間限制用戶的操作??梢曰跀?shù)據(jù)庫(kù)中的數(shù)據(jù)限制用戶的操作。審計(jì)??梢愿櫽脩魧?duì)數(shù)據(jù)庫(kù)的操作。審計(jì)用戶操作數(shù)據(jù)庫(kù)的語(yǔ)句。把用戶對(duì)數(shù)據(jù)庫(kù)的更新寫入審計(jì)表。實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)完整性規(guī)則。實(shí)現(xiàn)非標(biāo)準(zhǔn)的數(shù)據(jù)完整性檢查和約束。觸發(fā)器可產(chǎn)生比規(guī)則更復(fù)雜的限制。與規(guī)則不同,觸發(fā)器可以引用列或數(shù)據(jù)庫(kù)對(duì)象。提供可變的缺省值。實(shí)現(xiàn)復(fù)雜的非標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)相關(guān)完整性規(guī)則。觸發(fā)器可以對(duì)數(shù)據(jù)庫(kù)中相關(guān)的表進(jìn)行連環(huán)更新。在修改或刪除時(shí)級(jí)聯(lián)修改或刪除其它表中的與之匹配的行。在修改或刪除時(shí)把其它表中的與之匹配的行設(shè)成NULL值。在修改或刪除時(shí)把其它表中的與之匹配的行級(jí)聯(lián)成缺省值。觸發(fā)器能夠拒絕或“回退”那些破壞相關(guān)完整性的變化,取消試圖進(jìn)行數(shù)據(jù)更新的事物。當(dāng)插入一個(gè)與主鍵不匹配的外部鍵時(shí),這種觸發(fā)器會(huì)起作用。同步實(shí)時(shí)地復(fù)制表中的數(shù)據(jù)。自動(dòng)計(jì)算數(shù)據(jù)值,如果數(shù)據(jù)的值達(dá)到了一定的要求,則進(jìn)行特定的處理。事務(wù)處理事務(wù)是這樣一種機(jī)制,它確保多個(gè)SQL語(yǔ)句被當(dāng)作單個(gè)工作單元來(lái)處理。事務(wù)具有以下的作用:一致性:同時(shí)進(jìn)行的查詢和更新彼此不會(huì)發(fā)生沖突,其他用戶不會(huì)看到發(fā)生了變化但尚未提交的數(shù)據(jù)??苫謴?fù)性:一旦系統(tǒng)故障,數(shù)據(jù)庫(kù)會(huì)自動(dòng)地完全恢復(fù)未完成的事務(wù)。事務(wù)與一致性事務(wù)是完整性的單位,一個(gè)事務(wù)的執(zhí)行是把數(shù)據(jù)庫(kù)從一個(gè)一致的狀態(tài)轉(zhuǎn)換成另一個(gè)一致的狀態(tài)。因此,如果事務(wù)孤立執(zhí)行時(shí)是正確的,但如果多個(gè)事務(wù)并發(fā)交錯(cuò)地執(zhí)行,就可能相互干擾,造成數(shù)據(jù)庫(kù)狀態(tài)的不一致性。在多用戶環(huán)境中,數(shù)據(jù)庫(kù)必須避免同時(shí)進(jìn)行的查詢和更新發(fā)生沖突。這一點(diǎn)是很重要的,如果正在被處理的數(shù)據(jù)能夠在該處理正在運(yùn)行時(shí)被另一用戶的修改所改變,那么該處理的結(jié)果會(huì)是不明確的。不加控制的并發(fā)存取會(huì)產(chǎn)生以下的幾種錯(cuò)誤。丟失修改(lostupdates)當(dāng)多個(gè)事務(wù)并發(fā)修改一個(gè)數(shù)據(jù)時(shí),不加控制會(huì)得出錯(cuò)誤的結(jié)果,一個(gè)修改會(huì)覆蓋掉另一個(gè)修改。這種丟失修改叫“寫—寫依賴”(Write—WriteDependency)。讀的不可重復(fù)性當(dāng)多個(gè)事務(wù)按某種時(shí)間順序存取若干數(shù)據(jù)時(shí),如果對(duì)并發(fā)存取不加控制,也會(huì)產(chǎn)生錯(cuò)誤。這叫做“讀—寫依賴”(Read—WriteDependency)。臟讀(dirtydata),讀的不一致性這種臟讀或說(shuō)讀的不一致性叫“寫—讀依賴”(Write—ReadDependency)。光標(biāo)帶來(lái)的當(dāng)前值的混亂事務(wù)在執(zhí)行過(guò)程中它在某個(gè)表上的當(dāng)前位置是由光標(biāo)表示的。光標(biāo)指向當(dāng)前正處理的記錄。當(dāng)處理完該條記錄后,則指向下一條記錄。在多個(gè)事務(wù)并發(fā)執(zhí)行時(shí),一個(gè)事務(wù)的修改可能產(chǎn)生副作用,使與這些光標(biāo)有關(guān)的事務(wù)出錯(cuò)。未釋放修改造成連鎖退出一個(gè)事務(wù)在進(jìn)行修改操作的過(guò)程中可能會(huì)發(fā)生故障,這時(shí)需要將已做的修改回退(Rollback)。如果在已進(jìn)行過(guò)或已發(fā)現(xiàn)錯(cuò)誤尚未復(fù)原之前允許其它事務(wù)讀已做過(guò)的修改(臟讀),則會(huì)導(dǎo)致連鎖退出。一事務(wù)在對(duì)一表更新時(shí),另外的事務(wù)卻修改或刪除此表的定義。事務(wù)和恢復(fù)數(shù)據(jù)庫(kù)本身肩負(fù)著管理事務(wù)的責(zé)任。事務(wù)是最小的邏輯工作單元,在這個(gè)工作單元中,對(duì)數(shù)據(jù)庫(kù)的所有更新工作,要么必須全部成功,要么必須全部失敗(回退)。只要應(yīng)用程序指定了某段程序?yàn)橐粋€(gè)事務(wù)并做了相應(yīng)的處理,數(shù)據(jù)庫(kù)系統(tǒng)會(huì)自動(dòng)維護(hù)事務(wù)本身的特性。并發(fā)處理數(shù)據(jù)庫(kù)的特點(diǎn)就是數(shù)據(jù)的集中管理和共享。在通常情況下總是有若干個(gè)事務(wù)并發(fā)地運(yùn)行,這些并行的事務(wù)可能并發(fā)地存取相同的數(shù)據(jù)。因此,數(shù)據(jù)庫(kù)管理系統(tǒng)的一個(gè)重要任務(wù)就是要有一種機(jī)制去保證這種并發(fā)的存取和修改不破壞數(shù)據(jù)的完整性,確保這些事務(wù)能正確地運(yùn)行并取得正確的結(jié)果。事務(wù)并發(fā)執(zhí)行時(shí)若不加控制的話將導(dǎo)致不正確的結(jié)果和數(shù)據(jù)庫(kù)的不一致?tīng)顟B(tài)。為保證數(shù)據(jù)庫(kù)數(shù)據(jù)正確地反映所有事務(wù)的更新以及在一事務(wù)修改數(shù)據(jù)時(shí)其它事務(wù)不同時(shí)修改這個(gè)數(shù)據(jù),數(shù)據(jù)庫(kù)系統(tǒng)用鎖來(lái)控制對(duì)數(shù)據(jù)的并發(fā)存取。死鎖當(dāng)事務(wù)T1想要鎖住的資源已被事務(wù)T2鎖住,而T2想要鎖住的資源也被T1鎖住時(shí),T1要等待T2釋放資源,T2要等待T1釋放資源。這樣,兩個(gè)事務(wù)互相等待造成死鎖。當(dāng)數(shù)據(jù)庫(kù)檢測(cè)到死鎖時(shí),檢測(cè)到死鎖的事務(wù)被告知出錯(cuò),回退當(dāng)前語(yǔ)句。通常被告知出錯(cuò)的事務(wù)應(yīng)顯式地回退整個(gè)事務(wù),但用戶也可不管被鎖住的資源直接提交或等會(huì)兒再重新做。數(shù)據(jù)庫(kù)會(huì)自動(dòng)檢測(cè)到死鎖并恢復(fù)。在應(yīng)用中,為避免死鎖,應(yīng)在事務(wù)的開(kāi)始加盡量強(qiáng)的鎖。在應(yīng)用系統(tǒng)中,存取同一張表的各種程序應(yīng)使用相同的次序,這會(huì)避免死鎖。讀一致性讀一致性是數(shù)據(jù)庫(kù)事務(wù)處理的重要特性,其含義為:一事務(wù)對(duì)數(shù)據(jù)庫(kù)的任何更新都在本事務(wù)內(nèi)見(jiàn)到,數(shù)據(jù)庫(kù)的數(shù)據(jù)對(duì)本事務(wù)是一致的。其它事務(wù)未提交的更新,在本事務(wù)內(nèi)見(jiàn)不到。即其它事務(wù)的任何更新,只要還沒(méi)提交,則對(duì)本事務(wù)而言,就好象不存在一樣。序號(hào)生成器在很多應(yīng)用系統(tǒng)要用到序號(hào)。由于序號(hào)是連續(xù)生成的,在大型系統(tǒng)中,會(huì)有多個(gè)用戶同時(shí)申請(qǐng)下一個(gè)序號(hào),序號(hào)生成便成了應(yīng)用系統(tǒng)的瓶頸問(wèn)題。為了解決這個(gè)問(wèn)題,大型數(shù)據(jù)庫(kù)都增加了序號(hào)對(duì)象。通過(guò)序號(hào)對(duì)象可以自動(dòng)生成序號(hào),多個(gè)用戶可以并發(fā)讀取,無(wú)須互相等待。視圖視圖是原始數(shù)據(jù)庫(kù)數(shù)據(jù)的一種變換,是查看表中數(shù)據(jù)的另外一種方式??梢詫⒁晥D看成一個(gè)移動(dòng)的窗口,通過(guò)它可以看到感興趣的數(shù)據(jù)。視圖是從一個(gè)或多個(gè)實(shí)際表中獲得的,這些表的數(shù)據(jù)存放在數(shù)據(jù)庫(kù)中。那些用于產(chǎn)生視圖的表叫做視圖的基表。一個(gè)視圖也可從另一視圖中產(chǎn)生。視圖的定義存在數(shù)據(jù)庫(kù)中,與此定義相關(guān)的數(shù)據(jù)并沒(méi)有再存一份于數(shù)據(jù)庫(kù)中。通過(guò)視圖看到的數(shù)據(jù)存放在基表中。視圖看上去非常象數(shù)據(jù)庫(kù)的物理表,對(duì)它的操作同任何其它的表一樣。當(dāng)通過(guò)視圖修改數(shù)據(jù)時(shí),實(shí)際上是在改變基表中的數(shù)據(jù);相反地,基表數(shù)據(jù)的改變也會(huì)自動(dòng)反映在由基表產(chǎn)生的視圖中。由于邏輯上的原因,有些視圖可以修改對(duì)應(yīng)的基表,有些則不能(僅僅能查詢)。視圖有以下的作用:簡(jiǎn)單性??吹降木褪切枰?。視圖不僅可以簡(jiǎn)化用戶對(duì)數(shù)據(jù)的理解,也可以簡(jiǎn)化他們的操作。那些被經(jīng)常使用的查詢可以被定義為視圖,從而使得用戶不必為以后的操作每次指定全部的條件。安全性。通過(guò)視圖用戶只能查詢和修改他們所能見(jiàn)到的數(shù)據(jù)。數(shù)據(jù)庫(kù)中的其它數(shù)據(jù)則既看不見(jiàn)也取不到。數(shù)據(jù)庫(kù)授權(quán)命令可以使每個(gè)用戶對(duì)數(shù)據(jù)庫(kù)的檢索限制到特定的數(shù)據(jù)庫(kù)對(duì)象上,但不能授權(quán)到數(shù)據(jù)庫(kù)的行和特定的列上。通過(guò)視圖,用戶可被限制在數(shù)據(jù)的不同子集上:基表的行的子集上。基表的列的子集上。基表的行和列的子集上。多個(gè)基表的連接所限定的行上?;淼臄?shù)據(jù)的統(tǒng)計(jì)匯總上。另一行視圖的一個(gè)子集上,或是一些視圖和基表合并后的子集上。邏輯數(shù)據(jù)獨(dú)立性。視圖可幫助用戶屏蔽真實(shí)表結(jié)構(gòu)變化帶來(lái)的影響。安全性視圖的安全性可以防止未授權(quán)的用戶查看特定的行或列。使用戶只能看到表中特定行的方法如下:在表中增加一個(gè)標(biāo)志用戶的列;建立視圖,使用戶只能看到標(biāo)有自己用戶名的列;把視圖授權(quán)給其他用戶。邏輯數(shù)據(jù)獨(dú)立性視圖可以在以下幾個(gè)方面使程序與數(shù)據(jù)獨(dú)立:如果應(yīng)用建立在數(shù)據(jù)庫(kù)表上,當(dāng)數(shù)據(jù)庫(kù)表發(fā)生變化時(shí),可以在表上建立視圖,通過(guò)視圖屏蔽表的變化,從而應(yīng)用程序可以不動(dòng)。如果應(yīng)用建立在數(shù)據(jù)庫(kù)表上,當(dāng)應(yīng)用發(fā)生變化時(shí),可以在表上建立視圖,通過(guò)視圖屏蔽應(yīng)用的變化,從而使數(shù)據(jù)庫(kù)表不動(dòng)。如果應(yīng)用建立在視圖上,當(dāng)數(shù)據(jù)庫(kù)表發(fā)生變化時(shí),可以在表上修改視圖,通過(guò)視圖屏蔽表的變化,從而應(yīng)用程序可以不動(dòng)。如果應(yīng)用建立在視圖上,當(dāng)應(yīng)用發(fā)生變化時(shí),可以在表上修改視圖,通過(guò)視圖屏蔽應(yīng)用的變化,從而使數(shù)據(jù)庫(kù)表不動(dòng)。調(diào)整數(shù)據(jù)庫(kù)設(shè)計(jì)以提高系統(tǒng)性能建立有用的性能標(biāo)準(zhǔn)需遵循下列標(biāo)準(zhǔn):?jiǎn)螚l記錄的更新應(yīng)當(dāng)在1秒鐘之內(nèi)。多條記錄的更新不超過(guò)10秒鐘。對(duì)于少于4個(gè)表的、數(shù)據(jù)有一定限度的查詢,響應(yīng)時(shí)間應(yīng)在5秒鐘之內(nèi)。對(duì)于其它的數(shù)據(jù)有一定限度的多表查詢應(yīng)在10秒鐘之內(nèi)。整個(gè)表的查詢時(shí)間應(yīng)在30秒鐘之內(nèi)。但是,不要盲目地接受性能標(biāo)準(zhǔn),有些極端可除外。數(shù)據(jù)庫(kù)的規(guī)范化從關(guān)系模型的角度來(lái)看,標(biāo)準(zhǔn)的表應(yīng)當(dāng)滿足第三范式(3NF)。這樣的表結(jié)構(gòu)最容易維護(hù),而且最具有可維護(hù)性。對(duì)數(shù)據(jù)庫(kù)進(jìn)行規(guī)范化處理具有以下的優(yōu)點(diǎn):因?yàn)楸淼牧袛?shù)減少了,所以搜索、排序、創(chuàng)建索引的速度可以加快。因?yàn)楸頊p小了,所以按照索引查詢的速度加快了。可以更好地使用段來(lái)控制數(shù)據(jù)的物理存儲(chǔ)。每個(gè)表可以只有很少的索引,因此可以加快更新速度??梢詼p少空值和冗余,使數(shù)據(jù)庫(kù)更緊湊。因?yàn)闇p少了冗余的數(shù)據(jù),可以使觸發(fā)器的執(zhí)行速度更快。減少數(shù)據(jù)的不規(guī)則性。規(guī)范化使數(shù)據(jù)庫(kù)的維護(hù)和修改變得更容易。數(shù)據(jù)庫(kù)經(jīng)過(guò)規(guī)范化后,數(shù)據(jù)的查詢雖然需要更多的連接操作,但對(duì)于具有索引的列,連接的速度是比較快的。然而,全部采用規(guī)范化的設(shè)計(jì)可能達(dá)不到最佳的性能。因此,雖然推薦盡量采用第三范式的設(shè)計(jì),但是在性能得不到滿足的情況下,需要非規(guī)范化的方法提高性能。通過(guò)非規(guī)范化設(shè)計(jì)提高數(shù)據(jù)庫(kù)的效率非規(guī)范化的原因在進(jìn)行數(shù)據(jù)庫(kù)的設(shè)計(jì)時(shí),出于對(duì)數(shù)據(jù)庫(kù)執(zhí)行效率的考慮,可以采用非規(guī)范化的方法。所謂非規(guī)范化的方法,就是在數(shù)據(jù)庫(kù)的設(shè)計(jì)中適當(dāng)?shù)亟档蛿?shù)據(jù)庫(kù)的范式。在下列情況下,通常要考慮進(jìn)行非規(guī)范化處理:大量頻繁的查詢過(guò)程所涉及的表都需要進(jìn)行連接。主要的應(yīng)用程序在執(zhí)行時(shí)要將表連接起來(lái)進(jìn)行查詢。對(duì)數(shù)據(jù)庫(kù)的計(jì)算需要臨時(shí)表或進(jìn)行復(fù)雜的查詢。非規(guī)范化技術(shù)對(duì)數(shù)據(jù)庫(kù)進(jìn)行非規(guī)范化的目的在于提高應(yīng)用程序的效率,但非規(guī)范化處理畢竟會(huì)增加數(shù)據(jù)冗余,會(huì)帶來(lái)相應(yīng)的數(shù)據(jù)完整性問(wèn)題。因此,在考慮非規(guī)范化處理時(shí),要慎重考慮下面的幾個(gè)問(wèn)題:哪些是比較緊急的事務(wù),哪些事務(wù)對(duì)響應(yīng)時(shí)間有要求。這些事務(wù)的執(zhí)行頻率有多高。這些緊急的事務(wù)要操作哪些表以及表中的哪些列,每次要訪問(wèn)多少行。哪種類型的事務(wù)執(zhí)行頻率最高:查詢、插入、刪除還是更
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 獨(dú)立董事2025年度履職評(píng)價(jià)與激勵(lì)措施合同3篇
- 二零二五年度禾青幼兒園教玩具采購(gòu)與幼兒園設(shè)施維護(hù)合同3篇
- 二零二五搬家公司合同模板:搬家保險(xiǎn)責(zé)任與賠償條款2篇
- 二零二五版物流行業(yè)預(yù)付款擔(dān)保合同2篇
- 二零二五版搬家服務(wù)與家政服務(wù)融合合同樣本2篇
- 二零二五年度蔬菜電子商務(wù)合同:線上銷售平臺(tái)與賣家之間的規(guī)則2篇
- 二零二五版汽車零部件購(gòu)銷合同標(biāo)準(zhǔn)及售后服務(wù)模板3篇
- 二零二五年度國(guó)際教育機(jī)構(gòu)合作辦學(xué)合同3篇
- 二零二五年度高壓變壓器安裝及安全防護(hù)技術(shù)合同3篇
- 二零二五版社保繳納與工傷保險(xiǎn)待遇保障合同3篇
- ICU常見(jiàn)藥物課件
- CNAS實(shí)驗(yàn)室評(píng)審不符合項(xiàng)整改報(bào)告
- 農(nóng)民工考勤表(模板)
- 承臺(tái)混凝土施工技術(shù)交底
- 臥床患者更換床單-軸線翻身
- 計(jì)量基礎(chǔ)知識(shí)培訓(xùn)教材201309
- 中考英語(yǔ) 短文填詞、選詞填空練習(xí)
- 一汽集團(tuán)及各合資公司組織架構(gòu)
- 阿特拉斯基本擰緊技術(shù)ppt課件
- 初一至初三數(shù)學(xué)全部知識(shí)點(diǎn)
- 新課程理念下的班主任工作藝術(shù)
評(píng)論
0/150
提交評(píng)論