數據字典
數據字典
數據字典(Data dictionary)是一種用戶可以訪問的記錄資料庫和應用程序元數據的目錄。主動數據字典是指在對資料庫或應用程序結構進行修改時,其內容可以由DBMS自動更新的數據字典。被動數據字典是指修改時必須手工更新其內容的數據字典。
數據字典(data dictionary)是對於數據模型中的數據對象或者項目的描述的集合,這樣做有利於程序員和其他需要參考的人。分析一個用戶交換的對象系統的第一步就是去辨別每一個對象,以及它與其他對象之間的關係。這個過程稱為數據建模,結果產生一個對象關係圖。當每個數據對象和項目都給出了一個描述性的名字之後,它的關係再進行描述(或者是成為潛在描述關係的結構中的一部分),然後再描述數據的類型(例如文本還是圖像,或者是二進位數值),列出所有可能預先定義的數值,以及提供簡單的文字性描述。這個集合被組織成書的形式用來參考,就叫做數據字典。
當開發用到數據模型的程序時,數據字典可以幫助你理解數據項適合結構中的哪個地方,它可能包含什麼數值,以及數據項基本上表示現實世界中的什麼意思。例如,一家銀行或者是一個銀行組織可能對客戶銀行業涉及的數據對象進行建模。他們需要給銀行程序員提供數據字典。這個數據字典就描述了客戶銀行業中的數據模型每一個數據項(例如,“賬戶持有人”和“可用信用”)。
數據字典最重要的作用是作為分析階段的工具。任何字典最重要的用途都是供人查詢對不了解的條目的解釋,在結構化分析中,數據字典的作用是給數據流圖上每個成分加以定義和說明。換句話說,數據流圖上所有的成分的定義和解釋的文字集合就是數據字典,而且在數據字典中建立的一組嚴密一致的定義,很有助於改進分析員和用戶的通信。
數據字典在需求分析階段被建立。
數據字典是一個預留空間,一個資料庫,這是用來儲存信息資料庫本身。
數據字典可能包含的信息,例如:
資料庫設計資料
數據內部儲存的SQL程序
用戶許可權
用戶統計
資料庫的過程中的信息
資料庫增長統計
資料庫性能統計
數據字典則是系統中各類數據描述的集合,是進行詳細的數據收集和數據分析所獲得的主要成果。
數據字典通常包括數據項\數據結構\數據流\數據存儲和處理過程五個部分。
其中數據項是數據的最小組成單位,若干個數據項可以組成一個數據結構。數據字典通過對數據項和數據結構的定義,來描述數據流、數據存儲的邏輯內容。
數據字典是關於數據的信息的集合,也就是對數據流圖中包含的所有元素的定義的集合.
數據字典還有另一種含義,是在資料庫設計時用到的一種工具,用來描述資料庫中基本表的設計,主要包括欄位名、數據類型、主鍵、外鍵等描述表的屬性的內容。
以Oracle資料庫字典為例:數據字典分為數據字典表和數據字典視圖
Oracle資料庫字典通常是在創建和安裝資料庫時被創建的,Oracle數據字典是Oracle資料庫系統工作的基礎,沒有數據字典的支持,Oracle資料庫系統就不能進行任何工作。數據字典中的表是不能直接被訪問的,但是可以訪問數據字典中的視圖。
數據字典表裡的數據是Oracle系統存放的系統數據,而普通表存放的是用戶的數據。為了方便的區別這些表,這些表的名字都是用"$"結尾,這些表屬於SYS用戶。
數據字典表由$ORACLE_HOME/rdbms/admin/sql.bsq 腳本創建,這個腳本里又調用了其他的腳本來創建這些數據字典表。在那些創建腳本里有基表的創建SQL。
Oracle 對數據字典表的說明:
These underlying tables store information about the database. Only Oracle Database should write to and read these tables. Users rarely access the base tables directly because they are normalized and most data is stored in a cryptic format.
這些數據字典表,只有Oracle 能夠進行讀寫。
SYS用戶下的這些數據字典表,存放在system 表空間下面,表名都用"$"結尾,為了便於用戶對數據字典表的查詢, Oracle對這些數據字典都分別建立了用戶視圖,這樣即容易記住,還隱藏了數據字典表表之間的關係,Oracle針對這些對象的範圍,分別把視圖命名為DBA_XXXX, ALL_XXXX和USER_XXXX。
數據字典視圖分2類:靜態數據字典(靜態性能視圖)和 動態數據字典(動態性能視圖)。
靜態數據字典中的視圖分為三類,它們分別由三個前綴構成:user_*、 all_*、 dba_*。
徠user_*:該視圖存儲了關於當前用戶所擁有的對象的信息。(即所有在該用戶模式下的對象)
all_*:該視圖存儲了當前用戶能夠訪問的對象的信息, 而不是當前用戶擁有的對象。(與user_*相比,all_* 並不需要擁有該對象,只需要具有訪問該對象的許可權即可)
dba_*:該視圖存儲了資料庫中所有對象的信息。(前提是當前用戶具有訪問這些資料庫的許可權,一般來說必須具有管理員許可權)
這些視圖由SYS用戶創建的,所以使用需要加上SYS,為了方便, Oracle為每個數據字典表的視圖頭建立了同名字的公共同義詞(public synonyms). 這樣簡單的處理就省去了寫sys.的麻煩。
除了靜態數據字典中三類視圖,其他的字典視圖中主要的是V$視圖,之所以這樣叫是因為他們都是以V$或GV$開頭的。這些視圖會不斷的進行更新,從而提供了關於內存和磁碟的運行情況,所以我們只能對其進行只讀訪問而不能修改它們。
Throughout its operation, Oracle Database maintains a set of virtual tables that record current database activity. These views are calleddynamic performance views because they are continuously updated while a database is open and in use. The views, also sometimes calledV$ views。
V$視圖是基於X$虛擬視圖的。V$視圖是SYS用戶所擁有的,在預設狀況下,只有SYS用戶和擁有DBA系統許可權的用戶可以看到所有的視圖,沒有DBA許可權的用戶可以看到USER_和ALL_視圖,但不能看到DBA_視圖。與DBA_,ALL,和USER_視圖中面向資料庫信息相反,這些視圖可視的給出了面向實例的信息。
動態性能表用於記錄當前資料庫的活動,只存於資料庫運行期間,實際的信息都取自內存和控制文件。 DBA可以使用動態視圖來監視和調節數據。
數據字典的組成:
1、數據項
2、數據結構
3、數據流
4、數據存儲
5、處理過程
6、外部實體
數據字典
數據字典是資料庫的重要組成部分。它存放有資料庫所用的有關信息,對用戶來說是一組只讀的表。數據字典內容包括:
1、資料庫中所有模式對象的信息,如表、視圖、簇、及索引等。
2、分配多少空間,當前使用多少空間等。
3、列的預設值。
4、約束信息的完整性。
5、用戶的名字。
6、用戶及角色被授予的許可權。
7、用戶訪問或使用的審計信息。
8、其它產生的資料庫信息。
資料庫數據字典是一組表和視圖結構。它們存放在SYSTEM表空間中。
資料庫數據字典不僅是每個資料庫的中心。而且對每個用戶也是非常重要的信息。用戶可以用SQL語句訪問資料庫數據字典。
關於數據的信息集合,是一種用戶可以訪問的記錄資料庫和應用程序元數據的目錄,是對資料庫內表信息的物理與邏輯的說明
數據字典各部分的描述
① 數據項:數據流圖中數據塊的數據結構中的數據項說明
數據項是不可再分的數據單位。對數據項的描述通常包括以下內容:
數據項描述={數據項名,數據項含義說明,別名,數據類型,長度,
取值範圍,取值含義,與其他數據項的邏輯關係}
其中“取值範圍”、“與其他數據項的邏輯關係”定義了數據的完整性約束條件,是設計數據檢驗功能的依據。
若干個數據項可以組成一個數據結構。
② 數據結構:數據流圖中數據塊的數據結構說明
數據結構反映了數據之間的組合關係。一個數據結構可以由若干個數據項組成,也可以由若干個數據結構組成,或由若干個數據項和數據結構混合組成。對數據結構的描述通常包括以下內容:
數據結構描述={數據結構名,含義說明,組成:{數據項或數據結構}}
③ 數據流:數據流圖中流線的說明
數據流是數據結構在系統內傳輸的路徑。對數據流的描述通常包括以下內容:
數據流描述={數據流名,說明,數據流來源,數據流去向,
組成:{數據結構},平均流量,高峰期流量}
其中“數據流來源”是說明該數據流來自哪個過程,即數據的來源。“數據流去向”是說明該數據流將到哪個過程去,即數據的去向。“平均流量”是指在單位時間(每天、每周、每月等)里的傳輸次數。“高峰期流量”則是指在高峰時期的數據流量。
④ 數據存儲:數據流圖中數據塊的存儲特性說明
數據存儲是數據結構停留或保存的地方,也是數據流的來源和去向之一。對數據存儲的描述通常包括以下內容:
數據存儲描述={數據存儲名,說明,編號,流入的數據流,流出的數據流,
組成:{數據結構},數據量,存取方式}
其中“數據量”是指每次存取多少數據,每天(或每小時、每周等)存取幾次等信息。“存取方法”包括是批處理,還是聯機處理;是檢索還是更新;是順序檢索還是隨機檢索等。
另外“流入的數據流”要指出其來源,“流出的數據流”要指出其去向。
⑤ 處理過程:數據流圖中功能塊的說明
數據字典中只需要描述處理過程的說明性信息,通常包括以下內容:
處理過程描述={處理過程名,說明,輸入:{數據流},輸出:{數據流},
處理:{簡要說明}}
其中“簡要說明”中主要說明該處理過程的功能及處理要求。功能是指該處理過程用來做什麼(並不是怎麼樣做);處理要求包括處理頻度要求,如單位時間裡處理多少事務,多少數據量,響應時間要求等,這些處理要求是後面物理設計的輸入及性能評價的標準。