設計表
開發資料庫應用系統時,資料庫管理員負責規劃和建立資料表空間,而規劃和建立表則往往是由應用開發人員完成的。應用開發人員設計表時應考慮以下因素:
<1>在為表、列、索引的視圖、同義字、觸發器等與表有關的對象命名時,應該使用權有意義的名稱,其格式要有利於區分這些對象。
<2>為了給使用者和其它人員提供有意義的協助資訊,應該使用權Comment命令描述表、列的作用.
<3>設計表時,應該使用權範式來規劃每個表.範式分為第一範式 第二範式 第三範式 範式越高,表的設計越規範.
<4>定義表列時,應該選擇合適的資料類型和長度,為了節省儲存空間,應該將可以取Null值的列放在後面.
<5>確定表中所需的完整性條件約束。
<6>在合適的情況下,使用簇表以節省儲存空間並提高特定類型的SQL語句的效能.
規劃表的類型
在Oracle資料庫中,儲存使用者資料可以使用標準表 索引表 簇表 和分區表.
標準表:資料按堆組織,以無序方式存放在單獨表的表段中.這種表是最基礎最常用的資料庫表類型,是預設情況下建立的表.
索引表:資料是以”B-樹”結構存放在主鍵約束所對應的索引段中.使用索引表時,索引葉子節點不僅包含了鍵列的資料還包含了其他非鍵列的資料。
簇表:簇由共用相同資料區塊的一組表組成.在合適的情況下,使用簇表可以節省儲存空間並提高SQL語句的效能.
分區表:資料被劃分為更小的部分,並且儲存到相應的分區段中,每個分構段可以獨立管理和操作.
規劃表的位置
如果要在特定資料表空間上建表,使用者必須在該資料表空間中具有相應的配額或具有Unlimited Tablespace的系統許可權
如果建表時不指定TableSpace選項,Oracle會將表建立在使用者的預設資料表空間中.通過指定TableSpace選項,可以將表建立在其他資料表空間中.
當規劃表的存放位置時,應注意以下事項:
System資料表空間中應該只包含資料字典和Oracle系統對象 . 如果將表建立在System資料表空間,將會影響資料庫效能. 建議DBA給每個使用者指定其它的預設資料表空間.
設計應用系統時,應該規劃存放應用系統的表的資料表空間,不要隨意分散地建立到不同的資料表空間中,這樣會使執行某些資料庫管理和維護操作.
使用NoLogging選項建表
在建立表的過程中指定nologging子句,避免在建立表過程中產生過多的重做記錄,可以節省重做記錄檔的儲存空間,加快表的建立速度 .一般來說,nologging子句適合時在建立大表時使用.
使用ComPress選項建表
使用Oracle的表壓縮特徵(Compress)時,Oracle會將同一個資料區塊行和列的重複靈符據放在資料區塊的頭部,壓縮了表資料.
建立大表時的建議
<1>將表和它的索引分享存放 大表所對應的索引通常比較大,將表和它的索引分別存放在不同的資料表空間中,這樣的重建索引的過程中能夠更加容易地擷取所需的連續儲存空間,並且可以提高查詢時的I/O效率.
<2>分配足夠的臨時空間 如果如果應用程式員在訪問大表時需要執行規模較大的排序操作,就必須在資料庫中具有一個較大的臨時段,臨時段的儲存參數設定取決於臨資料表空間的預設儲存參數設定,即Storage子句中的各種參數的設定
預計和規劃表的大小
可以對錶的大小進行估計,包括對索引 回退段和重做記錄檔大小的估計,以決定支援期望的資料庫所需的磁碟空間大小.通過這些估計,就可以購買合適的硬體和作其它決定
可以估計單個表的大小,以便更好地管理該表將使