![oracle-9i-數(shù)據(jù)庫設(shè)計指引全集_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/14/c55815cb-82d9-468d-bd0b-3b18abc9bc5f/c55815cb-82d9-468d-bd0b-3b18abc9bc5f1.gif)
![oracle-9i-數(shù)據(jù)庫設(shè)計指引全集_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/14/c55815cb-82d9-468d-bd0b-3b18abc9bc5f/c55815cb-82d9-468d-bd0b-3b18abc9bc5f2.gif)
![oracle-9i-數(shù)據(jù)庫設(shè)計指引全集_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/14/c55815cb-82d9-468d-bd0b-3b18abc9bc5f/c55815cb-82d9-468d-bd0b-3b18abc9bc5f3.gif)
![oracle-9i-數(shù)據(jù)庫設(shè)計指引全集_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/14/c55815cb-82d9-468d-bd0b-3b18abc9bc5f/c55815cb-82d9-468d-bd0b-3b18abc9bc5f4.gif)
![oracle-9i-數(shù)據(jù)庫設(shè)計指引全集_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/14/c55815cb-82d9-468d-bd0b-3b18abc9bc5f/c55815cb-82d9-468d-bd0b-3b18abc9bc5f5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Oracle9i 數(shù)據(jù)庫設(shè)計指引全集一、數(shù)據(jù)庫物理設(shè)計原則1.1 數(shù)據(jù)庫環(huán)境配置原則1.1.1 操作系統(tǒng)環(huán)境:2 64 個。系列小型機系對于中小型數(shù)據(jù)庫系統(tǒng),采用 linux 操作系統(tǒng)比較合適,對于數(shù)據(jù)庫冗余要求負載均衡能 力要求較高的系統(tǒng),可以采用 oracle9i rac 的集群數(shù)據(jù)庫的方法,集群節(jié)點數(shù)范圍在 對于大型數(shù)據(jù)庫系統(tǒng),可以采用 sun solaris sparc 64 位小型機系統(tǒng)或 hp 9000 統(tǒng)。 rad5 適合只讀操作的數(shù)據(jù)庫, rad1 適合 oltp 數(shù)據(jù)庫1.1.2 內(nèi)存要求能力不超過對于 linux 操作系統(tǒng)下的數(shù)據(jù)庫 , 由于在正常情況下 oracle 對
2、sga 的 管理1.7g 。所以總的物理內(nèi)存在 4g 以下。 sga 的大小為物理內(nèi)存的50%75%。對于 64 位的小型系統(tǒng),oracle 數(shù)據(jù)庫對 sga 的管理超 過 2g 的限制, sga 設(shè)計在一個合適的范圍內(nèi):物理內(nèi)存的 50%70%,當 sga 過大的時候會導(dǎo)致內(nèi)存分頁,影響系統(tǒng)性能。1.1.3 交換區(qū)設(shè)計當物理內(nèi)存在2g以下的情況下,交換分區(qū)swap為物理內(nèi)存的3倍,當物理內(nèi)存2g的情況下, swap 大小為物理內(nèi)存的 12倍。1.1.4 其他環(huán)境變量參考 oracle 相關(guān)的安裝文檔和隨機文檔。1.2 數(shù)據(jù)庫設(shè)計原則1.2.1 數(shù)據(jù)庫 sid數(shù)據(jù)庫 sid 是唯一標志數(shù)據(jù)庫的
3、符號,命名長度不能超過 5 個字符。對于單節(jié)點數(shù)據(jù)庫, 以字符開頭的 5 個長度以內(nèi)字串作為 sid 的命名。 對于集群數(shù)據(jù)庫, 當命名 sid 后,各節(jié)點 sid 自動命名為 sidnn,其中nn為節(jié)點號:1 , 2,64。例如 rac1、rac2、rac24。1.2.2 數(shù)據(jù)庫全局名iD_ M¥ p期幽護恤刪UB調(diào)川Mif出仙.HU卜w;料I吃!址魁11!'1!哋扯刖甸3Specify the fallowingincrmil-ionn。柑titi引©玄就留甘i,科埠慚紗 佻毗Ilfbd by iCftbsP Dmbftie k-p嫡智耐詢Via f%m'
4、;rtamB-domain*. I曲時口aghaafc 帕me,卜ac.g站netA databa府 k r創(chuàng) gncid by in 胡匕引 tmlana cn 卅,tiu 皿 r data bust nod* Each instence i% unidi/ cFrriTii d 丁/ an Ora;fe S/stem idenMisr (5®) Fix each cluster 牝臨脇貼 hMtirv泊tbt EID El Mm河iwd *f a氏?訊射罰 蘭斫機庁汝rhg Matab申汨and a ruFTbf fw ?ach Inslantt that mutemEtigll
5、y lefteiifeed.沖方訊賞斗曰日 510 prtfin hat tee” firitered f會 ycu -vhich yu an ac<epT orto 直 value Yiu pftfEr.h<數(shù)據(jù)庫全局名稱:vsid>domain123 數(shù)據(jù)庫類型選擇對于海量數(shù)據(jù)庫系統(tǒng),采用data warehouse的類型。對于小型數(shù)據(jù)庫或oltp類型的數(shù)據(jù)庫,采用 transaction processing類型。血 1曰亡1 3 tfiiifrtpUW fr<)nrt th$ hoviTug 業(yè) t 怙 弋1電或華 m d$tab-S4'0CUf.a 一
6、俺 hCi=-B亠-匚t斟三e4 fUij-peseVes.1TranE9<rlffl Pfoc&sslng1 X砂 DaL9bi.s»Q.rK曹常髓£db'inJydes gl汕i|”.訶杠t 陀耐皿八丄恥124 數(shù)據(jù)庫連接類型選擇oracle數(shù)據(jù)庫有專用 服務(wù)器連接類型和多線程服務(wù)器mts連接類型。對于批處理服務(wù),需要專用服務(wù)器連接方式,而對于 oltp服務(wù)則mts的連接方式比較合適。由于采用mts后,可以通過配置網(wǎng)絡(luò)服務(wù)實現(xiàn)某些特定批處理服務(wù)采用專用服務(wù)器連接方式,所以數(shù)據(jù)庫設(shè)計時一般 采用mts類型。正社牡TLZLSsEe<t thE r
7、nftE iin whikhy 科 wsnt "療 data ba MJ tQcp 吏 “ts by dafay H iFX于>wOedicMtsd、日rvflr Modefof *flch 占施時th jJfitwJkA詔 will AllTatt 4 rttf6ur» 鬢d*<atd 怙 smj 俑自only th»t clileiiiiil. "LFsi?-s*" i. he ruiriber oi total Tbmt ennBvtl:飾 hffkpected to ti smaJI : f *hen ."&
8、;:.;£ '-hH be- making parsfEtent Bo呼funnTiag ftiuesTs to clw aalabasf' 呂 harsdeli«,fd fMri#ce沽m £hartof. ui, it Mlmc>dt whin rucr* than,a i Eil I iniimb" qF u$*rj nt*cf *4 IGR rWG to 1 InB #*FSibWJjO i-i rr.tiltaneouil' white- pfFiientl)/ uitjlifin syf.-Liarti rBSQ
9、urdf. riit CiFiia fhaz'd 1(-( vti ItJiture y*iH tu cntitjled.Edl* ifi&FtlfP*rarri*tfii5£. I125 數(shù)據(jù)庫sga配置在數(shù)據(jù)庫初始設(shè)計階段采用按比例配數(shù)據(jù)庫sga可以采用手工配置或按物理內(nèi)存比例配置,置方式,在實際應(yīng)用中按系統(tǒng)調(diào)優(yōu)方式修改sga。B叵a TyPfrr<ertiLagp <it< 1 HW cm C4a<JeOais best TM-hew-ni u .f Mffimcr,.SwfTer C胡箱;da*4 Pool;Lariyti Pcxili
10、PGA:I'w J 'J" -'!- > *' iocjI Mirm血y 佃 oracia ?ej « Byr&f126 數(shù)據(jù)庫字符集選擇rizmewv IwludfrG目 B F草曰o 卩fsss* 5It* 立nd t b« a單&uit工農(nóng)*tupJ 卄為了使數(shù)據(jù)庫能夠正確支持多國語言,必須配置合適的數(shù)據(jù)庫字符集,采用utf8字符集。注意:如果沒有大對象,在使用過程中進行語言轉(zhuǎn)換沒有什么影響,具體過程如下(切記設(shè)定的字符集必須是oracle支持,不然不能start):sql> shutdow n i
11、mmediate;sql> startu p mou nt;sql> alter system en able restricted sessi on;sql> alter system set job_queue_ processes=O;sql> alter database open;sql> alter database character set in ter nal_use we8iso8859p1;sql> shutdow n immediate;sql> startu p127.1 db files1.2.7 數(shù)據(jù)庫其他參數(shù)配置200
12、個。當數(shù)據(jù)庫規(guī)劃時文件數(shù)量db_files 是數(shù)據(jù)庫能夠同時打開的文件數(shù)量,默認值是 files 接近或超過 200 個時候,按以下估計值配置 : db_files = files * 1.51.2.7.2 db_block_size就是 2m 4m或 8m為好。db block size一個 extent 要是 5 個 blocks 的倍數(shù)為好,如:一個 blocks 是 4096 字節(jié),那一個 extent 是數(shù)據(jù)庫最小物理單元,一旦數(shù)據(jù)庫創(chuàng)建完成,該參 數(shù)無法修改, db_block_size 按以下規(guī)則調(diào)整:數(shù)據(jù)倉庫類型:db_block_size 盡可能大,采用8192 或 1638
13、4olt p 類型:dbblock_size 用比較小的取值范圍:2048 或4096blocks 推薦是系統(tǒng)操作的塊倍數(shù)(裸設(shè)備塊大小是 在大部分系統(tǒng)上通用)。512 字節(jié),ntfs 是 4k ,使用 8k 的方式1.2.8 數(shù)據(jù)庫控制文件配置1.2.8.1 控制文件鏡象多個控制文件存放在不同的物理位置。1.2.8.2 控制文件配置控制文件中參數(shù)設(shè)置,最大的數(shù)據(jù)文件數(shù)量不能小于數(shù)據(jù)庫參數(shù)db_files1.2.9 數(shù)據(jù)庫日志文件配置1.2.9.1 日志文件大小日志文件的大小由數(shù)據(jù)庫事務(wù)處理量決定,在設(shè)計過程中,確保每 件。所以對于批處理系統(tǒng),日志文件大小為幾百 m 到幾 g 的大小。 小為幾
14、百m以內(nèi)。20 分鐘切換一個日志文對于 oltp 系統(tǒng),日志文件大1.2.9.2 日志文件組數(shù)量對于批處理系統(tǒng),日志文件組為 5 1 0組;對于 oltp 系統(tǒng),日志文件組為 3 5組,每組 日志大小保持一致;對于集群數(shù)據(jù)庫系統(tǒng),每節(jié)點有各自獨立的日志組。為了確保日志能夠鏡象作用,每日志組的成員為2 個。1.2.9.3 日志成員數(shù)量1.2.10 數(shù)據(jù)庫回滾段配置在 oracle9i 數(shù)據(jù)庫中,設(shè)計 undo 表空間取代以前版本的回滾段表空間。undo 表空間大小的設(shè)計規(guī)范由以下公式計算:undospace = ur * ups *db_block_size+冗余量ur : 表示在 undo 中
15、保持的最長時間數(shù)(秒),由數(shù)據(jù)庫參數(shù)undo_retention 值決定。ups :表示在 undo 中,每秒產(chǎn)生的數(shù)據(jù)庫塊數(shù)量。例如:在數(shù)據(jù)庫中保留 2 小時的回退數(shù)據(jù),假定每小時產(chǎn)生 = 2 * 3600 * 200 * 4k = 5.8g200 個數(shù)據(jù)庫塊。則 undospace1.2.11 數(shù)據(jù)庫臨時段表空間配置數(shù)據(jù)庫臨時段表空間根據(jù)實際生產(chǎn)環(huán)境情況調(diào)整其大小,表空間屬性為自動擴展。1.2.12 數(shù)據(jù)庫系統(tǒng)表空間配置系統(tǒng)表空間大小 1g 左右,除了存放數(shù)據(jù)庫數(shù)據(jù)字典的數(shù)據(jù)外,其他數(shù)據(jù)不得存儲在系統(tǒng)表 空間。1.3 數(shù)據(jù)庫表空間設(shè)計原則1.3.1 表空間大小定義原則當表空間 大小小于操作
16、系統(tǒng)對最大文件限制時,表空間由一個文件組成。如果表空間大小大于操作系統(tǒng)對最大文件限制時,該表空間由多個數(shù)據(jù)文件組成,表空間的總大小為估算為:tablespace + sum (數(shù)據(jù)段 +索引段 )*150% 。1.3.2 表空間擴展性設(shè)計原則2 的整數(shù)倍( 1m、2m、 4m、8m、 選項。表空間的最大限制一般采(一般windows 3 2位系統(tǒng)的文表空間數(shù)據(jù)文件采用自動擴展的方式,擴展容量快大小按64m進行擴展,創(chuàng)建表空間時盡量采用nologing,除非確切知道表空間數(shù)據(jù)文件的最大使用范圍。6 4位的unix系統(tǒng)系統(tǒng)文件最大128g,但也要注意文件格式設(shè)定的文件大小)2g。表空間采用loca
17、l管理 方式,例如:16m、 32m、用 unlimited 件最大2g, 建議最大為tbs_userinfocreate tablespace datafile'/oradata/tbs_userinfo.dbf' size 8mreuseautoextend on next 2mmaxsize unlimitednologgingextent management localautoallocate segment space management auto;1.4 裸設(shè)備的使用一個 scsi 設(shè)備可以 14 個分區(qū), unix 操作系統(tǒng) 256 個分區(qū) , 性能比文件系統(tǒng)
18、方式高15左右,空間大于要小于(實際分區(qū)大小減兩個oracle的數(shù)據(jù)塊),比如100m,大于為100000k,推薦在 unix 使用軟連接 (ln) 方式把裸設(shè)備形成文件,用加入表空間時加 resue 選項,當然也可只 接把設(shè)備加入表空間,移動裸設(shè)備使用 dd 命令對于windows 平臺, oracle 提供軟連接工具,實現(xiàn)裸設(shè)備的使用,計算一條記錄的長度數(shù)據(jù)庫邏輯設(shè)計原則2.1命名規(guī)范2.1.1表屬性規(guī)范2.1.1.1 表名前綴為 tbl_ 。數(shù)據(jù)表名稱必須以有特征含義的單詞或縮寫組成,中間可以用“_”分割,例如: tbl_pstn_detail 。表名稱不能用雙引號包含。2.1.1.2
19、表分區(qū)名前綴為 p 。分區(qū)名必須有特定含義的單詞或字串。例如 : tbl_pstn_detail的分區(qū) p2004100101 表示該分區(qū)存儲 2004100101 時段的數(shù)據(jù)。2.1.1.3 字段名字段名稱必須用字母開頭,采用有特征含義的單詞或縮寫,不能用雙引號包含。2.1.1.4 主鍵名前綴為pk_。主鍵名稱應(yīng)是 前綴+表名+構(gòu)成的字段名。如果復(fù)合主鍵的構(gòu)成字段較多,則 只包含第一個字段。表名可以去掉前綴。2.1.1.5外鍵名前綴為 以去掉前綴。fk_ 。外鍵名稱應(yīng)是 前綴 + 外鍵表名 + 主鍵表名 + 外鍵表構(gòu)成的字段名。表名可2.1.2 索引4.1.2.1 普通索引前綴為 idx_
20、。索引名稱應(yīng)是 前綴 +表名 +構(gòu)成的字段名。如果復(fù)合索引的構(gòu)成字段較多,則 只包含第一個字段,并添加序號。表名可以去掉前綴。2.1.2.2 主鍵索引前綴 +表名 +構(gòu)成的主鍵字段名, 在創(chuàng)建表時候用 using index前綴為 idx_pk_ 。索引名稱應(yīng)是 指定主鍵索引屬性。前綴為func。按業(yè)務(wù)操作命名函數(shù)2.1.2.3唯一所以前綴為idx_uk_ 。索引名稱應(yīng)是前綴+表名+構(gòu)成的字段名。2.1.2.4外鍵索引前綴為idx_fk_ 。索引名稱應(yīng)是前綴+表名+構(gòu)成的外鍵字段名。2.1.2.5函數(shù)索引前綴為idx_func_ 。索引名稱應(yīng)是前綴 + 表名 +構(gòu)成的特征表達字符。2.1.2.
21、6蔟索引前綴為idx_clu_ 。索引名稱應(yīng)是前綴+表名+構(gòu)成的簇字段。2.1.3視圖前綴為v_。按業(yè)務(wù)操作命名視圖。2.1.4實體化視圖前綴為mv_。按業(yè)務(wù)操作命名實體化視圖。2.1.5存儲過程前綴為proc_ 。按業(yè)務(wù)操作命名存儲過程2.1.6觸發(fā)器前綴為trig_ 。觸發(fā)器名應(yīng)是前綴 + 表名 + 觸發(fā)器名。2.1.7函數(shù)2.1.8數(shù)據(jù)包前綴為pkg_ 。按業(yè)務(wù)操作集合命名數(shù)據(jù)包。2.1.9序列前綴為seq_ 。按業(yè)務(wù)屬性命名。2.1.10表空間2.1.10.1 公用表空間前綴為 tbs_ 。 根據(jù)存儲的特性命名,例如:tbs_parameter2.1.10.2 專用表空間tbs_<
22、; 表名稱 >_nn 。該表空間專門存儲指定的某一個表,或某一表的若干個分區(qū)的數(shù)據(jù)2.1.11 數(shù)據(jù)文件<表空間名 >nn.dbf 。nn =1 , 2, 3, 4,等。2.1.12普通變量前綴為var_ 。 存放字符、數(shù)字、日期型變量。2.1.13游標變量前綴為cur_ 。存放游標記錄集。2.1.14記錄型變量前綴為rec存放記錄型數(shù)據(jù)。2.1.15表類型變量前綴為tab存放表類型數(shù)據(jù)。2.1.16數(shù)據(jù)庫鏈前綴為dbl表示分布式數(shù)據(jù)庫外部鏈接關(guān)系。2.2.1 語言2.2 命名命名應(yīng)該使用英文單詞,避免使用拼音,特別不應(yīng)該使用拼音簡寫。命名不允許使用中文 或者特殊字符。英文單
23、詞用對象本身意義相對或相近的單詞,選擇最簡單 或最通用的單詞,不 能使用毫不相干的單詞來命名。 當一個單詞不能表達對象含義時, 用詞組組合, 如果組合太長時, 采用用簡或縮寫, 縮寫要基本能表達原單詞的意義。 當出現(xiàn)對象名重名時, 是不同類型對象時,加類型前綴或后綴以示區(qū)別。2.2.2 大小寫名稱一律大寫,以方便不同數(shù)據(jù)庫移植,以及避免程序調(diào)用問題。2.2.3 單詞分隔命名的各單詞之間可以使用下劃線進行分隔。2.2.4 保留字命名不允許使用 sql 保留字。2.2.5 命名長度表名、字段名、視圖名長度應(yīng)限制在 20 個字符內(nèi) ( 含前綴 ) 。2.2.6 字段名稱同一個字段名在一個數(shù)據(jù)庫中只能
24、代表一個意思。 比如 telephone 在一個表中代表“電話號 碼”的意思,在另外一個表中就不能代表“手機號碼”的意思。不同的表用于相同內(nèi)容的字段應(yīng)該采用同樣的名稱,字段類型定義。2.3 數(shù)據(jù)類型2.3.1 字符型固定長度的字串類型采用 char ,長度不固定的字串類型采用 varchar 。避免在長度不固定的 情況下采用 char 類型。如果在數(shù)據(jù)遷移等出現(xiàn)以上情況,則必須使用 trim() 函數(shù)截去字串后的 空格。2.3.2 數(shù)字型數(shù)字型字段盡量采用 number 類型。2.3.3.1 系統(tǒng)時間由數(shù)據(jù)庫產(chǎn)生的系統(tǒng)時間首選數(shù)據(jù)庫的日期型,如date 類型。2.3.3 日期和時間2.3.3.
25、2 外部時間2.4.2.3.2 外鍵關(guān)聯(lián)由數(shù)據(jù)導(dǎo)入或外部應(yīng)用程序產(chǎn)生的日期時間類型采用varchar 類型,數(shù)據(jù)格式采用:yyyymmddhh24miss 。2.3.3.3 大字段如無特別需要,避免使用大字段(blob , clob ,long , text , image 等) 。2.3.3.4 唯一鍵對于數(shù)字型唯一鍵值,盡可能用系列 sequence產(chǎn)生。2.4 設(shè)計2.4.1 范式如無性能上的必須原因, 應(yīng)該使用關(guān)系數(shù)據(jù)庫理論, 如果在數(shù)據(jù)量上與性能上無特別要求,考慮到實現(xiàn)的方便性可以有適當 要達到 3nf. 如非確實必要,避免一個字段中存儲多個標志的做法。如 種取值。這往往是增加復(fù)雜度
26、,降低性 能的地方。達到較高的范式, 避免數(shù)據(jù)冗余 , 但是 的數(shù)據(jù)冗余,但基本上 11101 表示 5 個標志的一2.4.2 表設(shè)計2.4.2.1 邏輯段設(shè)計原則2.4.2.1.1 tablespace每個表在創(chuàng)建時候, 必須指定所在的表空間, 不要采用默認表空間以防止表建立在系統(tǒng)表空間上導(dǎo)致性能問題。對于事務(wù)比較繁忙的數(shù)據(jù)表,必須存放在該表的專用表空間中。2.4.2.1.2 pctused默認 pctused 導(dǎo)致數(shù)據(jù)庫物理空間利用率非常低40%左右; 對于 update 比較少或 update 不導(dǎo)致行增大的表, pctused 可設(shè)置在 60 85 之間;對于 update 能夠?qū)е滦?/p>
27、增大的表, update 設(shè)置在 40 70 之間2.4.2.1.3 initrans對于需要并行查詢或者在 rac 數(shù)據(jù)庫中需要并行處理的表, initrans 設(shè)置為 2 的倍數(shù),否 則,不設(shè)該值。2.4.2.1.4 storage2.4.2.1.4.1 initial盡量減少表數(shù)據(jù)段的 extents 數(shù)量, initial 的大小盡量接近數(shù)據(jù)段的大小1m, 2m, 4m, 8m, 16m,等按2的倍數(shù)進行圓整。例如表或分區(qū)數(shù)據(jù)段大小為取 32m。64k, 128k ,28m,則 initial2.4.2.1.4.2 next表或分區(qū)擴展 extents 的大小 按上述方法進行圓整。當表
28、或分區(qū)數(shù)據(jù)段無法按 接近值進行圓整的情況下 其大小可以按 initial+next 進行圓整。此時 必須設(shè)置 minextents=2 。例如:表或分區(qū)數(shù)據(jù)段大小為 150m 則 initial=128m;next=32m minextents=2 。initial2.4.2.1.4.3 minextents該參數(shù)表示表創(chuàng)建時候 extents 的初始數(shù)量 一般取12。2.4.2.1.4.4 pctincrease表示每個擴展 extents 的增長率,設(shè)置 pctincrease=0 能夠獲得較好的存儲性能。2.4.2.2 特殊表設(shè)計原則2.4.2.2.1 分區(qū)表對于數(shù)據(jù)量比較大的表 根據(jù)表
29、數(shù)據(jù)的屬性進行分區(qū) 以得到較好的性能。如果表按某些 字段進行增長 則采用按字段值范圍進行范圍分區(qū); 如果表按某個字段的 幾個關(guān)鍵值進行分布 則采用列表分區(qū);對于靜態(tài)表 則采用 hash 分區(qū)或列表分區(qū);在范圍分區(qū)中 如果數(shù)據(jù)按某關(guān) 鍵字段均衡分布 則采用子分區(qū)的復(fù)合分區(qū) 方法。2.4.2.2.2 聚蔟表如果某幾個靜態(tài)表關(guān)系比較密切,則可以采用聚蔟表的方法。2.4.2.3 完整性設(shè)計原則2.4.2.3.1 主鍵約束關(guān)聯(lián)表的父表要求有主健 主健字段或組合字段必須滿足非空屬性和唯一性要求。 量比較大的父表 要求指定索引段。對于數(shù)據(jù)對于關(guān)聯(lián)兩個表的字段 一般應(yīng)該分別建立主鍵、外鍵。實際是否建立外鍵 根
30、據(jù)對數(shù)據(jù)完 整性的要求決定。 為了提高性能 對于數(shù)據(jù)量比較大的標要求對外健建立索引。 對于有要求級聯(lián) 刪除屬性的外鍵 必須指定 on delete cascade 。2.4.2.3.3 null 值對于字段能否 null ,應(yīng)該在 sql 建表腳本中明確指明,不應(yīng)使用缺省。由于 null 值在參加 任何運算中,結(jié)果均為 null 。所以在應(yīng)用程序中必須利用 nvl() 函數(shù)把可能為 null 值得字段或 變量轉(zhuǎn)換為非 null 的默認值。例如: nvl ( sale,0 )。2.4.2.3.4 check 條件對于字段有 檢查 性約束,要求指定 check 規(guī)則。2.4.2.3.5 觸發(fā)器觸發(fā)
31、器是一種特殊的存儲過程,完整性和一致性不被破壞而創(chuàng)建,通過數(shù)據(jù)表的 dml 操作而觸發(fā)執(zhí)行, 起作用是為確保數(shù)據(jù)的 實現(xiàn)數(shù)據(jù)的完整約束。觸發(fā)器的 屬性保持一致,before 或 after 以避免死鎖發(fā)生。事務(wù)屬性的選擇時候,對表操作的事務(wù)屬性必須與應(yīng)用程序事務(wù)在大型導(dǎo)入表中,盡量避免使用觸發(fā)器。2.4.2.4注釋表、字段等應(yīng)該有中文名稱注釋,以及需要說明的內(nèi)容。2.4.3 索引設(shè)計對于查詢中需要作為查詢條件的字段, 可以考慮建立索引。 最終根據(jù)性能的需要決定是否建 立索引。 對于復(fù)合索引, 索引字段順序比較關(guān)鍵, 把查詢頻率比較高的字段排在索引組合的最前 面。在分區(qū)表中,盡量采用 local
32、 分區(qū)索引以方便分區(qū)維護。tablespace 、storage除非時分區(qū) local 索引,否則在創(chuàng)建索引段時候必須指定指定索引段的 屬性,具體參考 4.4.2.1 內(nèi)容。2.4.4 視圖設(shè)計視圖是虛擬的數(shù)據(jù)庫表,在使用時要遵循以下原則:從一個或多個庫表中查詢部分數(shù)據(jù)項; 為簡化查詢,將復(fù)雜的檢索或字查詢通過視圖實現(xiàn);提高數(shù)據(jù)的 安全 性,只將需要查看的數(shù)據(jù)信息顯示給權(quán)限有限的人員;視圖中如果嵌套使用視圖,級數(shù)不得超過3 級;庫表,不宜使用視圖;可以采用實體化視圖代替。由于視圖中只能固定條件或沒有條件,所以對于數(shù)據(jù)量較大或隨時間的推移逐漸增多的 除特殊需要,避免類似select * from
33、 table name而沒有檢索條件的視圖;視圖中盡量避免岀現(xiàn)數(shù)據(jù)排序的sql語句。package 中實現(xiàn)。存儲過程、函數(shù)的 具體算法改變時,只需要修 當和數(shù)據(jù)庫頻繁交換數(shù)據(jù)是通過存儲過程 戶才能執(zhí)行存儲過程,所以存儲過程有利于提高系統(tǒng)2.4.5 包設(shè)計存儲過程、函數(shù)、外部游標必須在指定的數(shù)據(jù)包對象 建立如同其它語言形式的編程過程,適合采用模塊化設(shè)計方法;當 改需要存儲過程即可, 不需要修改其它語言的源程序。 可以提高運行速度,由于只有被授權(quán)的用 的 安全 性。存儲過程、 函數(shù)必須檢索數(shù)據(jù)庫表記錄或數(shù)據(jù)庫其他對象, 甚至修改(執(zhí)行 insert 、delete 、 update 、drop 、
34、create 等操作)數(shù)據(jù) 庫信息。如果某項功能不需要和數(shù)據(jù)庫打交道,則不得通 過數(shù)據(jù)庫存儲過程或函數(shù)的方式實現(xiàn)。在函數(shù)中避免采用 dml 或 ddl 語句。在數(shù)據(jù)包采用存儲過程、函數(shù)重載的方法,簡化數(shù)據(jù)包設(shè)計,提高代碼效率。存儲過程、函 數(shù)必須有相應(yīng)的出錯處理功能。2.4.6 安全性設(shè)計2.4.4.6.1 管理 默認用戶在生產(chǎn)環(huán)境中,必須嚴格管理 sys 和 system 用戶,必須修改其默認密碼,禁止用該用戶建 立數(shù)據(jù)庫應(yīng)用對象。刪除或鎖定數(shù)據(jù)庫測試用戶 scott 。2.4.6.2 數(shù)據(jù)庫級用戶權(quán)限設(shè)計必須按照應(yīng)用需求,設(shè)計不同的用戶訪問權(quán)限。業(yè)務(wù)需求建立不同的應(yīng)用角色。包括應(yīng)用系統(tǒng)管理
35、用戶, 普通用戶等, 按照用戶訪問另外的用戶對象時,應(yīng)該通過創(chuàng)建同義詞對象synonym 進行訪問。2.4.6.3 角色與權(quán)限則每個用戶的權(quán)限等于他所兼角確定每個角色對數(shù)據(jù)庫表的操作權(quán)限,如創(chuàng)建、檢索、更新、刪除等。每個角色擁有剛好能 夠完成任務(wù)的權(quán)限, 不多也不少。 在應(yīng)用時再為用戶分配角色, 色的權(quán)限之和。2.4.6.4 應(yīng)用級用戶設(shè)計應(yīng)用級的用戶帳號密碼不能與數(shù)據(jù)庫相同, 防止用戶直接操作數(shù)據(jù)庫。 用戶只能用帳號登陸 到應(yīng)用軟件,通過應(yīng)用軟件訪問數(shù)據(jù)庫,而沒有其它途徑操作數(shù)據(jù)庫。2.4.6.5 用戶密碼管理用戶帳號的密碼必須進行加密處理,確保在任何地方的查詢都不會岀現(xiàn)密碼的明文。2.5 sql 編寫2.5.1字符類型數(shù)據(jù)sql中的字符類型數(shù)據(jù)應(yīng)該統(tǒng)一使用單引號。特別對純數(shù)字的字串,必須用單引號,否則會 導(dǎo)致內(nèi)部轉(zhuǎn)換而引起性能問題或索引失效問題。利用trim(),lower()等函數(shù)格式化匹配條件。2.5.2 復(fù)雜 sql對于非
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度農(nóng)村集體土地房屋租賃及轉(zhuǎn)讓合同范本
- 2025年度新能源項目股權(quán)質(zhì)押合同范本
- 2025年度凈水器產(chǎn)品安全培訓(xùn)服務(wù)合同
- 2025年度婚慶婚禮司儀與主持人服務(wù)合同
- 2025年度廣告設(shè)計創(chuàng)新技術(shù)研究與應(yīng)用合同
- 2025年度互聯(lián)網(wǎng)金融平臺資金借貸合同范本
- 2025年度體育賽事現(xiàn)場服務(wù)簡單勞務(wù)合同書
- 2025年度國內(nèi)貨物公路運輸合同環(huán)保責任落實
- 2025年度新型環(huán)保材料臨時運輸合同范本
- 2025年度化肥行業(yè)投資合作合同模板
- 事業(yè)單位公開招聘工作人員考試題(公共基礎(chǔ)知識試題和答案)
- 低空飛行旅游觀光項目可行性實施報告
- 2024年版:煤礦用壓力罐設(shè)計與安裝合同
- 甲狀腺的科普宣教
- 《算法定價壟斷屬性問題研究的國內(nèi)外文獻綜述》4200字
- 2024年04月浙江義烏農(nóng)商銀行春季招考筆試歷年參考題庫附帶答案詳解
- 涉密計算機保密培訓(xùn)
- 2024年浙江省五校聯(lián)盟高考地理聯(lián)考試卷(3月份)
- 在線心理健康咨詢行業(yè)現(xiàn)狀分析及未來三至五年行業(yè)發(fā)展報告
- 電動三輪車購銷合同
- 淋巴瘤的免疫靶向治療
評論
0/150
提交評論