數(shù)據(jù)庫設(shè)計(jì)規(guī)范標(biāo)準(zhǔn)_第1頁
數(shù)據(jù)庫設(shè)計(jì)規(guī)范標(biāo)準(zhǔn)_第2頁
數(shù)據(jù)庫設(shè)計(jì)規(guī)范標(biāo)準(zhǔn)_第3頁
數(shù)據(jù)庫設(shè)計(jì)規(guī)范標(biāo)準(zhǔn)_第4頁
數(shù)據(jù)庫設(shè)計(jì)規(guī)范標(biāo)準(zhǔn)_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

關(guān)系型數(shù)據(jù)庫設(shè)計(jì)規(guī)范目錄TOC\o"1-3"文檔類別使用對(duì)象 41. 概述 51.1簡介 51.2術(shù)語定義 51.3參考資料 51.4版本更新記錄 52.?dāng)?shù)據(jù)庫設(shè)計(jì)的目標(biāo) 63. 數(shù)據(jù)庫的特征 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ǔ)過程 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ù)庫設(shè)計(jì)以提高系統(tǒng)性能 134.1 建立有用的性能標(biāo)準(zhǔn) 134.2 數(shù)據(jù)庫的規(guī)范化 134.3 通過非規(guī)范化設(shè)計(jì)提高數(shù)據(jù)庫的效率 134.3.3 非規(guī)范化的原因 134.3.4 非規(guī)范化技術(shù) 144.3.5 進(jìn)行非規(guī)范化處理時(shí)的注意事項(xiàng) 144.4 表的大小 154.4.3 表是否過小 154.4.4 表是否過大 154.4.5 如何減小表的尺寸 154.5 記錄的大小 154.5.3 列有最佳的位置嗎 154.5.4 存在最佳的記錄大小嗎 154.5.5 記錄是否過小 154.5.6 記錄是否過大 154.5.7 如何減小記錄 164.5.8 總結(jié) 165. 其它 16

文檔類別使用對(duì)象文檔類別該文檔是通用軟件公司的關(guān)系型數(shù)據(jù)庫的設(shè)計(jì)規(guī)范,是技術(shù)文檔。使用對(duì)象該文檔使用人員包括:開發(fā)本部總經(jīng)理各產(chǎn)品部、事業(yè)部的經(jīng)理、項(xiàng)目經(jīng)理、設(shè)計(jì)人員軟件中心負(fù)責(zé)人、設(shè)計(jì)人員公司總經(jīng)理

概述1.1簡介本文檔總結(jié)了公司進(jìn)行多年來的SYBASE數(shù)據(jù)庫設(shè)計(jì)經(jīng)驗(yàn),目的將公司進(jìn)行數(shù)據(jù)庫設(shè)計(jì)的經(jīng)驗(yàn)積累下來,實(shí)現(xiàn)設(shè)計(jì)經(jīng)驗(yàn)的復(fù)用,為項(xiàng)目評(píng)審與項(xiàng)目質(zhì)量保證提供進(jìn)行檢查的依據(jù)。本規(guī)范從數(shù)據(jù)庫設(shè)計(jì)的目的、數(shù)據(jù)庫的各個(gè)特征、數(shù)據(jù)庫的規(guī)范化等各個(gè)方面進(jìn)行論述,對(duì)進(jìn)行SYBASE數(shù)據(jù)庫的設(shè)計(jì)提供了很好的依據(jù)。1.2術(shù)語定義1.3參考資料《Powerbuilder開發(fā)設(shè)計(jì)中的數(shù)據(jù)庫設(shè)計(jì)》曉通數(shù)據(jù)庫研究與發(fā)展中心公司1.4版本更新記錄版本/修訂版日期修改記錄備注1.010/10初始版本

2.?dāng)?shù)據(jù)庫設(shè)計(jì)的目標(biāo)好的數(shù)據(jù)庫物理設(shè)計(jì)應(yīng)當(dāng)充分考慮應(yīng)用的需求和開發(fā)工具的特征,應(yīng)當(dāng)充分利用和挖掘數(shù)據(jù)庫的功能。一流的數(shù)據(jù)庫設(shè)計(jì)會(huì)給整個(gè)應(yīng)用系統(tǒng)帶來以下的好處:維護(hù)容易。當(dāng)需求發(fā)生變化時(shí),優(yōu)良的數(shù)據(jù)庫設(shè)計(jì)會(huì)使應(yīng)用系統(tǒng)容易地適應(yīng)這種變化。編程簡單。由于數(shù)據(jù)庫設(shè)計(jì)充分挖掘了數(shù)據(jù)庫的功能,所以應(yīng)用程序的復(fù)雜度可以明顯降低。加快開發(fā)速度。因?yàn)閿?shù)據(jù)庫設(shè)計(jì)充分地考慮了需求和開發(fā)工具的特征,所以開發(fā)人員會(huì)感到左右逢源,得心應(yīng)手,從而可以加快開發(fā)速度。系統(tǒng)具有良好的整體運(yùn)行效率。數(shù)據(jù)庫的特征完整性約束。完整性約束允許在表上定義某種約束條件,這些條件作為表定義的一部分存在,從而強(qiáng)制表中的數(shù)據(jù)滿足一定的規(guī)則。存儲(chǔ)過程。存儲(chǔ)過程是由流控制語句(if…else)和SQL語句書寫的過程,這個(gè)過程經(jīng)過編譯和優(yōu)化后存儲(chǔ)在數(shù)據(jù)庫服務(wù)器中,使用時(shí)只要調(diào)用即可。觸發(fā)器。觸發(fā)器是一種特殊的存儲(chǔ)過程,不同的是這種過程不是由程序調(diào)用來執(zhí)行,而是通過數(shù)據(jù)庫數(shù)據(jù)的更新自動(dòng)地“觸發(fā)”執(zhí)行。事務(wù)處理:事務(wù)是最小的邏輯工作單元,在這個(gè)單元中對(duì)數(shù)據(jù)庫所有的更新要么全成功要么全失敗。并發(fā)處理。允許用戶在沒有沖突的情況下更新表中不同的行。行級(jí)鎖和頁級(jí)鎖對(duì)聯(lián)機(jī)事務(wù)處理非常有用。序號(hào)生成器。數(shù)據(jù)庫可以自動(dòng)生成連續(xù)的序號(hào)供應(yīng)用程序使用。遵守工業(yè)標(biāo)準(zhǔn)的SQL。視圖。視圖是原始數(shù)據(jù)庫表的變換,可給應(yīng)用程序帶來安全性、簡單性和獨(dú)立性。分布處理。數(shù)據(jù)可以分布在網(wǎng)絡(luò)的多個(gè)點(diǎn)上,數(shù)據(jù)本身支持分布查詢和分布修改。數(shù)據(jù)復(fù)制。數(shù)據(jù)可以在網(wǎng)絡(luò)的多個(gè)數(shù)據(jù)庫點(diǎn)相互復(fù)制。3.1完整性約束完整性約束是數(shù)據(jù)庫用于維護(hù)數(shù)據(jù)庫完整性的一種機(jī)制。這種約束是表定義的一部分,是內(nèi)部的。與在應(yīng)用程序中維護(hù)數(shù)據(jù)庫的完整性不同,它的代價(jià)小而且性能高。完整性約束有以下兩點(diǎn)作用:使企業(yè)的規(guī)則與數(shù)據(jù)庫聯(lián)系起來。防止操作員或終端用戶輸入錯(cuò)誤的數(shù)據(jù),破壞數(shù)據(jù)庫的完整性。完整性約束有以下幾種:notnull約束缺省值unique約束primarykey約束foreignkey約束check約束3.1.1notnull約束notnull的含義是列中不能有空值。notnull在創(chuàng)建表時(shí)定義。notnull約束限定了列中必須有值,但不能限定列中可以有什么值,因此它常常與其它的約束配合使用。3.1.2缺省值缺省值是在數(shù)據(jù)錄入時(shí),若用戶沒有輸入數(shù)據(jù),數(shù)據(jù)庫自動(dòng)輸入的值。下面是定義缺省時(shí)應(yīng)注意的一些事項(xiàng):要確保列寬對(duì)缺省值來說足夠大。要注意缺省值與規(guī)則間的沖突,確保缺省值為規(guī)則所允許,否則,缺省值會(huì)被規(guī)則忽略掉。unique約束唯一列是這樣的列,它的值不能在表中重復(fù)出現(xiàn)。注意,唯一列與主鍵不同,主鍵可用來唯一地標(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)要求。參照完整性約束參照完整性約束用來約束兩個(gè)表間的關(guān)系??罩岛屯獠挎I對(duì)于缺省(無notnull或check語句)的情況,外部鍵約束為組合外部鍵實(shí)施“無匹配”規(guī)則。通過使用check和notnull也可使用全部或部分規(guī)則:在組合外部鍵中實(shí)施全匹配規(guī)則,要求鍵的全部要么都為空要么都不為空。在一般情況下,不能使用參照完整性在組合鍵中實(shí)施部分匹配規(guī)則。部分匹配規(guī)則要求鍵的非空部分出現(xiàn)在引用表的主鍵的對(duì)應(yīng)部分上,這種情況一般要用觸發(fā)器來處理。父表和子表的關(guān)系父表和子表的關(guān)系決定于在子表的外部鍵上定義的其它類型的完整性約束。在外部鍵上沒有約束。在外部鍵上有非空約束。在外部鍵上有unique約束。在外部鍵上有unique和notnull約束。check約束當(dāng)需要根據(jù)邏輯表達(dá)式來限定列的值域時(shí),可以用check完整性約束。check約束的寫法和where子句的寫法一樣,但它有如下的限制:條件必須是能夠利用更新行中的值來求值的表達(dá)式。條件中不能有子查詢或序號(hào)。條件中不能含有函數(shù)。條件中不能含有偽列。存儲(chǔ)過程存儲(chǔ)過程是由流控制和SQL語句書寫的過程,這個(gè)過程經(jīng)編譯和優(yōu)化后存儲(chǔ)在數(shù)據(jù)庫服務(wù)器中,使用時(shí)只要調(diào)用即可。使用存儲(chǔ)過程有以下優(yōu)點(diǎn):存儲(chǔ)過程的能力大大增強(qiáng)了SQL語言的功能和靈活性。存儲(chǔ)過程可以用流控制語句編寫,有很強(qiáng)的靈活性,可以完成復(fù)雜的判斷和較復(fù)雜的運(yùn)算??杀WC數(shù)據(jù)的安全性和完整性。通過存儲(chǔ)過程可以使沒有權(quán)限的用戶在控制之下間接地寸取數(shù)據(jù)庫,從而保證數(shù)據(jù)的安全。通過存儲(chǔ)過程可以使相關(guān)的動(dòng)作在一起發(fā)生,從而可以維護(hù)數(shù)據(jù)庫的完整性。在運(yùn)行存儲(chǔ)過程前,數(shù)據(jù)庫已對(duì)其進(jìn)行了語法和句法分析,并給出了優(yōu)化執(zhí)行方案。這種已經(jīng)編譯好的過程可極大地改善SQL語句的性能。由于執(zhí)行SQL語句的大部分工作已經(jīng)完成,所以存儲(chǔ)過程能以極快的速度執(zhí)行??梢越档途W(wǎng)絡(luò)的通信量。使體現(xiàn)企業(yè)規(guī)則的運(yùn)算程序放入數(shù)據(jù)庫服務(wù)器中,以便:集中控制。當(dāng)企業(yè)規(guī)則發(fā)生變化時(shí)在服務(wù)器中改變存儲(chǔ)過程即可,無須修改任何應(yīng)用程序。觸發(fā)器觸發(fā)器是一種特殊的存儲(chǔ)過程,它在插入、刪除或修改特定表中的數(shù)據(jù)時(shí)觸發(fā)執(zhí)行,它比數(shù)據(jù)庫本身標(biāo)準(zhǔn)的功能有更精細(xì)和更復(fù)雜的數(shù)據(jù)控制能力。數(shù)據(jù)庫觸發(fā)器有以下的作用:安全性??梢曰跀?shù)據(jù)庫的值使用戶具有操作數(shù)據(jù)庫的某種權(quán)利??梢曰跁r(shí)間限制用戶的操作??梢曰跀?shù)據(jù)庫中的數(shù)據(jù)限制用戶的操作。審計(jì)??梢愿櫽脩魧?duì)數(shù)據(jù)庫的操作。審計(jì)用戶操作數(shù)據(jù)庫的語句。把用戶對(duì)數(shù)據(jù)庫的更新寫入審計(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ù)庫對(duì)象。提供可變的缺省值。實(shí)現(xiàn)復(fù)雜的非標(biāo)準(zhǔn)的數(shù)據(jù)庫相關(guān)完整性規(guī)則。觸發(fā)器可以對(duì)數(shù)據(jù)庫中相關(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語句被當(dāng)作單個(gè)工作單元來處理。事務(wù)具有以下的作用:一致性:同時(shí)進(jìn)行的查詢和更新彼此不會(huì)發(fā)生沖突,其他用戶不會(huì)看到發(fā)生了變化但尚未提交的數(shù)據(jù)??苫謴?fù)性:一旦系統(tǒng)故障,數(shù)據(jù)庫會(huì)自動(dòng)地完全恢復(fù)未完成的事務(wù)。事務(wù)與一致性事務(wù)是完整性的單位,一個(gè)事務(wù)的執(zhí)行是把數(shù)據(jù)庫從一個(gè)一致的狀態(tài)轉(zhuǎn)換成另一個(gè)一致的狀態(tài)。因此,如果事務(wù)孤立執(zhí)行時(shí)是正確的,但如果多個(gè)事務(wù)并發(fā)交錯(cuò)地執(zhí)行,就可能相互干擾,造成數(shù)據(jù)庫狀態(tài)的不一致性。在多用戶環(huán)境中,數(shù)據(jù)庫必須避免同時(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),讀的不一致性這種臟讀或說讀的不一致性叫“寫—讀依賴”(Write—ReadDependency)。光標(biāo)帶來的當(dāng)前值的混亂事務(wù)在執(zhí)行過程中它在某個(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)行修改操作的過程中可能會(huì)發(fā)生故障,這時(shí)需要將已做的修改回退(Rollback)。如果在已進(jìn)行過或已發(fā)現(xiàn)錯(cuò)誤尚未復(fù)原之前允許其它事務(wù)讀已做過的修改(臟讀),則會(huì)導(dǎo)致連鎖退出。一事務(wù)在對(duì)一表更新時(shí),另外的事務(wù)卻修改或刪除此表的定義。事務(wù)和恢復(fù)數(shù)據(jù)庫本身肩負(fù)著管理事務(wù)的責(zé)任。事務(wù)是最小的邏輯工作單元,在這個(gè)工作單元中,對(duì)數(shù)據(jù)庫的所有更新工作,要么必須全部成功,要么必須全部失?。ɑ赝耍?。只要應(yīng)用程序指定了某段程序?yàn)橐粋€(gè)事務(wù)并做了相應(yīng)的處理,數(shù)據(jù)庫系統(tǒng)會(huì)自動(dòng)維護(hù)事務(wù)本身的特性。并發(fā)處理數(shù)據(jù)庫的特點(diǎn)就是數(shù)據(jù)的集中管理和共享。在通常情況下總是有若干個(gè)事務(wù)并發(fā)地運(yùn)行,這些并行的事務(wù)可能并發(fā)地存取相同的數(shù)據(jù)。因此,數(shù)據(jù)庫管理系統(tǒng)的一個(gè)重要任務(wù)就是要有一種機(jī)制去保證這種并發(fā)的存取和修改不破壞數(shù)據(jù)的完整性,確保這些事務(wù)能正確地運(yùn)行并取得正確的結(jié)果。事務(wù)并發(fā)執(zhí)行時(shí)若不加控制的話將導(dǎo)致不正確的結(jié)果和數(shù)據(jù)庫的不一致狀態(tài)。為保證數(shù)據(jù)庫數(shù)據(jù)正確地反映所有事務(wù)的更新以及在一事務(wù)修改數(shù)據(jù)時(shí)其它事務(wù)不同時(shí)修改這個(gè)數(shù)據(jù),數(shù)據(jù)庫系統(tǒng)用鎖來控制對(duì)數(shù)據(jù)的并發(fā)存取。死鎖當(dāng)事務(wù)T1想要鎖住的資源已被事務(wù)T2鎖住,而T2想要鎖住的資源也被T1鎖住時(shí),T1要等待T2釋放資源,T2要等待T1釋放資源。這樣,兩個(gè)事務(wù)互相等待造成死鎖。當(dāng)數(shù)據(jù)庫檢測到死鎖時(shí),檢測到死鎖的事務(wù)被告知出錯(cuò),回退當(dāng)前語句。通常被告知出錯(cuò)的事務(wù)應(yīng)顯式地回退整個(gè)事務(wù),但用戶也可不管被鎖住的資源直接提交或等會(huì)兒再重新做。數(shù)據(jù)庫會(huì)自動(dòng)檢測到死鎖并恢復(fù)。在應(yīng)用中,為避免死鎖,應(yīng)在事務(wù)的開始加盡量強(qiáng)的鎖。在應(yīng)用系統(tǒng)中,存取同一張表的各種程序應(yīng)使用相同的次序,這會(huì)避免死鎖。讀一致性讀一致性是數(shù)據(jù)庫事務(wù)處理的重要特性,其含義為:一事務(wù)對(duì)數(shù)據(jù)庫的任何更新都在本事務(wù)內(nèi)見到,數(shù)據(jù)庫的數(shù)據(jù)對(duì)本事務(wù)是一致的。其它事務(wù)未提交的更新,在本事務(wù)內(nèi)見不到。即其它事務(wù)的任何更新,只要還沒提交,則對(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)的瓶頸問題。為了解決這個(gè)問題,大型數(shù)據(jù)庫都增加了序號(hào)對(duì)象。通過序號(hào)對(duì)象可以自動(dòng)生成序號(hào),多個(gè)用戶可以并發(fā)讀取,無須互相等待。視圖視圖是原始數(shù)據(jù)庫數(shù)據(jù)的一種變換,是查看表中數(shù)據(jù)的另外一種方式??梢詫⒁晥D看成一個(gè)移動(dòng)的窗口,通過它可以看到感興趣的數(shù)據(jù)。視圖是從一個(gè)或多個(gè)實(shí)際表中獲得的,這些表的數(shù)據(jù)存放在數(shù)據(jù)庫中。那些用于產(chǎn)生視圖的表叫做視圖的基表。一個(gè)視圖也可從另一視圖中產(chǎn)生。視圖的定義存在數(shù)據(jù)庫中,與此定義相關(guān)的數(shù)據(jù)并沒有再存一份于數(shù)據(jù)庫中。通過視圖看到的數(shù)據(jù)存放在基表中。視圖看上去非常象數(shù)據(jù)庫的物理表,對(duì)它的操作同任何其它的表一樣。當(dāng)通過視圖修改數(shù)據(jù)時(shí),實(shí)際上是在改變基表中的數(shù)據(jù);相反地,基表數(shù)據(jù)的改變也會(huì)自動(dòng)反映在由基表產(chǎn)生的視圖中。由于邏輯上的原因,有些視圖可以修改對(duì)應(yīng)的基表,有些則不能(僅僅能查詢)。視圖有以下的作用:簡單性??吹降木褪切枰摹R晥D不僅可以簡化用戶對(duì)數(shù)據(jù)的理解,也可以簡化他們的操作。那些被經(jīng)常使用的查詢可以被定義為視圖,從而使得用戶不必為以后的操作每次指定全部的條件。安全性。通過視圖用戶只能查詢和修改他們所能見到的數(shù)據(jù)。數(shù)據(jù)庫中的其它數(shù)據(jù)則既看不見也取不到。數(shù)據(jù)庫授權(quán)命令可以使每個(gè)用戶對(duì)數(shù)據(jù)庫的檢索限制到特定的數(shù)據(jù)庫對(duì)象上,但不能授權(quán)到數(shù)據(jù)庫的行和特定的列上。通過視圖,用戶可被限制在數(shù)據(jù)的不同子集上:基表的行的子集上?;淼牧械淖蛹稀;淼男泻土械淖蛹?。多個(gè)基表的連接所限定的行上?;淼臄?shù)據(jù)的統(tǒng)計(jì)匯總上。另一行視圖的一個(gè)子集上,或是一些視圖和基表合并后的子集上。邏輯數(shù)據(jù)獨(dú)立性。視圖可幫助用戶屏蔽真實(shí)表結(jié)構(gòu)變化帶來的影響。安全性視圖的安全性可以防止未授權(quán)的用戶查看特定的行或列。使用戶只能看到表中特定行的方法如下:在表中增加一個(gè)標(biāo)志用戶的列;建立視圖,使用戶只能看到標(biāo)有自己用戶名的列;把視圖授權(quán)給其他用戶。邏輯數(shù)據(jù)獨(dú)立性視圖可以在以下幾個(gè)方面使程序與數(shù)據(jù)獨(dú)立:如果應(yīng)用建立在數(shù)據(jù)庫表上,當(dāng)數(shù)據(jù)庫表發(fā)生變化時(shí),可以在表上建立視圖,通過視圖屏蔽表的變化,從而應(yīng)用程序可以不動(dòng)。如果應(yīng)用建立在數(shù)據(jù)庫表上,當(dāng)應(yīng)用發(fā)生變化時(shí),可以在表上建立視圖,通過視圖屏蔽應(yīng)用的變化,從而使數(shù)據(jù)庫表不動(dòng)。如果應(yīng)用建立在視圖上,當(dāng)數(shù)據(jù)庫表發(fā)生變化時(shí),可以在表上修改視圖,通過視圖屏蔽表的變化,從而應(yīng)用程序可以不動(dòng)。如果應(yīng)用建立在視圖上,當(dāng)應(yīng)用發(fā)生變化時(shí),可以在表上修改視圖,通過視圖屏蔽應(yīng)用的變化,從而使數(shù)據(jù)庫表不動(dòng)。調(diào)整數(shù)據(jù)庫設(shè)計(jì)以提高系統(tǒng)性能建立有用的性能標(biāo)準(zhǔn)需遵循下列標(biāo)準(zhǔn):單條記錄的更新應(yīng)當(dāng)在1秒鐘之內(nèi)。多條記錄的更新不超過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ù)庫的規(guī)范化從關(guān)系模型的角度來看,標(biāo)準(zhǔn)的表應(yīng)當(dāng)滿足第三范式(3NF)。這樣的表結(jié)構(gòu)最容易維護(hù),而且最具有可維護(hù)性。對(duì)數(shù)據(jù)庫進(jìn)行規(guī)范化處理具有以下的優(yōu)點(diǎn):因?yàn)楸淼牧袛?shù)減少了,所以搜索、排序、創(chuàng)建索引的速度可以加快。因?yàn)楸頊p小了,所以按照索引查詢的速度加快了。可以更好地使用段來控制數(shù)據(jù)的物理存儲(chǔ)。每個(gè)表可以只有很少的索引,因此可以加快更新速度??梢詼p少空值和冗余,使數(shù)據(jù)庫更緊湊。因?yàn)闇p少了冗余的數(shù)據(jù),可以使觸發(fā)器的執(zhí)行速度更快。減少數(shù)據(jù)的不規(guī)則性。規(guī)范化使數(shù)據(jù)庫的維護(hù)和修改變得更容易。數(shù)據(jù)庫經(jīng)過規(guī)范化后,數(shù)據(jù)的查詢雖然需要更多的連接操作,但對(duì)于具有索引的列,連接的速度是比較快的。然而,全部采用規(guī)范化的設(shè)計(jì)可能達(dá)不到最佳的性能。因此,雖然推薦盡量采用第三范式的設(shè)計(jì),但是在性能得不到滿足的情況下,需要非規(guī)范化的方法提高性能。通過非規(guī)范化設(shè)計(jì)提高數(shù)據(jù)庫的效率非規(guī)范化的原因在進(jìn)行數(shù)據(jù)庫的設(shè)計(jì)時(shí),出于對(duì)數(shù)據(jù)庫執(zhí)行效率的考慮,可以采用非規(guī)范化的方法。所謂非規(guī)范化的方法,就是在數(shù)據(jù)庫的設(shè)計(jì)中適當(dāng)?shù)亟档蛿?shù)據(jù)庫的范式。在下列情況下,通常要考慮進(jìn)行非規(guī)范化處理:大量頻繁的查詢過程所涉及的表都需要進(jìn)行連接。主要的應(yīng)用程序在執(zhí)行時(shí)要將表連接起來進(jìn)行查詢。對(duì)數(shù)據(jù)庫的計(jì)算需要臨時(shí)表或進(jìn)行復(fù)雜的查詢。非規(guī)范化技術(shù)對(duì)數(shù)據(jù)庫進(jìn)行非規(guī)范化的目的在于提高應(yīng)用程序的效率,但非規(guī)范化處理畢竟會(huì)增加數(shù)據(jù)冗余,會(huì)帶來相應(yīng)的數(shù)據(jù)完整性問題。因此,在考慮非規(guī)范化處理時(shí),要慎重考慮下面的幾個(gè)問題:哪些是比較緊急的事務(wù),哪些事務(wù)對(duì)響應(yīng)時(shí)間有要求。這些事務(wù)的執(zhí)行頻率有多高。這些緊急的事務(wù)要操作哪些表以及表中的哪些列,每次要訪問多少行。哪種類型的事務(wù)執(zhí)行頻率最高:查詢、插入、刪除還是更

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論