




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、藍(lán)夢(mèng)大學(xué)官方網(wǎng)站及教學(xué)平臺(tái)系統(tǒng)數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì)書(shū)藍(lán)夢(mèng)教育集團(tuán)有限公司信息系統(tǒng)開(kāi)發(fā)中心版權(quán)所有不得復(fù)制二零一六年十月二十三日文檔屬性文檔屬性文件狀態(tài):文件標(biāo)識(shí):bluedream-pm-04j草稿當(dāng)前版本:1.0正式發(fā)布作者:正在修改文件密級(jí):普通v 秘密絕密變更記錄日期作者版本變更內(nèi)容審閱者目錄1 引言51.1 目的51.1.1為什么要提供此文檔51.1.2 木文檔主要內(nèi)容51.3閱讀對(duì)象61.1.4 適用環(huán)境61.2 項(xiàng)目背景61.2.1為什么要進(jìn)行此系統(tǒng)項(xiàng)目的開(kāi)發(fā)工作61.2.2系統(tǒng)將采用“逐級(jí)分階段”的模式進(jìn)行系統(tǒng)擴(kuò)容61.3 術(shù)語(yǔ)定義81.4 參考資料82 數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì)原則和策略9
2、2.1 系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)的基本原則92.1.1遵守項(xiàng)目組所制定出的命名規(guī)范92.1.2遵守范式標(biāo)準(zhǔn)和合理地?cái)?shù)據(jù)兀余102.1.3保證數(shù)據(jù)的完整性和一致性112.1.4主鍵定義及主鍵值的合理設(shè)置122.1.5在基本數(shù)據(jù)庫(kù)表的基礎(chǔ)上可以創(chuàng)建出中間表和臨吋表132.1.6將多對(duì)多的關(guān)系轉(zhuǎn)換為一對(duì)多的關(guān)系142.2 數(shù)據(jù)庫(kù)系統(tǒng)安全性設(shè)計(jì)152.2.1數(shù)據(jù)庫(kù)表數(shù)據(jù)訪問(wèn)的安全保密設(shè)計(jì)152.2.2數(shù)據(jù)訪問(wèn)必須要進(jìn)行身份驗(yàn)證162.2.3遵守最少權(quán)限的角色分配原則162.2.4 防范sql注入攻擊172.2.5充分應(yīng)用視圖技術(shù)提高數(shù)據(jù)庫(kù)系統(tǒng)安全性182.2.6對(duì)敏感數(shù)據(jù)的訪問(wèn)需耍應(yīng)用審計(jì)功能182.3 數(shù)據(jù)庫(kù)
3、系統(tǒng)的性能優(yōu)化設(shè)計(jì)192.3.1盡可能提高數(shù)據(jù)庫(kù)系統(tǒng)的運(yùn)行效率192.3.2充分應(yīng)用數(shù)據(jù)庫(kù)系統(tǒng)中的索引技術(shù)203 概念設(shè)計(jì)213業(yè)務(wù)實(shí)體213.2 實(shí)體關(guān)系214 物理設(shè)計(jì)214.1 數(shù)據(jù)庫(kù)表設(shè)計(jì)214.1.1數(shù)據(jù)庫(kù)表匯總214.1.2數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì)214.2 數(shù)據(jù)字典224.3 編碼表225 視圖、存儲(chǔ)過(guò)程、觸發(fā)器設(shè)計(jì)225.1 數(shù)據(jù)視圖225.2 自定義函數(shù)225.3 自定義存儲(chǔ)過(guò)程225.4 自定義觸發(fā)器221引言1.1 目的1.1.1為什么要提供此文檔規(guī)范化的軟件文檔是工程化開(kāi)發(fā)軟件系統(tǒng)的基礎(chǔ),文檔資料是軟件系統(tǒng)的牛命線。而 一個(gè)好的軟件系統(tǒng)設(shè)計(jì)會(huì)讓項(xiàng)目開(kāi)發(fā)組省時(shí)、省力,讓企業(yè)省錢,
4、讓用戶省心。因此,在 整個(gè)軟件開(kāi)發(fā)的生命過(guò)程中,軟件系統(tǒng)的設(shè)計(jì)起著至關(guān)重耍的作用一一好的軟件系統(tǒng)的設(shè) 計(jì)會(huì)提高軟件系統(tǒng)的總體質(zhì)量、節(jié)約開(kāi)發(fā)成本,同時(shí)也是改進(jìn)質(zhì)量、按時(shí)和按需交付軟件 產(chǎn)品的關(guān)鍵因素。從整個(gè)軟件系統(tǒng)項(xiàng)目各個(gè)開(kāi)發(fā)階段來(lái)看,軟件系統(tǒng)項(xiàng)目的開(kāi)發(fā)過(guò)程可以分為需求、設(shè) 計(jì)、編碼、測(cè)試等主要的階段。其中系統(tǒng)設(shè)計(jì)承接系統(tǒng)的需求分析并基于準(zhǔn)確的系統(tǒng)需求 分析,對(duì)項(xiàng)目的目標(biāo)進(jìn)行結(jié)構(gòu)化搭建一一軟件系統(tǒng)的需求具有驅(qū)動(dòng)性,而軟件系統(tǒng)的設(shè)計(jì) 則具有導(dǎo)航性;設(shè)計(jì)階段所產(chǎn)生出的設(shè)計(jì)說(shuō)明書(shū)以及設(shè)計(jì)規(guī)范不僅是后續(xù)系統(tǒng)編碼開(kāi)發(fā)實(shí) 現(xiàn)階段的作業(yè)指導(dǎo)和為編碼人員提供開(kāi)發(fā)實(shí)現(xiàn)的依據(jù),也是系統(tǒng)測(cè)試人員開(kāi)發(fā)相關(guān)的測(cè)試 用例的
5、指導(dǎo)書(shū);規(guī)范化的設(shè)計(jì)文檔同時(shí)也能夠方便項(xiàng)目的管理人員制定幽項(xiàng)目計(jì)劃書(shū)并按 其要求布置和控制開(kāi)發(fā)工作的全過(guò)程。本文檔是對(duì)藍(lán)夢(mèng)大學(xué)官方網(wǎng)站及教學(xué)平臺(tái)系統(tǒng)總體設(shè)計(jì)書(shū)的進(jìn)一步擴(kuò)展,包含有 項(xiàng)目中的各個(gè)數(shù)據(jù)庫(kù)表結(jié)構(gòu)定義。為此,將本文檔命名為藍(lán)夢(mèng)大學(xué)官方網(wǎng)詁及教學(xué)平臺(tái) 系統(tǒng)數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì)書(shū)(簡(jiǎn)稱為藍(lán)夢(mèng)大學(xué)官方網(wǎng)站及教學(xué)平臺(tái)數(shù)據(jù)庫(kù)表設(shè)計(jì)書(shū))。1.1.2本文檔主要內(nèi)容本文檔將描述對(duì)“藍(lán)夢(mèng)人學(xué)官方網(wǎng)站及教學(xué)平臺(tái)系統(tǒng)”系統(tǒng)的數(shù)據(jù)庫(kù)表結(jié)構(gòu)的說(shuō)明, 主要包括“概念設(shè)計(jì)”、“物理設(shè)計(jì)”、“完整性設(shè)計(jì)”和“安全性設(shè)計(jì)”、“性能優(yōu)化 設(shè)計(jì)”,并最終產(chǎn)牛出“藍(lán)夢(mèng)大學(xué)官方網(wǎng)站及教學(xué)平臺(tái)系統(tǒng)”項(xiàng)目的數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì)書(shū)。1.1.
6、3閱讀對(duì)象本文檔主要提供給與“藍(lán)夢(mèng)大學(xué)官方網(wǎng)站及教學(xué)平臺(tái)系統(tǒng)”項(xiàng)目相關(guān)的人員閱讀和參 考,主要的人員如下:1、項(xiàng)目管理人員2、系統(tǒng)設(shè)計(jì)人員3、系統(tǒng)開(kāi)發(fā)人員4、系統(tǒng)測(cè)試人員其中“系統(tǒng)開(kāi)發(fā)人員”、“系統(tǒng)測(cè)試人員”應(yīng)重點(diǎn)閱讀木文檔的各部分,其他人員可 選擇性閱讀本文檔。1.1.4適用環(huán)境本文檔定義的數(shù)據(jù)結(jié)構(gòu)適用于mysql5.0或更高版本。1-2 項(xiàng)目背景1. 2.1為什么要進(jìn)行此系統(tǒng)項(xiàng)目的開(kāi)發(fā)工作藍(lán)夢(mèng)大學(xué)近30多年一直從事和開(kāi)展職業(yè)教育服務(wù)、高校師資培訓(xùn)、企業(yè)信息化咨詢服 務(wù)、社會(huì)個(gè)體it技能培訓(xùn)等業(yè)務(wù)。官方門戶網(wǎng)站在1900年吋就已經(jīng) 正式上線,至今已經(jīng)進(jìn)行了多次的改版和更新。為能夠適應(yīng)企業(yè)員工
7、、大學(xué)生就業(yè)、高校師資培訓(xùn)等傳統(tǒng)業(yè)務(wù)發(fā)展的需要,同時(shí)也能 夠適應(yīng)新形勢(shì)下的在線培訓(xùn)(e-learning)的業(yè)務(wù)需要以擴(kuò)大培訓(xùn)中心的業(yè)務(wù)量,不僅急切 需要對(duì)原有的藍(lán)夢(mèng)大學(xué)官方網(wǎng)站進(jìn)行功能擴(kuò)展、性能提升、頁(yè)而美觀的改進(jìn)和進(jìn)一步提高 系統(tǒng)的用戶體驗(yàn),而ii也需要將藍(lán)夢(mèng)人學(xué)官方網(wǎng)站從一般的培訓(xùn)課程宣傳擴(kuò)展為在線培訓(xùn) (e-learning)的業(yè)務(wù)平臺(tái)。1.2.2系統(tǒng)將采用“逐級(jí)分階段”的模式進(jìn)行系統(tǒng)擴(kuò)容最終能夠構(gòu)建岀一個(gè)網(wǎng)絡(luò)化的教學(xué)平臺(tái),從而更好地輔助和擴(kuò)展現(xiàn)有的各個(gè)業(yè)務(wù)服務(wù)。 但考慮到系統(tǒng)開(kāi)發(fā)的風(fēng)險(xiǎn)和業(yè)務(wù)發(fā)展的實(shí)際需要,木系統(tǒng)將會(huì)采用“逐級(jí)分階段”的模式進(jìn)行系統(tǒng)擴(kuò)容,而不是“一步到位”的高成本的構(gòu)
8、建模式一一也就是一期工程首先為官方 門戶網(wǎng)站,二期工程再擴(kuò)展為網(wǎng)絡(luò)教學(xué)平臺(tái)和培訓(xùn)業(yè)務(wù)工作平臺(tái)。1. 3術(shù)語(yǔ)定義縮寫(xiě)、術(shù)語(yǔ)解釋課件課件(courseware)是指為課程的教學(xué)或?qū)W習(xí)而編制的計(jì)算機(jī)程序及相應(yīng)的 文檔資料。一般采用文字、聲音、圖像、視頻剪輯等多媒體手段制作,并且 可以在線點(diǎn)播觀看或下載后離線觀看。pk“pk”為主鍵(primary key)的縮寫(xiě),數(shù)據(jù)庫(kù)表通常都由一數(shù)據(jù)列(字段) 或一組數(shù)據(jù)列所組成的,其中的主鍵數(shù)據(jù)列用于唯一地標(biāo)識(shí)數(shù)據(jù)庫(kù)表中的每 一數(shù)據(jù)行。這種具有標(biāo)識(shí)作用的數(shù)據(jù)列或數(shù)據(jù)列組稱為主鍵列(也簡(jiǎn)稱主 鍵)。fk“fk”為外鍵(foreign key)的縮寫(xiě),數(shù)據(jù)庫(kù)表外鍵是
9、用于建立和加強(qiáng)兩個(gè) 數(shù)據(jù)庫(kù)表數(shù)據(jù)之間鏈接的一數(shù)據(jù)列或多數(shù)據(jù)列。通過(guò)將保存數(shù)據(jù)庫(kù)表中主鍵 值的一數(shù)據(jù)列或多數(shù)據(jù)列添加到另一個(gè)數(shù)據(jù)庫(kù)表中,可創(chuàng)建兩個(gè)數(shù)據(jù)庫(kù)表之 間的鏈接。這個(gè)數(shù)據(jù)列就成為第二個(gè)數(shù)據(jù)庫(kù)表的外鍵。1. 4參考資料1、藍(lán)夢(mèng)大學(xué)官方網(wǎng)站及教學(xué)平臺(tái)系統(tǒng)開(kāi)發(fā)規(guī)范說(shuō)明書(shū)2、藍(lán)夢(mèng)大學(xué)官方網(wǎng)站及教學(xué)平臺(tái)系統(tǒng)需求分析規(guī)約書(shū)3、藍(lán)夢(mèng)大學(xué)官方網(wǎng)站及教學(xué)平臺(tái)系統(tǒng)總體設(shè)計(jì)書(shū)2數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì)原則和策略2.1 系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)的基本原則數(shù)據(jù)庫(kù)的設(shè)計(jì)就是把數(shù)據(jù)庫(kù)中的數(shù)據(jù)對(duì)象結(jié)構(gòu)化并規(guī)劃好數(shù)據(jù)庫(kù)中的各個(gè)對(duì)象之間的 關(guān)系。系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)的最終優(yōu)劣,不僅關(guān)系到整個(gè)系統(tǒng)的性能,也還關(guān)系到系統(tǒng)以后的 升級(jí)、移植等方面的問(wèn)題。
10、在數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)時(shí),設(shè)計(jì)人員不僅要保證數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù) 據(jù)一致性和完整性,也還要盡可能地降低數(shù)據(jù)的冗余。因此,在本軟件系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì) 時(shí)必須要遵守如下的幾個(gè)通用的原則之外,也還需要根據(jù)木軟件系統(tǒng)的應(yīng)用特殊性,遵守 和滿足其它方面的原則和要求。(1) 數(shù)據(jù)庫(kù)的設(shè)計(jì)應(yīng)與信息模型完全相符,并充分考慮系統(tǒng)的可擴(kuò)展性和可移植性;在數(shù) 據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì)屮應(yīng)盡量滿足數(shù)據(jù)庫(kù)設(shè)計(jì)第三范式的要求,不能達(dá)到的應(yīng)有充分的理由并 以文檔形式與數(shù)據(jù)字典一起保存。(2) 數(shù)據(jù)庫(kù)便于管理和保證數(shù)據(jù)的安全、實(shí)現(xiàn)數(shù)據(jù)庫(kù)設(shè)計(jì)的相對(duì)物理獨(dú)立性。(3) 對(duì)數(shù)據(jù)庫(kù)的各類操作應(yīng)具有統(tǒng)一的管理和控制功能、并設(shè)置不同的權(quán)限。之所以耍遵守相關(guān)的
11、設(shè)計(jì)原則,主要是因?yàn)橄到y(tǒng)數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)的優(yōu)劣,不僅直接影 響到整個(gè)軟件系統(tǒng)的性能,也還對(duì)數(shù)據(jù)庫(kù)管理系統(tǒng)應(yīng)用的安全性、操作方便及故障恢復(fù)、 性能和可靠等方面也有一定的影響。2.1.1遵守項(xiàng)目組所制定出的命名規(guī)范盡管不同的數(shù)據(jù)庫(kù)系統(tǒng)產(chǎn)品對(duì)其屮的數(shù)據(jù)庫(kù)對(duì)象的命名有不同的要求形式,但也都遵 守一些通用的規(guī)則和要求。在木軟件系統(tǒng)項(xiàng)目中的數(shù)據(jù)庫(kù)相關(guān)的各種對(duì)象的命名、后臺(tái)程 序代碼的編寫(xiě)等方面都應(yīng)采用大小寫(xiě)敏感的“見(jiàn)名知意”的名詞短語(yǔ)形式進(jìn)行定義,每個(gè) 名詞短語(yǔ)的首字母都應(yīng)該大寫(xiě)、其后的每個(gè)單詞的首字母也都應(yīng)該采用大寫(xiě)的“駝峰制” 形式。各種對(duì)象的命名長(zhǎng)度不要超過(guò)30個(gè)字符,這樣便于軟件應(yīng)用系統(tǒng)能夠適應(yīng)不同
12、的數(shù)據(jù) 庫(kù)系統(tǒng)。2.1.2遵守范式標(biāo)準(zhǔn)和合理地?cái)?shù)據(jù)冗余1、理解和明確三個(gè)范式的基本含義和要求在數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)中,各個(gè)數(shù)據(jù)庫(kù)表的結(jié)構(gòu)設(shè)計(jì)應(yīng)該要遵守和滿足三個(gè)范式的基木要 求,各個(gè)范式的基本含義和要求如下:1)第一范式1nf它是對(duì)數(shù)據(jù)庫(kù)表的原子性約束,要求數(shù)據(jù)庫(kù)表中的各個(gè)字段應(yīng)具 有原子性,并不可再分解。2)第二范式2nf它是對(duì)數(shù)據(jù)庫(kù)表中的數(shù)據(jù)記錄的唯一性的約束要求,要求數(shù)據(jù)庫(kù) 表中的各個(gè)記錄的數(shù)據(jù)值要有唯一的標(biāo)識(shí),即數(shù)據(jù)庫(kù)表和對(duì)應(yīng)的實(shí)體的唯一性。3)第三范式:3nf是對(duì)字段冗余性的約束,即任何字段不能由其他字段派生岀來(lái),它 耍求字段沒(méi)有冗余。在設(shè)計(jì)基本數(shù)據(jù)庫(kù)表及其字段之間的關(guān)系,應(yīng)盡量滿足第三范
13、式從而減少數(shù)據(jù)的冗余。 但是,滿足第三范式的數(shù)據(jù)庫(kù)設(shè)計(jì),往往不是最好的系統(tǒng)設(shè)計(jì)。因此,為了提高數(shù)據(jù)庫(kù)系 統(tǒng)的運(yùn)行效率,常常需要降低數(shù)據(jù)庫(kù)系統(tǒng)所要遵守的范式標(biāo)準(zhǔn):適當(dāng)增加數(shù)據(jù)冗余,而達(dá) 到以空間換時(shí)間的目的。2、適當(dāng)增加冗余,達(dá)到以空間換時(shí)間的目的比如,在本軟件系統(tǒng)中的“課件信息”的基本數(shù)據(jù)庫(kù)表屮添加有“購(gòu)買總金額”這個(gè) 字段,該字段的存在將會(huì)導(dǎo)致該“課件信息”數(shù)據(jù)庫(kù)表的設(shè)計(jì)結(jié)果不滿足第三范式一一因 為“購(gòu)買總金額”可以由“單價(jià)”乘以“數(shù)量”得到,說(shuō)明“購(gòu)買總金額”是冗余字段。 但是,增加“購(gòu)買總金額”這個(gè)冗余字段,卻可以提高對(duì)“課件信息”查詢統(tǒng)計(jì)的速度, 這就是以空間換時(shí)間的作法。因此,在數(shù)據(jù)
14、庫(kù)表設(shè)計(jì)中,應(yīng)該要區(qū)分“數(shù)據(jù)列”和“計(jì)算列”兩者的不同。課件信 息的基本數(shù)據(jù)庫(kù)表屮的“購(gòu)買總金額”這個(gè)字段其實(shí)是“計(jì)算列”,而“單價(jià)”和“數(shù)量” 這樣的字段是“數(shù)據(jù)列”。在數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì)中,可以允許“計(jì)算列”的冗余字段,而 不允許存在“數(shù)據(jù)列”的兀余字段。3、把握“列變行”的技術(shù)應(yīng)用所謂的“列變行”技術(shù)就是在數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì)中,將主數(shù)據(jù)庫(kù)表中的一部分字段內(nèi) 容移出到單獨(dú)建立的子數(shù)據(jù)庫(kù)表屮。只有數(shù)據(jù)庫(kù)表屮的字段個(gè)數(shù)少了,才能保證在數(shù)據(jù)庫(kù) 表中不存在數(shù)據(jù)重復(fù)、口很少有數(shù)據(jù)冗余一一在數(shù)據(jù)冗余和處理速度之間找到合適的平衡 點(diǎn)。2.1.3保證數(shù)據(jù)的完整性和一致性1、合理的數(shù)據(jù)冗余也是必要的為了保證數(shù)據(jù)
15、庫(kù)表中的數(shù)據(jù)的一致性,設(shè)計(jì)人員遵守?cái)?shù)據(jù)庫(kù)設(shè)計(jì)的范式,而導(dǎo)致設(shè)計(jì) 人員往往會(huì)設(shè)計(jì)過(guò)多的表間關(guān)聯(lián)(relation)也就是在設(shè)計(jì)過(guò)程中,采用盡可能降低數(shù) 據(jù)庫(kù)系統(tǒng)數(shù)據(jù)冗余的設(shè)計(jì)方案。但由于數(shù)據(jù)庫(kù)表間的關(guān)聯(lián)是一種強(qiáng)制性措施,一旦建立后, 對(duì)父表(parent table)和子表(child table)的數(shù)據(jù)插入、更新、刪除等功能性操作均要占 用數(shù)據(jù)庫(kù)系統(tǒng)的開(kāi)銷。(1) 降低數(shù)據(jù)庫(kù)表中的數(shù)據(jù)冗余的優(yōu)點(diǎn)如果數(shù)據(jù)庫(kù)表中的數(shù)據(jù)冗余低,則對(duì)應(yīng)的數(shù)據(jù)的完整性也就更容易得到保證,但增加 了數(shù)據(jù)庫(kù)表間連接查詢操作的次數(shù)一一對(duì)丁多數(shù)據(jù)庫(kù)表之間的關(guān)聯(lián)查詢尤其是大數(shù)據(jù)庫(kù)表 的查詢功能,其性能不僅將會(huì)降低,而且也提高了數(shù)
16、據(jù)庫(kù)系統(tǒng)客戶端程序的編程實(shí)現(xiàn)的難 度。因此,為了能夠提高數(shù)據(jù)庫(kù)系統(tǒng)的響應(yīng)性能,合理的數(shù)據(jù)冗余有時(shí)也是必要的。因?yàn)?滿足第三范式的數(shù)據(jù)庫(kù)表設(shè)計(jì),往往不是最好的設(shè)計(jì)方案。為了提高數(shù)據(jù)庫(kù)系統(tǒng)的運(yùn)行效 率,在實(shí)際應(yīng)用系統(tǒng)中常常需要降低所耍遵守的范式標(biāo)準(zhǔn)一一適當(dāng)增加數(shù)據(jù)的冗余,達(dá)到 以空間換時(shí)間的fi的。(2) 在本軟件系統(tǒng)項(xiàng)目中對(duì)于查詢性能要求高的數(shù)據(jù)庫(kù)表應(yīng)用數(shù)據(jù)冗余設(shè)計(jì)方案為此,可以根據(jù)業(yè)務(wù)規(guī)則并確定對(duì)關(guān)聯(lián)表的數(shù)據(jù)量大小、數(shù)據(jù)項(xiàng)的訪問(wèn)頻度、訪問(wèn)的 性能要求等應(yīng)用的環(huán)境要求,對(duì)于查詢性能要求高的數(shù)據(jù)庫(kù)表要應(yīng)用數(shù)據(jù)冗余的設(shè)計(jì)方案 冗余的好處就是獲取信息容易,不過(guò)也容易造成信息同步的消耗。2、如何實(shí)現(xiàn)和保
17、證軟件系統(tǒng)中的數(shù)據(jù)庫(kù)的完整性(1) 什么是數(shù)據(jù)庫(kù)完整性設(shè)計(jì)數(shù)據(jù)庫(kù)完整性(database integrity)是指數(shù)據(jù)庫(kù)中的數(shù)據(jù)在邏輯上的一致性、正確性、 有效性和相容性。數(shù)據(jù)庫(kù)完整性是由各種各樣的完整性的約束來(lái)保證,因此可以說(shuō)數(shù)據(jù)庫(kù) 完整性設(shè)計(jì)其實(shí)就是數(shù)據(jù)庫(kù)完整性約束的設(shè)計(jì)。(2) 如何實(shí)現(xiàn)和保證數(shù)據(jù)庫(kù)的完整性數(shù)據(jù)庫(kù)完整性約束可以通過(guò)dbms或應(yīng)用程序兩種不同的實(shí)現(xiàn)方式來(lái)實(shí)現(xiàn),基于 dbms的完整性約束最終是作為模式的一部分存入數(shù)據(jù)庫(kù)系統(tǒng)中,而由應(yīng)用軟件本身實(shí)現(xiàn) 的數(shù)據(jù)庫(kù)完整性檢查是通過(guò)相關(guān)的程序代碼來(lái)實(shí)現(xiàn)。3、均衡考慮對(duì)數(shù)據(jù)的完整性和一致性的檢查(1)約束定義關(guān)于數(shù)據(jù)列中允許值的規(guī)則,是強(qiáng)
18、制完整性的標(biāo)準(zhǔn)機(jī)制約束可以是數(shù)據(jù)列約束或數(shù)據(jù)庫(kù)表約束,而列約束被指定為列定義的一部分,并且僅 適用于那個(gè)數(shù)據(jù)列;數(shù)據(jù)庫(kù)表約束的聲明與數(shù)據(jù)列的定義無(wú)關(guān),可以適用于數(shù)據(jù)庫(kù)表中的 一個(gè)以上的列。如下為常見(jiàn)的約束定義:not null指定不接受null值的數(shù)據(jù)列;check約束對(duì)可以放入數(shù)據(jù)列中的值進(jìn)行限制,以強(qiáng)制執(zhí)行域的完整性;unique約束實(shí)現(xiàn)唯一性約束;primary key約束標(biāo)識(shí)列或列集,這些數(shù)據(jù)列或列集的值唯一地標(biāo)識(shí)數(shù)據(jù)庫(kù)表中的 各個(gè)數(shù)據(jù)行;foreign key約束標(biāo)識(shí)數(shù)據(jù)庫(kù)表之間的關(guān)系,一個(gè)數(shù)據(jù)庫(kù)表的外鍵指向另一個(gè)數(shù)據(jù)庫(kù) 表的候選鍵。(2)均衡考慮對(duì)數(shù)據(jù)的完整性和一致性的檢查使用約束
19、(check)可以防止由于系統(tǒng)用戶在對(duì)系統(tǒng)進(jìn)行操作時(shí)的各種可能的誤輸入而 可能造成數(shù)據(jù)的錯(cuò)誤,也是數(shù)據(jù)庫(kù)設(shè)計(jì)人員常用的一種技術(shù)手段。但是,不必要的約束也 會(huì)占用數(shù)據(jù)庫(kù)系統(tǒng)的開(kāi)銷。因此,在數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì)階段,應(yīng)根據(jù)軟件系統(tǒng)操作的類型、頻度加以均衡考慮對(duì) 數(shù)據(jù)的完整性和一致性的檢查要求以進(jìn)一步提高對(duì)數(shù)據(jù)庫(kù)表中數(shù)據(jù)的訪問(wèn)性能。2.1.4主鍵定義及主鍵值的合理設(shè)置1、盡可能使用自然鍵值,不使用業(yè)務(wù)鍵值在本軟件系統(tǒng)的數(shù)據(jù)庫(kù)表的主鍵選擇方面,應(yīng)該要盡可能使用自然鍵值,而不要使用 業(yè)務(wù)鍵值,以方便應(yīng)對(duì)業(yè)務(wù)鍵的變化;表中的主鍵最好設(shè)計(jì)成單一主鍵,盡量不用復(fù)合主 鍵;關(guān)聯(lián)數(shù)據(jù)庫(kù)表之間還應(yīng)該有外鍵約束的定義。復(fù)
20、合主鍵的字段個(gè)數(shù)越少,不僅提高了數(shù)據(jù)庫(kù)系統(tǒng)的運(yùn)行效率,而且也還能夠節(jié)省數(shù) 據(jù)庫(kù)系統(tǒng)的索引存儲(chǔ)空間。2、合理地設(shè)置數(shù)據(jù)庫(kù)表的主鍵值在數(shù)據(jù)庫(kù)表設(shè)計(jì)中涉及主鍵值的設(shè)定,目前主要有由數(shù)據(jù)庫(kù)系統(tǒng)自動(dòng)生成、自定義主 鍵值、guid等三種方式。1)系統(tǒng)自動(dòng)生成主鍵值主要就是利用物理數(shù)據(jù)庫(kù)系統(tǒng)如mysql的自增型(auto_incwmen)的數(shù)據(jù)字段作為主 鍵字段的值,這種方式實(shí)現(xiàn)最簡(jiǎn)單(只需在建立數(shù)據(jù)庫(kù)表時(shí)聲明自增屬性即可),但問(wèn)題 也很多。比如,不能自設(shè)值、數(shù)據(jù)庫(kù)移植、恢復(fù)、合并等情況下都會(huì)出現(xiàn)問(wèn)題。比如,軟件系統(tǒng)的數(shù)據(jù)庫(kù)原來(lái)使用mysql,后來(lái)要求把數(shù)據(jù)庫(kù)系統(tǒng)替換為ms sqlserver類型。此時(shí)就可
21、能會(huì)出現(xiàn)問(wèn)題:原來(lái)自增字段的主鍵會(huì)被自動(dòng)重新從1開(kāi)始賦 值,但如果此數(shù)據(jù)庫(kù)表和其他的數(shù)據(jù)庫(kù)表有關(guān)聯(lián),另一個(gè)數(shù)據(jù)庫(kù)表的外鍵值就可能不再與 這個(gè)自增的主鍵值保持一致性。另外,在分布式數(shù)據(jù)庫(kù)系統(tǒng)中,不同數(shù)據(jù)庫(kù)的同名的數(shù)據(jù)庫(kù)表中的數(shù)據(jù)可能需要進(jìn)行 同步復(fù)制、合并等功能操作。一個(gè)數(shù)據(jù)庫(kù)表的自增量的主鍵值,就很有可能與另一個(gè)數(shù)據(jù) 庫(kù)相同表的白增量值出現(xiàn)重復(fù)。2) 自定義主鍵值是指利用一定的規(guī)則編碼生成主鍵值,比如“時(shí)間+自定義序列”。這種方式雖然能夠 完全控制主鍵值的生成,但效率不高,通用性差,校驗(yàn)時(shí)只能靠程序代碼。3) guid (global unique identifier)全局唯一標(biāo)識(shí)符guid
22、值具有唯一性(其實(shí)現(xiàn)的算法一般是通過(guò)以太網(wǎng)卡地址、納秒級(jí)時(shí)間、芯片id 碼和許多可能的數(shù)字生成)、易產(chǎn)生和可以方便的生成等方面的特性,給應(yīng)用程序處理帶 來(lái)了諸多方便。雖然執(zhí)行效率不如自增型的字段一一生成的id值比較長(zhǎng),占用的數(shù)據(jù)庫(kù)表 空間相應(yīng)的也比較多,,但與其所表現(xiàn)出的優(yōu)點(diǎn)比起來(lái),這點(diǎn)損失可以忽略不計(jì)。綜合上述幾種方式的特點(diǎn)以及系統(tǒng)的要求,在本軟件系統(tǒng)的數(shù)據(jù)庫(kù)表設(shè)計(jì)時(shí)對(duì)主鍵值 的生成采用guid方式。2.1. 5在基本數(shù)據(jù)庫(kù)表的基礎(chǔ)上可以創(chuàng)建出中間表和臨時(shí)表在項(xiàng)目的功能實(shí)現(xiàn)中,為了能夠提高數(shù)據(jù)訪問(wèn)的安全性、方便性和快速性,可以在基本 數(shù)據(jù)庫(kù)表的基礎(chǔ)上創(chuàng)建出中間數(shù)據(jù)庫(kù)表和臨吋數(shù)據(jù)庫(kù)表。但要正確
23、地理解基本數(shù)據(jù)庫(kù)表與 中間數(shù)據(jù)庫(kù)表、臨時(shí)數(shù)據(jù)庫(kù)表之間所存在的木質(zhì)不同。1、理解基本數(shù)據(jù)庫(kù)表所具有的如下四個(gè)特性(1) 原子性基本數(shù)據(jù)庫(kù)表中的各個(gè)字段是不可再分解的。(2) 原始性基本數(shù)據(jù)庫(kù)表中的各個(gè)記錄數(shù)據(jù)都是原始的數(shù)據(jù)(基礎(chǔ)性的數(shù)據(jù))的記錄。(3) 演繹性由基木數(shù)據(jù)庫(kù)表可以派生出中間數(shù)據(jù)庫(kù)表、臨時(shí)數(shù)據(jù)庫(kù)表。(4) 穩(wěn)定性基本數(shù)據(jù)庫(kù)表的數(shù)據(jù)結(jié)構(gòu)是相對(duì)穩(wěn)定的,數(shù)據(jù)庫(kù)表中的數(shù)據(jù)記錄值一般都是需要長(zhǎng)期 保存的。2、理解中間數(shù)據(jù)庫(kù)表的主要作用中間數(shù)據(jù)庫(kù)表一般是用于存放統(tǒng)計(jì)數(shù)據(jù)的數(shù)據(jù)庫(kù)表,它是為軟件系統(tǒng)輸出報(bào)表或查詢 結(jié)果而設(shè)計(jì)的。中間數(shù)據(jù)庫(kù)表可以沒(méi)有主鍵與外鍵,并由開(kāi)發(fā)人員自己在程序代碼中自動(dòng) 維護(hù)。
24、3、理解臨時(shí)數(shù)據(jù)庫(kù)表的主要作用臨吋數(shù)據(jù)庫(kù)表是開(kāi)發(fā)人員根據(jù)程序?qū)崿F(xiàn)的需要而設(shè)計(jì)的,一般用于存放臨吋數(shù)據(jù),并 為程序模塊所用。每個(gè)臨時(shí)表的牛存期都是在自己的connection/session中,不同連接間看 不到對(duì)方的臨時(shí)表、臨時(shí)表會(huì)在連接斷開(kāi)時(shí)自動(dòng)被drop掉。因此,同一時(shí)間有多個(gè)人并發(fā) 操作時(shí),臨時(shí)表里的數(shù)據(jù)不會(huì)丟失。但因?yàn)榕R時(shí)表是在數(shù)據(jù)庫(kù)連接時(shí)創(chuàng)建和連接斷開(kāi)時(shí)釋放的,而冃前基本上都是數(shù)據(jù)庫(kù) 連接池(connection poo 1),很容易岀現(xiàn)數(shù)據(jù)混亂;另外,每次創(chuàng)建和刪除臨吋數(shù)據(jù)庫(kù)表, 也還存在一定的系統(tǒng)開(kāi)銷。2.1.6將多對(duì)多的關(guān)系轉(zhuǎn)換為一對(duì)多的關(guān)系1、盡可能消除數(shù)據(jù)庫(kù)表之間的多對(duì)多的
25、關(guān)系若兩個(gè)實(shí)體之間存在多對(duì)多的關(guān)系,則對(duì)應(yīng)的兩個(gè)數(shù)據(jù)庫(kù)表之間則會(huì)存在多對(duì)多的關(guān) 系。在數(shù)據(jù)庫(kù)表的關(guān)系設(shè)計(jì)中,應(yīng)盡可能消除這種關(guān)系復(fù)雜的“多對(duì)多”關(guān)系。而消除的 具體辦法是在兩個(gè)實(shí)體之間增加第三個(gè)實(shí)體一一為中間關(guān)聯(lián)實(shí)體。因此,原來(lái)一個(gè)“多對(duì)多”的關(guān)系,現(xiàn)在轉(zhuǎn)變?yōu)閮蓚€(gè)“一對(duì)多”的關(guān)系。但要將原來(lái) 兩個(gè)實(shí)體的屬性合理地分配到第三個(gè)實(shí)體中去,一般都是將關(guān)系兩端實(shí)體的主鍵作為中間 關(guān)系數(shù)據(jù)庫(kù)表的主鍵,再加上關(guān)系本身所需要的屬性字段。2、示例說(shuō)明在系統(tǒng)中存在有“學(xué)生信息表”與“選課信息表”兩張不同的數(shù)據(jù)庫(kù)表,它們之間存 在多對(duì)多的關(guān)系一一也就是一個(gè)學(xué)生可以選擇多門培訓(xùn)課程,而一門培訓(xùn)課程當(dāng)然可以被 多個(gè)不
26、同的學(xué)生選修和學(xué)習(xí)。可以在數(shù)據(jù)庫(kù)系統(tǒng)中新增加一個(gè)“學(xué)生選課情況信息表”,在該數(shù)據(jù)庫(kù)表中包含有2 個(gè)字段(學(xué)生編號(hào)、培訓(xùn)課程編號(hào))。此時(shí),“學(xué)生信息表”與“學(xué)生選課情況信息表” 為一對(duì)多關(guān)系;而“選課信息表”與“學(xué)生選課情況信息表”也為一對(duì)多的關(guān)系。2. 2 數(shù)據(jù)庫(kù)系統(tǒng)安全性設(shè)計(jì)數(shù)據(jù)庫(kù)的安全性是指保護(hù)數(shù)據(jù)庫(kù)系統(tǒng)以防止不合法的使用所造成的數(shù)據(jù)泄露、更改或 破壞。由于在數(shù)據(jù)庫(kù)系統(tǒng)中集中存儲(chǔ)有人量的數(shù)據(jù),而口為許多用戶直接共享和使用,從 而使得數(shù)據(jù)庫(kù)系統(tǒng)的安全性問(wèn)題更為突出。數(shù)據(jù)庫(kù)系統(tǒng)的完整性約束可以避免對(duì)數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)的無(wú)意濫用,而良好的數(shù)據(jù)庫(kù)系 統(tǒng)安全性則可以避免對(duì)數(shù)據(jù)的惡意濫用。為了防止對(duì)數(shù)據(jù)庫(kù)
27、數(shù)據(jù)的惡意濫用,可以在不同 的安全級(jí)別上設(shè)置各種安全措施一一數(shù)據(jù)庫(kù)系統(tǒng)的安全保護(hù)措施是否有效是數(shù)據(jù)庫(kù)系統(tǒng)的 主要指標(biāo)之一。數(shù)據(jù)庫(kù)系統(tǒng)是整個(gè)軟件系統(tǒng)的核心系統(tǒng),數(shù)據(jù)庫(kù)系統(tǒng)的故障將會(huì)導(dǎo)致整個(gè)軟件系統(tǒng)的 停用,所以不僅要保證其可靠性,同時(shí)也需要在安全性方面采取相關(guān)的技術(shù)措施。本軟件 系統(tǒng)的數(shù)據(jù)庫(kù)系統(tǒng)在安全性方面擬將采用如下的各個(gè)技術(shù)措施。2. 2.1數(shù)據(jù)庫(kù)表數(shù)據(jù)訪問(wèn)的安全保密設(shè)計(jì)1、數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)不允許用戶直接訪問(wèn)根據(jù)軟件系統(tǒng)的業(yè)務(wù)流程,不同的用戶將擁有對(duì)于數(shù)據(jù)庫(kù)表中數(shù)據(jù)的不同操作訪問(wèn)的 權(quán)限。并且數(shù)據(jù)庫(kù)表中的數(shù)據(jù)只能由服務(wù)器端相關(guān)的程序連接和操作訪問(wèn),而不允許客戶 端的相關(guān)程序繞過(guò)web服務(wù)器
28、肓接連接數(shù)據(jù)庫(kù)系統(tǒng)。2、所有的數(shù)據(jù)訪問(wèn)必須要擁有相關(guān)的權(quán)限對(duì)數(shù)據(jù)庫(kù)表中的數(shù)據(jù)所進(jìn)行的“增、刪、改、查”方面的功能操作必須耍具有相應(yīng)的 功能操作權(quán)限才能進(jìn)行,而連接數(shù)據(jù)庫(kù)系統(tǒng)也必須要提供安全的用戶名/密碼組合方式登錄 數(shù)據(jù)庫(kù)系統(tǒng)一一本軟件系統(tǒng)的jdbc數(shù)據(jù)庫(kù)連接程序不應(yīng)該使用數(shù)據(jù)庫(kù)系統(tǒng)的管理員賬號(hào) (如mysql的root賬號(hào)或者oracle中的sys賬號(hào)等)連接數(shù)據(jù)庫(kù)系統(tǒng)以提高數(shù)據(jù)庫(kù)系統(tǒng) 數(shù)據(jù)訪問(wèn)的安全性,而應(yīng)該由數(shù)據(jù)庫(kù)系統(tǒng)管理員提供一個(gè)具體賬號(hào)。系統(tǒng)數(shù)據(jù)庫(kù)數(shù)據(jù)的泄露常常發(fā)生在系統(tǒng)內(nèi)部,大量的系統(tǒng)運(yùn)維人員能夠直接接觸系統(tǒng) 數(shù)據(jù)庫(kù)表中敏感的數(shù)據(jù),而傳統(tǒng)以“防外為主”的數(shù)據(jù)庫(kù)系統(tǒng)訪問(wèn)安全解決方案失
29、去了用武之地。2. 2.2數(shù)據(jù)訪問(wèn)必須要進(jìn)行身份驗(yàn)證1、使用sql身份驗(yàn)證應(yīng)遵循的基本原則不要將數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)置的系統(tǒng)管理員賬號(hào)(如mysql數(shù)據(jù)庫(kù)系統(tǒng)的root賬號(hào))用于系 統(tǒng)程序中的數(shù)據(jù)訪問(wèn)。應(yīng)用程序應(yīng)該通過(guò)使用最低特權(quán)賬戶來(lái)連接和訪問(wèn)數(shù)據(jù)庫(kù)系統(tǒng)。2、使用具有最少權(quán)限的賬戶連接到數(shù)據(jù)庫(kù)系統(tǒng)必須要保護(hù)sql連接字符串(它包含憑據(jù)),并要求使用sql身份驗(yàn)證和創(chuàng)建出一 個(gè)只能通過(guò)存儲(chǔ)過(guò)程訪問(wèn)該數(shù)據(jù)庫(kù)的用戶。2. 2.3遵守最少權(quán)限的角色分配原則 1、明確數(shù)據(jù)對(duì)象的類型和操作權(quán)限之間的關(guān)系數(shù)據(jù)對(duì)象操作權(quán)限表、視圖、列(table)select、insert、update> delete基本表
30、(table)alter> index數(shù)據(jù)庫(kù)(database)create table數(shù)據(jù)庫(kù)系統(tǒng)create database因此,有必要根據(jù)應(yīng)用的業(yè)務(wù)邏輯要求在數(shù)據(jù)庫(kù)系統(tǒng)中為用戶或者角色設(shè)置最少權(quán)限, 除去無(wú)關(guān)和不必要的數(shù)據(jù)庫(kù)數(shù)據(jù)訪問(wèn)權(quán)限、特別是對(duì)數(shù)據(jù)庫(kù)表的修改和刪除操作。2、熟悉授權(quán)(grant) sql語(yǔ)句的基本格式grant權(quán)限1,權(quán)限2, on對(duì)彖類型對(duì)彖名稱to用戶1,用戶2, with grant option上面的grant語(yǔ)句的主要功能是實(shí)現(xiàn)將指定的數(shù)據(jù)對(duì)象的指定權(quán)限授予指定的用戶, 其中的“with grant option”選項(xiàng)的主要作用是允許獲得指定權(quán)限的用戶把
31、權(quán)限再授 予其他用戶。下面的示例是實(shí)現(xiàn)把對(duì)用戶信息數(shù)據(jù)庫(kù)表(userinfo)中的“姓名”字段的修改、查詢 表的權(quán)限授予用戶user的sql語(yǔ)句:grant updat玖姓名),select on table userinfo to user;2. 2.4防范sql注入攻擊由于sql注入攻擊是從正常的www端口訪問(wèn),而口表面看起來(lái)跟一般的web頁(yè)面 訪問(wèn)并沒(méi)有什么不同,所以市面上的防火墻都不會(huì)對(duì)sql注入發(fā)出警報(bào),sql注入攻擊往 往是通過(guò)應(yīng)用程序觸發(fā)。1、什么是sql注入攻擊sql注入是口前比較常見(jiàn)的針對(duì)數(shù)據(jù)庫(kù)的一種攻擊方式,在這種攻擊方式屮,攻擊者 會(huì)將一些惡意的sql代碼插入到sql字符
32、串中,然后通過(guò)各種手段將該字符串傳遞到數(shù) 據(jù)庫(kù)系統(tǒng)中執(zhí)行。2、sql注入攻擊的基本原理sql注入過(guò)程的工作方式是提前終止正常的sql文本字符串,然后追加一個(gè)新的命令。 為此,攻擊者會(huì)在用戶輸入變量時(shí),先用一個(gè)單引號(hào)和分號(hào)(:)結(jié)束當(dāng)前的sql語(yǔ)句。 然后再插入一個(gè)惡意的sql語(yǔ)句并用注釋標(biāo)記終止所注入的sql字符串一一而執(zhí)行 時(shí),數(shù)據(jù)庫(kù)系統(tǒng)會(huì)認(rèn)為此后的語(yǔ)句為注釋,故后續(xù)的sql文木字符串將被忽略和不被編譯 與執(zhí)行。3、sql注入攻擊的防范(1)數(shù)據(jù)庫(kù)操作訪問(wèn)程序代碼屮的sql語(yǔ)句要盡量避免使用字符串拼接的形式,強(qiáng)烈建 議使用查詢參數(shù)化(綁定變量)的方法進(jìn)行查詢;因?yàn)閰?shù)化的語(yǔ)句使用參數(shù)而不是將
33、用戶輸入的變量宜接嵌入到目標(biāo)sql語(yǔ)句中,采 用這種措施,可以杜絕大部分的sql注入式攻擊。(2)數(shù)據(jù)庫(kù)訪問(wèn)的用戶應(yīng)遵循“最小權(quán)限”原則,盡可能在數(shù)據(jù)庫(kù)系統(tǒng)中除掉與軟件系統(tǒng) 所不需要的權(quán)限一一在jdbc的數(shù)據(jù)庫(kù)連接中,不應(yīng)該采用數(shù)據(jù)庫(kù)系統(tǒng)的dba賬號(hào)(如 mysql數(shù)據(jù)庫(kù)系統(tǒng)的root賬號(hào))連接數(shù)據(jù)庫(kù)系統(tǒng),而應(yīng)該是普通的用戶賬號(hào)一一該賬號(hào)所 對(duì)應(yīng)的數(shù)據(jù)庫(kù)系統(tǒng)的訪問(wèn)權(quán)限不能夠執(zhí)行drop table等語(yǔ)句,以最大限度地減少注入式攻 擊對(duì)數(shù)據(jù)庫(kù)帶來(lái)的危害;(3)不信任任何用戶提交的數(shù)據(jù),并對(duì)請(qǐng)求提交的數(shù)據(jù)進(jìn)行檢測(cè)和過(guò)濾一一比如在web 表現(xiàn)層對(duì)表單數(shù)據(jù)進(jìn)行檢查、在數(shù)據(jù)訪問(wèn)層對(duì)獲得的參數(shù)值進(jìn)行檢查。
34、比如,可以測(cè)試字 符串變量的內(nèi)容,只接受滿足格式要求的值而拒絕包含有二進(jìn)制數(shù)據(jù)、轉(zhuǎn)義序列、分號(hào)和 注釋字符的輸入內(nèi)容。因?yàn)榉痔?hào)分隔符是sql注入式攻擊的主要幫兇,而注釋分隔符只有在數(shù)據(jù)庫(kù)表創(chuàng)建時(shí)需要應(yīng)用,在查詢語(yǔ)句中沒(méi)有必要添加注釋的內(nèi)容,因此完全可以把它們過(guò)濾和拒絕掉。2. 2. 5充分應(yīng)用視圖技術(shù)提高數(shù)據(jù)庫(kù)系統(tǒng)安全性在數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)中,可以為不同角色的用戶定義出不同的視圖,通過(guò)視圖機(jī)制把要 保密的數(shù)據(jù)對(duì)無(wú)權(quán)操作的用戶隱藏起來(lái),從而自動(dòng)地對(duì)數(shù)據(jù)提供一定程度的安全保護(hù)。而 且由于對(duì)視圖也可以進(jìn)行相關(guān)的授權(quán)和控制,因此充分地應(yīng)用視圖機(jī)制,不僅可以使數(shù)據(jù) 庫(kù)系統(tǒng)具有數(shù)據(jù)安全性、數(shù)據(jù)邏輯獨(dú)立性和操作
35、簡(jiǎn)便等優(yōu)點(diǎn)。1、應(yīng)用視圖技術(shù)可以簡(jiǎn)化復(fù)雜的多表z間的數(shù)據(jù)關(guān)系與基本數(shù)據(jù)庫(kù)表不同,視圖是一種虛表一一它依賴數(shù)據(jù)源的實(shí)表而存在。視圖是供程 序員使用數(shù)據(jù)庫(kù)的一個(gè)窗口,是基表數(shù)據(jù)綜合的一種形式,是數(shù)據(jù)處理的一種方法,是用 戶數(shù)據(jù)保密的一種手段。在本軟件系統(tǒng)中應(yīng)該要合理地應(yīng)用視圖技術(shù)以簡(jiǎn)化復(fù)雜的數(shù)據(jù)庫(kù) 表中的數(shù)據(jù)訪問(wèn)的編程實(shí)現(xiàn)。2、視圖的定義深度一般不要超過(guò)三層為了能夠進(jìn)行復(fù)雜處理、提高運(yùn)算速度和節(jié)省存儲(chǔ)空間,視圖的定義深度一般不得超 過(guò)三層。若三層視圖仍不夠用,則應(yīng)在視圖上定義臨時(shí)表,在臨時(shí)表上再定義視圖。這樣 反復(fù)交迭定義,視圖的深度就不受限制了 一一但最好還是遵守視圖的定義深度一般不得超 過(guò)三層
36、的基本耍求。3、應(yīng)用視圖技術(shù)提高數(shù)據(jù)訪問(wèn)的安全性為了提高對(duì)軟件系統(tǒng)中某些核心的數(shù)據(jù)庫(kù)表操作的安全性,可以在基本數(shù)據(jù)庫(kù)表上建 立出第一層次的視圖,而且這層次視圖的個(gè)數(shù)和數(shù)據(jù)結(jié)構(gòu),都與基木數(shù)據(jù)庫(kù)表的個(gè)數(shù)和數(shù) 據(jù)結(jié)構(gòu)是完全相同的。系統(tǒng)中的一般用戶一律只準(zhǔn)通過(guò)視圖實(shí)現(xiàn)對(duì)目標(biāo)數(shù)據(jù)庫(kù)表的操作, 而只有數(shù)據(jù)庫(kù)管理員才能直接在基本數(shù)據(jù)庫(kù)表上進(jìn)行修改和刪除等功能操作。2. 2.6對(duì)敏感數(shù)據(jù)的訪問(wèn)需要應(yīng)用審計(jì)功能 1、什么是數(shù)據(jù)庫(kù)系統(tǒng)的安全審計(jì)數(shù)據(jù)庫(kù)系統(tǒng)的審計(jì)功能是指在用戶對(duì)數(shù)據(jù)庫(kù)執(zhí)行操作的同時(shí)把所有操作自動(dòng)記錄到數(shù) 據(jù)庫(kù)系統(tǒng)的審計(jì)口志屮。而利用數(shù)據(jù)庫(kù)系統(tǒng)的審計(jì)功能,數(shù)據(jù)庫(kù)系統(tǒng)管理員(dba)可以 根據(jù)審計(jì)跟蹤的
37、結(jié)果信息,重現(xiàn)導(dǎo)致數(shù)據(jù)庫(kù)系統(tǒng)現(xiàn)有狀況的一系列事件,從而找岀非法存 取數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)的人、時(shí)間和內(nèi)容等信息一一方便日后進(jìn)行查詢、分析、過(guò)濾等功能操 作,最終實(shí)現(xiàn)對(duì)目標(biāo)數(shù)據(jù)庫(kù)系統(tǒng)的用戶操作的監(jiān)控和審計(jì)。2、對(duì)數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)的危險(xiǎn)性訪問(wèn)必須要進(jìn)行審計(jì)在本軟件系統(tǒng)的數(shù)據(jù)庫(kù)訪問(wèn)操作中,對(duì)數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)的危險(xiǎn)性訪問(wèn)操作必須要進(jìn)行 審計(jì)一一比如,對(duì)ddl類操作、dml類操作都必須要進(jìn)行審計(jì)。審計(jì)規(guī)則的審計(jì)耍素應(yīng) 該包括有如下的信息:用戶、源ip地址、操作時(shí)間、使用的sql操作類型(delete、drop、 update 等 sql 語(yǔ)句)。2. 3數(shù)據(jù)庫(kù)系統(tǒng)的性能優(yōu)化設(shè)計(jì)要提高軟件系統(tǒng)中的數(shù)據(jù)庫(kù)系統(tǒng)的運(yùn)行效
38、率和性能,必須要從數(shù)據(jù)庫(kù)系統(tǒng)、數(shù)據(jù)庫(kù)設(shè) 計(jì)、程序?qū)崿F(xiàn)等多個(gè)不同的方面進(jìn)行綜合優(yōu)化。在本軟件系統(tǒng)中,可以對(duì)數(shù)據(jù)庫(kù)系統(tǒng)采取 如下的優(yōu)化措施。2. 3.1盡可能提高數(shù)據(jù)庫(kù)系統(tǒng)的運(yùn)行效率1、在數(shù)據(jù)庫(kù)物理設(shè)計(jì)時(shí),降低范式,增加冗余,少用觸發(fā)器和盡可能多用存儲(chǔ)過(guò)程減少被頻繁訪問(wèn)的核心數(shù)據(jù)庫(kù)表的數(shù)量,并在這些核心數(shù)據(jù)庫(kù)表上創(chuàng)建和優(yōu)化索引。 存儲(chǔ)過(guò)程不僅可以重用,而且也大大地減少了數(shù)據(jù)庫(kù)系統(tǒng)客戶端程序遠(yuǎn)程連接和訪問(wèn)數(shù)據(jù) 庫(kù)系統(tǒng)的次數(shù),從而能夠提高系統(tǒng)的整體性能。2、水平分割和垂直分割數(shù)據(jù)庫(kù)表如果發(fā)現(xiàn)某個(gè)數(shù)據(jù)庫(kù)表中存儲(chǔ)的數(shù)據(jù)記錄太多(例如超過(guò)一千萬(wàn)條),則要對(duì)該數(shù)據(jù) 庫(kù)表進(jìn)行水平分割一一以該表主鍵pk的某個(gè)值為
39、界線,將該表的數(shù)據(jù)記錄水平分割為兩 個(gè)不同的數(shù)據(jù)庫(kù)表。但若發(fā)現(xiàn)某個(gè)數(shù)據(jù)庫(kù)表中的字段太多(例如超過(guò)八十個(gè)),則要垂直 分割該數(shù)據(jù)庫(kù)表,將原來(lái)的一個(gè)數(shù)據(jù)庫(kù)表分解為兩個(gè)不同的數(shù)據(jù)庫(kù)表。3、對(duì)數(shù)據(jù)庫(kù)管理系統(tǒng)進(jìn)行系統(tǒng)優(yōu)化優(yōu)化數(shù)據(jù)庫(kù)管理系統(tǒng)中的各種系統(tǒng)工作參數(shù),如緩沖區(qū)個(gè)數(shù)、應(yīng)用索引技術(shù)等。4、優(yōu)化sql語(yǔ)句和優(yōu)化事務(wù)處理(1)盡量減少對(duì)數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)查詢的次數(shù)和在服務(wù)器與客戶端網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量開(kāi)發(fā)人員在使用sql時(shí)往往會(huì)陷入一個(gè)誤區(qū),即太關(guān)注于所得的結(jié)果是否正確,而忽 略了不同的實(shí)現(xiàn)方法之間可能存在的性能差界。但由于sql語(yǔ)句是獨(dú)立于程序設(shè)計(jì)邏輯, 因此對(duì)sql語(yǔ)句進(jìn)行優(yōu)化不會(huì)影響程序邏輯一一sql語(yǔ)句有不同的寫(xiě)法,但在性能上的差 異非常大。(2)不要在事務(wù)執(zhí)行中進(jìn)行大量計(jì)算或者與用戶交互的操作,因?yàn)樵谑聞?wù)的執(zhí)行過(guò)程中不 允許被打斷。因此,事務(wù)處理的過(guò)程應(yīng)該盡量短小、盡量避免事務(wù)。長(zhǎng)事務(wù)會(huì)鎖住很多系 統(tǒng)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 有機(jī)化學(xué)原料的環(huán)保合成方法優(yōu)化研究進(jìn)展分析預(yù)測(cè)考核試卷
- 機(jī)器人服務(wù)創(chuàng)新模式與實(shí)踐案例考核試卷
- 景區(qū)旅游信息化平臺(tái)運(yùn)營(yíng)與管理考核試卷
- 制作氣球培訓(xùn)課件
- 家電公司轉(zhuǎn)讓合同范本
- 委托汽車融資合同范本
- 正規(guī)吊車租賃合同范本
- 圍墻制作安裝合同范本
- 項(xiàng)目建設(shè)策劃合同范本
- 酒店餐飲服務(wù)流程優(yōu)化與提升制度
- 普通高中生物學(xué)課程標(biāo)準(zhǔn)-(2024修訂版)
- GB/T 45006-2024風(fēng)電葉片用纖維增強(qiáng)復(fù)合材料拉擠板材
- 2025國(guó)家公務(wù)員政治理論應(yīng)知應(yīng)會(huì)知識(shí)考試題庫(kù)(含答案)
- 農(nóng)業(yè)托管合同范例
- 2024年無(wú)錫職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)及答案解析
- 食品中阿維菌素等55種農(nóng)藥最大殘留限量
- 黑龍江省龍東地區(qū)中考政治真題試題(含答案)
- 保潔部消殺培訓(xùn)
- 棗莊學(xué)院《數(shù)字電子技術(shù)》2022-2023學(xué)年期末試卷
- 人力資源部人員培訓(xùn)方案(7篇)
- 口服輪狀疫苗知識(shí)課件
評(píng)論
0/150
提交評(píng)論