Oracle 9i 數據庫設計指引全集(2)
2024-08-29 13:40:16
供稿:網友
表空間數據文件采用自動擴展的方式,擴展容量快大小按2的整數倍(1M、2M、4M、8M、16M、32M、64M)進行擴展,創建表空間時盡量采用nologing選項。表空間的最大限制一般采用unlimited,除非確切知道表空間數據文件的最大使用范圍。 (一般windows 32位系統的文件最大2G,64位的unix系統系統文件最大128G,但也要注重文件格式設定的文件大小),建議最大為2G。表空間采用local治理方式,例如:
CREATE TABLESPACE TBS_USERINFO
DATAFILE
'/oradata/tbs_userinfo.dbf'
SIZE 8M
REUSE
AUTOEXTEND ON
NEXT 2M
MAXSIZE UNLIMITED
NOLOGGING
EXTENT MANAGEMENT
LOCAL
AUTOALLOCATE
SEGMENT SPACE MANAGEMENT AUTO;
1.4 裸設備的使用
一個scsi設備可以 14個分區,unix操作系統256個分區,性能比文件系統方式高15%左右,空間大于要小于(實際分區大小減兩個Oracle的數據塊),比如100M,大于為100000K,推薦在unix使用軟連接(ln)方式把裸設備形成文件,用加入表空間時加resue 選項,當然也可只接把設備加入表空間,移動裸設備使用dd命令
對于windows平臺,oracle提供軟連接工具,實現裸設備的使用,計算一條記錄的長度
2 數據庫邏輯設計原則
2.1 命名規范
2.1.1 表屬性規范
2.1.1.1 表名
前綴為Tbl_ 。數據表名稱必須以有特征含義的單詞或縮寫組成,中間可以用“_”分割,例如:tbl_pstn_detail。表名稱不能用雙引號包含。
2.1.1.2 表分區名
前綴為p 。分區名必須有特定含義的單詞或字串。
例如 :tbl_pstn_detail 的分區p2004100101表示該分區存儲 2004100101時段的數據。
2.1.1.3 字段名
字段名稱必須用字母開頭,采用有特征含義的單詞或縮寫,不能用雙引號包含。
2.1.1.4 主鍵名
前綴為PK_。主鍵名稱應是 前綴+表名+構成的字段名。假如復合主鍵的構成字段較多,則只包含第一個字段。表名可以去掉前綴。
2.1.1.5 外鍵名
前綴為FK_。外鍵名稱應是 前綴+ 外鍵表名 + 主鍵表名 + 外鍵表構成的字段名。表名可以去掉前綴。
2.1.2 索引
4.1.2.1 普通索引
前綴為IDX_。索引名稱應是 前綴+表名+構成的字段名。假如復合索引的構成字段較多,則只包含第一個字段,并添加序號。表名可以去掉前綴。
2.1.2.2 主鍵索引
前綴為IDX_PK_。索引名稱應是 前綴+表名+構成的主鍵字段名,在創建表時候用using index指定主鍵索引屬性。
2.1.2.3 唯一所以
前綴為IDX_UK_。索引名稱應是 前綴+表名+構成的字段名。
2.1.2.4 外鍵索引
前綴為IDX_FK_。索引名稱應是 前綴+表名+構成的外鍵字段名。
2.1.2.5 函數索引
前綴為IDX_func_。索引名稱應是 前綴+表名+構成的特征表達字符。
2.1.2.6 蔟索引
前綴為IDX_clu_。索引名稱應是 前綴+表名+構成的簇字段。
2.1.3 視圖
前綴為V_。按業務操作命名視圖。
2.1.4 實體化視圖
前綴為MV_。按業務操作命名實體化視圖。
2.1.5 存儲過程
前綴為PRoc_ 。按業務操作命名存儲過程
2.1.6 觸發器
前綴為Trig_ 。觸發器名應是 前綴 + 表名 + 觸發器名。
2.1.7 函數
前綴為Func_ 。按業務操作命名函數
2.1.8 數據包
前綴為Pkg_ 。按業務操作集合命名數據包。
2.1.9 序列
前綴為Seq_ 。按業務屬性命名。
2.1.10 表空間
2.1.10.1 公用表空間
前綴為Tbs_ 。 根據存儲的特性命名,例如: tbs_parameter 。
2.1.10.2 專用表空間
Tbs_<表名稱>_nn。該表空間專門存儲指定的某一個表,或某一表的若干個分區的數據
2.1.11 數據文件
<表空間名>nn.dbf 。
nn =1,2,3,4,…等。
2.1.12 普通變量
前綴為Var_ 。 存放字符、數字、日期型變量。
2.1.13 游標變量
前綴為Cur_ 。存放游標記錄集。
2.1.14 記錄型變量
前綴為Rec_ 。 存放記錄型數據。
2.1.15 表類型變量
前綴為Tab_ 。 存放表類型數據。
2.1.16 數據庫鏈
前綴為dbl_ 。 表示分布式數據庫外部鏈接關系。
2.2 命名
2.2.1 語言
命名應該使用英文單詞,避免使用拼音,非凡不應該使用拼音簡寫。命名不答應使用中文或者非凡字符。
英文單詞使用用對象本身意義相對或相近的單詞。選擇最簡單或最通用的單詞。不能使用毫不相干的單詞來命名
當一個單詞不能表達對象含義時,用詞組組合,假如組合太長時,采用用簡或縮寫,縮寫要基本能表達原單詞的意義。
當出現對象名重名時,是不同類型對象時,加類型前綴或后綴以示區別。
2.2.2 大小寫
名稱一律大寫,以方便不同數據庫移植,以及避免程序調用問題。
2.2.3 單詞分隔
命名的各單詞之間可以使用下劃線進行分隔。
2.2.4 保留字
命名不答應使用SQL保留字。
2.2.5 命名長度
表名、字段名、視圖名長度應限制在20個字符內(含前綴)。
2.2.6 字段名稱
同一個字段名在一個數據庫中只能代表一個意思。比如telephone在一個表中代表“電話號碼”的意思,在另外一個表中就不能代表“手機號碼”的意思。
不同的表用于相同內容的字段應該采用同樣的名稱,字段類型定義。
2.3 數據類型
2.3.1 字符型
固定長度的字串類型采用char,長度不固定的字串類型采用varchar。避免在長度不固定的情況下采用char類型。假如在數據遷移等出現以上情況,則必須使用trim()函數截去字串后的空格。
2.3.2 數字型
數字型字段盡量采用number類型。
2.3.3 日期和時間
2.3.3.1 系統時間
由數據庫產生的系統時間首選數據庫的日期型,如DATE類型。
2.3.3.2 外部時間
由數據導入或外部應用程序產生的日期時間類型采用varchar類型,數據格式采用:YYYYMMDDHH24MISS。
2.3.3.3 大字段
如無非凡需要,避免使用大字段(blob,clob,long,text,image等)。
2.3.3.4 唯一鍵
對于數字型唯一鍵值,盡可能用系列sequence產生。
2.4 設計
2.4.1 范式
如無性能上的必須原因,應該使用關系數據庫理論,達到較高的范式,避免數據冗余,但是假如在數據量上與性能上無非凡要求,考慮到實現的方便性可以有適當的數據冗余,但基本上要達到3NF.如非確實必要,避免一個字段中存儲多個標志的做法。如11101表示5個標志的一種取值。這往往是增加復雜度,降低性能的地方。