㈠ 數據字典建立應從( )階段開始。
數據字典建立應從系統分析階段開始。數據字典對數據的數據項、數據結構、數據流、數據存儲、處理邏輯等進行定義和描述,其目的是對數據流程圖中的各個元素做出詳細的說明,使用數據字典為簡單的建模項目。簡而言之,數據字典是描述數據的信息集合,是對系統中使用的所有數據元素的定義的集合。
主動數據字典在對資料庫或應用程序結構進行修改時,其內容可以由DBMS自動更新的數據字典。被動數據字典是指修改時必須手工更新其內容的數據字典。
(1)資料庫設計在哪裡建立數據字典擴展閱讀
數據字典中的視圖分為三類,它們分別由三個前綴構成:user_*、 all_*、 dba_*。
1、user_*:該視圖存儲了關於當前用戶所擁有的對象的信息。(即所有在該用戶模式下的對象)
2、all_*:該視圖存儲了當前用戶能夠訪問的對象的信息,而不是當前用戶擁有的對象。(與user_*相比,all_* 並不需要擁有該對象,只需要具有訪問該對象的許可權即可)
3、dba_*:該視圖存儲了資料庫中所有對象的信息。(前提是當前用戶具有訪問這些資料庫的許可權,一般來說必須具有管理員許可權)
㈡ 請簡要的敘述一下資料庫的主要設計過程
一、資料庫設計過程
資料庫技術是信息資源管理最有效的手段。
資料庫設計是指:對於一個給定的應用環境,構造最優的資料庫模式,建立資料庫及其應用系統,有效存儲數據,滿足用戶信息要求和處理要求。
資料庫設計的各階段:
A、需求分析階段:綜合各個用戶的應用需求(現實世界的需求)。
B、在概念設計階段:形成獨立於機器和各DBMS產品的概念模式(信息世界模型),用E-R圖來描述。
C、在邏輯設計階段:將E-R圖轉換成具體的資料庫產品支持的數據模型,如關系模型,形成資料庫邏輯模式。然後根據用戶處理的要求,安全性的考慮,在基本表的基礎上再建立必要的視圖(VIEW)形成數據的外模式。
D、在物理設計階段:根據DBMS特點和處理的需要,進行物理存儲安排,設計索引,形成資料庫內模式。
1. 需求分析階段
需求收集和分析,結果得到數據字典描述的數據需求(和數據流圖描述的處理需求)。
需求分析的重點:調查、收集與分析用戶在數據管理中的信息要求、處理要求、安全性與完整性要求。
需求分析的方法:調查組織機構情況、各部門的業務活動情況、協助用戶明確對新系統的各種要求、確定新系統的邊界。
常用的調查方法有: 跟班作業、開調查會、請專人介紹、詢問、設計調查表請用戶填寫、查閱記錄。
分析和表達用戶需求的方法主要包括自頂向下和自底向上兩類方法。自頂向下的結構化分析方法(Structured Analysis,簡稱SA方法)從最上層的系統組織機構入手,採用逐層分解的方式分析系統,並把每一層用數據流圖和數據字典描述。
數據流圖表達了數據和處理過程的關系。系統中的數據則藉助數據字典(Data Dictionary,簡稱DD)來描述。
2. 概念結構設計階段
通過對用戶需求進行綜合、歸納與抽象,形成一個獨立於具體DBMS的概念模型,可以用E-R圖表示。
概念模型用於信息世界的建模。概念模型不依賴於某一個DBMS支持的數據模型。概念模型可以轉換為計算機上某一DBMS支持的特定數據模型。
概念模型特點:
(1) 具有較強的語義表達能力,能夠方便、直接地表達應用中的各種語義知識。
(2) 應該簡單、清晰、易於用戶理解,是用戶與資料庫設計人員之間進行交流的語言。
概念模型設計的一種常用方法為IDEF1X方法,它就是把實體-聯系方法應用到語義數據模型中的一種語義模型化技術,用於建立系統信息模型。
作者: 小靈, 出處:論壇, 責任編輯: 李書琴, 2007-09-27 15:17
本文詳細解析了資料庫設計過程、設計技巧以及總結了資料庫命名規范……
2.1 第零步——初始化工程
這個階段的任務是從目的描述和范圍描述開始,確定建模目標,開發建模計劃,組織建模隊伍,收集源材料,制定約束和規范。收集源材料是這階段的重點。通過調查和觀察結果,業務流程,原有系統的輸入輸出,各種報表,收集原始數據,形成了基本數據資料表。
2.2 第一步——定義實體
實體集成員都有一個共同的特徵和屬性集,可以從收集的源材料——基本數據資料表中直接或間接標識出大部分實體。根據源材料名字表中表示物的術語以及具有 「代碼」結尾的術語,如客戶代碼、代理商代碼、產品代碼等將其名詞部分代表的實體標識出來,從而初步找出潛在的實體,形成初步實體表。
2.3 第二步——定義聯系
IDEF1X模型中只允許二元聯系,n元聯系必須定義為n個二元聯系。根據實際的業務需求和規則,使用實體聯系矩陣來標識實體間的二元關系,然後根據實際情況確定出連接關系的勢、關系名和說明,確定關系類型,是標識關系、非標識關系(強制的或可選的)還是非確定關系、分類關系。如果子實體的每個實例都需要通過和父實體的關系來標識,則為標識關系,否則為非標識關系。非標識關系中,如果每個子實體的實例都與而且只與一個父實體關聯,則為強制的,否則為非強制的。如果父實體與子實體代表的是同一現實對象,那麼它們為分類關系。
2.4 第三步——定義碼
通過引入交叉實體除去上一階段產生的非確定關系,然後從非交叉實體和獨立實體開始標識侯選碼屬性,以便唯一識別每個實體的實例,再從侯選碼中確定主碼。為了確定主碼和關系的有效性,通過非空規則和非多值規則來保證,即一個實體實例的一個屬性不能是空值,也不能在同一個時刻有一個以上的值。找出誤認的確定關系,將實體進一步分解,最後構造出IDEF1X模型的鍵基視圖(KB圖)。
2.5 第四步——定義屬性
從源數據表中抽取說明性的名詞開發出屬性表,確定屬性的所有者。定義非主碼屬性,檢查屬性的非空及非多值規則。此外,還要檢查完全依賴函數規則和非傳遞依賴規則,保證一個非主碼屬性必須依賴於主碼、整個主碼、僅僅是主碼。以此得到了至少符合關系理論第三範式的改進的IDEF1X模型的全屬性視圖。
2.6 第五步——定義其他對象和規則
定義屬性的數據類型、長度、精度、非空、預設值、約束規則等。定義觸發器、存儲過程、視圖、角色、同義詞、序列等對象信息。
3. 邏輯結構設計階段
將概念結構轉換為某個DBMS所支持的數據模型(例如關系模型),並對其進行優化。設計邏輯結構應該選擇最適於描述與表達相應概念結構的數據模型,然後選擇最合適的DBMS。
將E-R圖轉換為關系模型實際上就是要將實體、實體的屬性和實體之間的聯系轉化為關系模式,這種轉換一般遵循如下原則:一個實體型轉換為一個關系模式。實體的屬性就是關系的屬性。實體的碼就是關系的碼。
數據模型的優化,確定數據依賴,消除冗餘的聯系,確定各關系模式分別屬於第幾範式。確定是否要對它們進行合並或分解。一般來說將關系分解為3NF的標准,即:
表內的每一個值都只能被表達一次。
表內的每一行都應該被唯一的標識(有唯一鍵)。
表內不應該存儲依賴於其他鍵的非鍵信息。
作者: 小靈, 出處:論壇, 責任編輯: 李書琴, 2007-09-27 15:17
本文詳細解析了資料庫設計過程、設計技巧以及總結了資料庫命名規范……
4. 資料庫物理設計階段
為邏輯數據模型選取一個最適合應用環境的物理結構(包括存儲結構和存取方法)。根據DBMS特點和處理的需要,進行物理存儲安排,設計索引,形成資料庫內模式。
5. 資料庫實施階段
運用DBMS提供的數據語言(例如SQL)及其宿主語言(例如C),根據邏輯設計和物理設計的結果建立資料庫,編制與調試應用程序,組織數據入庫,並進行試運行。 資料庫實施主要包括以下工作:用DDL定義資料庫結構、組織數據入庫 、編制與調試應用程序、資料庫試運行 ,(Data Definition Language(DDL數據定義語言)用作開新數據表、設定欄位、刪除數據表、刪除欄位,管理所有有關資料庫結構的東西)
●Create (新增有關資料庫結構的東西,屬DDL)
●Drop (刪除有關資料庫結構的東西,屬DDL)
●Alter (更改結構,屬DDL)
6. 資料庫運行和維護階段
在資料庫系統運行過程中必須不斷地對其進行評價、調整與修改。內容包括:資料庫的轉儲和恢復、資料庫的安全性、完整性控制、資料庫性能的監督、分析和改進、資料庫的重組織和重構造。
7. 建模工具的使用
為加快資料庫設計速度,目前有很多資料庫輔助工具(CASE工具),如Rational公司的Rational Rose,CA公司的Erwin和Bpwin,Sybase公司的PowerDesigner以及Oracle公司的oracle Designer等。
ERwin主要用來建立資料庫的概念模型和物理模型。它能用圖形化的方式,描述出實體、聯系及實體的屬性。ERwin支持IDEF1X方法。通過使用 ERwin建模工具自動生成、更改和分析IDEF1X模型,不僅能得到優秀的業務功能和數據需求模型,而且可以實現從IDEF1X模型到資料庫物理設計的轉變。ERwin工具繪制的模型對應於邏輯模型和物理模型兩種。在邏輯模型中,IDEF1X工具箱可以方便地用圖形化的方式構建和繪制實體聯系及實體的屬性。在物理模型中,ERwin可以定義對應的表、列,並可針對各種資料庫管理系統自動轉換為適當的類型。
設計人員可根據需要選用相應的資料庫設計建模工具。例如需求分析完成之後,設計人員可以使用Erwin畫ER圖,將ER圖轉換為關系數據模型,生成資料庫結構;畫數據流圖,生成應用程序。
二、資料庫設計技巧
1. 設計資料庫之前(需求分析階段)
1) 理解客戶需求,包括用戶未來需求變化。
2) 了解企業業務類型,可以在開發階段節約大量的時間。
3) 重視輸入(要記錄的數據)、輸出(報表、查詢、視圖)。
4) 創建數據字典和ER 圖表
數據字典(Data Dictionary,簡稱DD)是各類數據描述的集合,是關於資料庫中數據的描述,即元數據,不是數據本身。(至少應該包含每個欄位的數據類型和在每個表內的主外鍵)。
數據項描述: 數據項名,數據項含義說明,別名,數據類型,長度,取值范圍,取值含義,與其他數據項的邏輯關系
數據結構描述: 數據結構名,含義說明,組成:[數據項或數據結構]
數據流描述: 數據流名,說明,數據流來源,數據流去向, 組成:[數據結構],平均流量,高峰期流量
數據存儲描述: 數據存儲名,說明,編號,流入的數據流,流出的數據流,組成:[數據結構],數據量,存取方式
處理過程描述: 處理過程名,說明,輸入:[數據流],輸出:[數據流],處理:[簡要說明]
ER 圖表和數據字典可以讓任何了解資料庫的人都明確如何從資料庫中獲得數據。ER圖對表明表之間關系很有用,而數據字典則說明了每個欄位的用途以及任何可能存在的別名。對SQL 表達式的文檔化來說這是完全必要的。
5) 定義標準的對象命名規范
資料庫各種對象的命名必須規范。
作者: 小靈, 出處:論壇, 責任編輯: 李書琴, 2007-09-27 15:17
本文詳細解析了資料庫設計過程、設計技巧以及總結了資料庫命名規范……
2. 表和欄位的設計(資料庫邏輯設計)
表設計原則
1) 標准化和規范化
數據的標准化有助於消除資料庫中的數據冗餘。標准化有好幾種形式,但Third Normal Form(3NF)通常被認為在性能、擴展性和數據完整性方面達到了最好平衡。簡單來說,遵守3NF 標準的資料庫的表設計原則是:「One Fact in One Place」即某個表只包括其本身基本的屬性,當不是它們本身所具有的屬性時需進行分解。表之間的關系通過外鍵相連接。它具有以下特點:有一組表專門存放通過鍵連接起來的關聯數據。
2) 數據驅動
採用數據驅動而非硬編碼的方式,許多策略變更和維護都會方便得多,大大增強系統的靈活性和擴展性。
舉例,假如用戶界面要訪問外部數據源(文件、XML 文檔、其他資料庫等),不妨把相應的連接和路徑信息存儲在用戶界面支持的表裡。如果用戶界面執行工作流之類的任務(發送郵件、列印信箋、修改記錄狀態等),那麼產生工作流的數據也可以存放在資料庫里。角色許可權管理也可以通過數據驅動來完成。事實上,如果過程是數據驅動的,你就可以把相當大的責任推給用戶,由用戶來維護自己的工作流過程。
3) 考慮各種變化
在設計資料庫的時候考慮到哪些數據欄位將來可能會發生變更。
4) 表名、報表名和查詢名的命名規范
(採用前綴命名)檢查表名、報表名和查詢名之間的命名規范。你可能會很快就被這些不同的資料庫要素的名稱搞糊塗了。你可以統一地命名這些資料庫的不同組成部分,至少你應該在這些對象名字的開頭用 Table、Query 或者 Report 等前綴加以區別。如果採用了 Microsoft Access,你可以用 qry、rpt、tbl 和 mod 等符號來標識對象(比如 tbl_Employees)。用 sp_company 標識存儲過程,用 udf_ (或者類似的標記)標識自定義編寫的函數。
欄位設計原則:
1) 每個表中都應該添加的3 個有用的欄位。
dRecordCreationDate,在SQL Server 下默認為GETDATE()
sRecordCreator,在SQL Server 下默認為NOT NULL DEFAULT USER
nRecordVersion,記錄的版本標記;有助於准確說明記錄中出現null 數據或者丟失數據的原因
時效性數據應包括「最近更新日期/時間」欄位。時間標記對查找數據問題的原因、按日期重新處理/重載數據和清除舊數據特別有用。
2) 對地址和電話採用多個欄位
描述街道地址就短短一行記錄是不夠的。Address_Line1、Address_Line2 和Address_Line3 可以提供更大的靈活性。還有,電話號碼和郵件地址最好擁有自己的數據表,其間具有自身的類型和標記類別。
3) 表內的列[欄位]的命名規則(採用前綴/後綴命名)、採用有意義的欄位名
對列[欄位]名應該採用標準的前綴和後綴。如鍵是數字類型:用 _N 後綴;字元類型:_C 後綴;日期類型:_D 後綴。再如,假如你的表裡有好多「money」欄位,你不妨給每個列[欄位]增加一個 _M 後綴。
作者: 小靈, 出處:論壇, 責任編輯: 李書琴, 2007-09-27 15:17
本文詳細解析了資料庫設計過程、設計技巧以及總結了資料庫命名規范……
假設有兩個表:
Customer 和 Order。Customer 表的前綴是 cu_,所以該表內的子段名如下:cu_name_id、cu_surname、cu_initials 和cu_address 等。Order 表的前綴是 or_,所以子段名是:
or_order_id、or_cust_name_id、or_quantity 和 or_description 等。
這樣從資料庫中選出全部數據的 SQL 語句可以寫成如下所示:
Select * From Customer, Order Where cu_surname = "MYNAME" ;
and cu_name_id = or_cust_name_id and or_quantity = 1
在沒有這些前綴的情況下則寫成這個樣子(用別名來區分):
Select * From Customer, Order Where Customer.surname = "MYNAME" ;
and Customer.name_id = Order.cust_name_id and Order.quantity = 1
第 1 個 SQL 語句沒少鍵入多少字元。但如果查詢涉及到 5 個表乃至更多的列[欄位]你就知道這個技巧多有用了。
5) 選擇數字類型和文本類型的長度應盡量充足
假設客戶ID 為10 位數長。那你應該把資料庫表欄位的長度設為12 或者13 個字元長。但這額外占據的空間卻無需將來重構整個資料庫就可以實現資料庫規模的增長了。
6) 增加刪除標記欄位
在表中包含一個「刪除標記」欄位,這樣就可以把行標記為刪除。在關系資料庫里不要單獨刪除某一行;最好採用清除數據程序而且要仔細維護索引整體性。
7) 提防大小寫混用的對象名和特殊字元
採用全部大寫而且包含下劃符的名字具有更好的可讀性(CUSTOMER_DATA),絕對不要在對象名的字元之間留空格。
8) 小心保留詞
要保證你的欄位名沒有和保留詞、資料庫系統或者常用訪問方法沖突,比如,用 DESC 作為說明欄位名。後果可想而知!DESC 是 DESCENDING 縮寫後的保留詞。表裡的一個 SELECT * 語句倒是能用,但得到的卻是一大堆毫無用處的信息。
9) 保持欄位名和類型的一致性
在命名欄位並為其指定數據類型的時候一定要保證一致性。假如欄位在表1中叫做「agreement_number」,就別在表2里把名字改成 「ref1」。假如數據類型在表1里是整數,那在表2里可就別變成字元型了。當然在表1(ABC)有處鍵ID,則為了可讀性,在表2做關聯時可以命名為 ABC_ID。
10) 避免使用觸發器
觸發器的功能通常可以用其他方式實現。在調試程序時觸發器可能成為干擾。假如你確實需要採用觸發器,你最好集中對它文檔化。
作者: 小靈, 出處:論壇, 責任編輯: 李書琴, 2007-09-27 15:17
本文詳細解析了資料庫設計過程、設計技巧以及總結了資料庫命名規范……
3. 選擇鍵和索引(資料庫邏輯設計)
參考:《SQL優化-索引》一文
4. 數據完整性設計(資料庫邏輯設計)
1) 完整性實現機制:
實體完整性:主鍵
參照完整性:
父表中刪除數據:級聯刪除;受限刪除;置空值
父表中插入數據:受限插入;遞歸插入
父表中更新數據:級聯更新;受限更新;置空值
DBMS對參照完整性可以有兩種方法實現:外鍵實現機制(約束規則)和觸發器實現機制用戶定義完整性:
NOT NULL;CHECK;觸發器
2) 用約束而非商務規則強制數據完整性
採用資料庫系統實現數據的完整性。這不但包括通過標准化實現的完整性而且還包括數據的功能性。不要依賴於商務層保證數據完整性;它不能保證表之間(外鍵) 的完整性所以不能強加於其他完整性規則之上。如果你在數據層確實採用了約束,你要保證有辦法把更新不能通過約束檢查的原因採用用戶理解的語言通知用戶界面。
3) 強制指示完整性
在有害數據進入資料庫之前將其剔除。激活資料庫系統的指示完整性特性。這樣可以保持數據的清潔而能迫使開發人員投入更多的時間處理錯誤條件。
4) 使用查找控制數據完整性
控制數據完整性的最佳方式就是限制用戶的選擇。只要有可能都應該提供給用戶一個清晰的價值列表供其選擇。這樣將減少鍵入代碼的錯誤和誤解同時提供數據的一致性。某些公共數據特別適合查找:國家代碼、狀態代碼等。
5) 採用視圖
為了在資料庫和應用程序代碼之間提供另一層抽象,可以為應用程序建立專門的視圖而不必非要應用程序直接訪問數據表。這樣做還等於在處理資料庫變更時給你提供了更多的自由。
6) 分布式數據系統
對分布式系統而言,在你決定是否在各個站點復制所有數據還是把數據保存在一個地方之前應該估計一下未來 5 年或者 10 年的數據量。當你把數據傳送到其他站點的時候,最好在資料庫欄位中設置一些標記,在目的站點收到你的數據之後更新你的標記。為了進行這種數據傳輸,請寫下你自己的批處理或者調度程序以特定時間間隔運行而不要讓用戶在每天的工作後傳輸數據。本地拷貝你的維護數據,比如計算常數和利息率等,設置版本號保證數據在每個站點都完全一致。
7) 關系
如果兩個實體之間存在多對一關系,而且還有可能轉化為多對多關系,那麼你最好一開始就設置成多對多關系。從現有的多對一關系轉變為多對多關系比一開始就是多對多關系要難得多。
8) 給數據保有和恢復制定計劃
考慮數據保存策略並包含在設計過程中,預先設計你的數據恢復過程。採用可以發布給用戶/開發人員的數據字典實現方便的數據識別同時保證對數據源文檔化。編寫在線更新來「更新查詢」供以後萬一數據丟失可以重新處理更新。
9) 用存儲過程讓系統做重活
提供一整套常規的存儲過程來訪問各組以便加快速度和簡化客戶程序代碼的開發。資料庫不只是一個存放數據的地方,它也是簡化編碼之地。
本文詳細解析了資料庫設計過程、設計技巧以及總結了資料庫命名規范……
5. 其他設計技巧
1) 避免使用觸發器
觸發器的功能通常可以用其他方式實現。在調試程序時觸發器可能成為干擾。假如你確實需要採用觸發器,你最好集中對它文檔化。
2) 使用常用英語(或者其他任何語言)而不要使用編碼
在創建下拉菜單、列表、報表時最好按照英語名排序。假如需要編碼,可以在編碼旁附上用戶知道的英語。
3) 保存常用信息
讓一個表專門存放一般資料庫信息非常有用。在這個表裡存放資料庫當前版本、最近檢查/修復(對Access)、關聯設計文檔的名稱、客戶等信息。這樣可以實現一種簡單機制跟蹤資料庫,當客戶抱怨他們的資料庫沒有達到希望的要求而與你聯系時,這樣做對非客戶機/伺服器環境特別有用。
4) 包含版本機制
在資料庫中引入版本控制機制來確定使用中的資料庫的版本。時間一長,用戶的需求總是會改變的。最終可能會要求修改資料庫結構。把版本信息直接存放到資料庫中更為方便。
5) 編制文檔
對所有的快捷方式、命名規范、限制和函數都要編制文檔。
採用給表、列、觸發器等加註釋的 資料庫工具。對開發、支持和跟蹤修改非常有用。
對資料庫文檔化,或者在資料庫自身的內部或者單獨建立文檔。這樣,當過了一年多時間後再回過頭來做第2 個版本,犯錯的機會將大大減少。
6) 測試、測試、反復測試
建立或者修訂資料庫之後,必須用用戶新輸入的數據測試數據欄位。最重要的是,讓用戶進行測試並且同用戶一道保證選擇的數據類型滿足商業要求。測試需要在把新資料庫投入實際服務之前完成。
7) 檢查設計
在開發期間檢查資料庫設計的常用技術是通過其所支持的應用程序原型檢查資料庫。換句話說,針對每一種最終表達數據的原型應用,保證你檢查了數據模型並且查看如何取出數據。
三、資料庫命名規范
1. 實體(表)的命名
1) 表以名詞或名詞短語命名,確定表名是採用復數還是單數形式,此外給表的別名定義簡單規則(比方說,如果表名是一個單詞,別名就取單詞的前4 個字母;如果表名是兩個單詞,就各取兩個單詞的前兩個字母組成4 個字母長的別名;如果表的名字由3 個單片語成,從頭兩個單詞中各取一個然後從最後一個單詞中再取出兩個字母,結果還是組成4 字母長的別名,其餘依次類推)
對工作用表來說,表名可以加上前綴WORK_ 後面附上採用該表的應用程序的名字。在命名過程當中,根據語義拼湊縮寫即可。注意:將欄位名稱會統一成大寫或者小寫中的一種,故中間加上下劃線。
作者: 小靈, 出處:論壇, 責任編輯: 李書琴, 2007-09-27 15:17
本文詳細解析了資料庫設計過程、設計技巧以及總結了資料庫命名規范……
舉例:
定義的縮寫 Sales: Sal 銷售;
Order: Ord 訂單;
Detail: Dtl 明細;
則銷售訂單明細表命名為:Sal_Ord_Dtl;
2) 如果表或者是欄位的名稱僅有一個單詞,那麼建議不使用縮寫,而是用完整的單詞。
舉例:
定義的縮寫 Material Ma 物品;
物品表名為:Material, 而不是 Ma.
但是欄位物品編碼則是:Ma_ID;而不是Material_ID
3) 所有的存儲值列表的表前面加上前綴Z
目的是將這些值列表類排序在資料庫最後。
4) 所有的冗餘類的命名(主要是累計表)前面加上前綴X
冗餘類是為了提高資料庫效率,非規范化資料庫的時候加入的欄位或者表
5) 關聯類通過用下劃線連接兩個基本類之後,再加前綴R的方式命名,後面按照字母順序羅列兩個表名或者表名的縮寫。
關聯表用於保存多對多關系。
如果被關聯的表名大於10個字母,必須將原來的表名的進行縮寫。如果沒有其他原因,建議都使用縮寫。
舉例:表Object與自身存在多對多的關系,則保存多對多關系的表命名為:R_Object;
作者: 小靈, 出處:論壇, 責任編輯: 李書琴, 2007-09-27 15:17
本文詳細解析了資料庫設計過程、設計技巧以及總結了資料庫命名規范……
2. 屬性(列)的命名
1) 採用有意義的列名
表內的列要針對鍵採用一整套設計規則。每一個表都將有一個自動ID作為主健,邏輯上的主健作為第一組候選主健來定義;
A、如果是資料庫自動生成的編碼,統一命名為:ID
B、如果是自定義的邏輯上的編碼則用縮寫加「ID」的方法命名,即「XXXX_ID」
C、如果鍵是數字類型,你可以用_NO 作為後綴;
D、如果是字元類型則可以採用_CODE 後綴
E、對列名應該採用標準的前綴和後綴。
舉例:銷售訂單的編號欄位命名:Sal_Ord_ID;如果還存在一個資料庫生成的自動編號,則命名為:ID。
2) 所有的屬性加上有關類型的後綴
注意,如果還需要其它的後綴,都放在類型後綴之前。
注: 數據類型是文本的欄位,類型後綴TX可以不寫。有些類型比較明顯的欄位,可以不寫類型後綴。
3) 採用前綴命名
給每個表的列名都採用統一的前綴,那麼在編寫SQL表達式的時候會得到大大的簡化。這樣做也確實有缺點,比如破壞了自動表連接工具的作用,後者把公共列名同某些資料庫聯系起來。
3. 視圖的命名
1) 視圖以V作為前綴,其他命名規則和表的命名類似;
2) 命名應盡量體現各視圖的功能。
4. 觸發器的命名(盡量不使用)
觸發器以TR作為前綴,觸發器名為相應的表名加上後綴,Insert觸發器加'_I',Delete觸發器加'_D',Update觸發器加'_U',如:TR_Customer_I,TR_Customer_D,TR_Customer_U。
5. 存儲過程名
存儲過程應以'UP_'開頭,和系統的存儲過程區分,後續部分主要以動賓形式構成,並用下劃線分割各個組成部分。如增加代理商的帳戶的存儲過程為'UP_Ins_Agent_Account'。
6. 變數名
變數名採用小寫,若屬於片語形式,用下劃線分隔每個單詞,如@my_err_no。
7. 命名中其他注意事項
1) 以上命名都不得超過30個字元的系統限制。變數名的長度限制為29(不包括標識字元@)。
2) 數據對象、變數的命名都採用英文字元,禁止使用中文命名。絕對不要在對象名的字元之間留空格。
3) 小心保留詞,要保證你的欄位名沒有和保留詞、資料庫系統或者常用訪問方法沖突
4) 保持欄位名和類型的一致性,在命名欄位並為其指定數據類型的時候一定要保證一致性。假如數據類型在一個表裡是整數,那在另一個表裡可就別變成字元型了。
㈢ 資料庫設計說明書中的數據字典應該如何編寫啊
數據字典:關於數據的信息集合。也桐掘就是對數據流圖中包含的所有元素的定義的集合
數據字典的內容:
1.由對下列四類元素的定義組成:
(1)數據流
(2)數據流分量(數據元素)
(3)數據存儲
(4)處理
(註:本書所指主要是由對數據的定義組成)
2.除數據定義外,數據字典還應包括:
記錄數據元素的下述信息
(1)一般信息(名字,別名,描述)
(2)定義(數據類型,長度,結構)
(3)使用特點(值的范圍,使用頻率,使用方式,輸入/輸出/本地條件值等)
(4)控制信息(來源,用戶,使用它的程序,改變權,使用權等)
(5)分組信息(父結點,從屬結構,物理位置——記錄,文件和資料庫等)
三、數據的定義方法:
數據字典中的定義:
就是對數據自頂向下的分解,分解到不需要進一步定義為止。
數據元素組成數據的方式:
(1)順序:以確定次序連接兩個或多個分量
(2)選擇:從兩個或多個可能的元素中選取一個
(3)重復:把指定的分量重復零次或多次
(4)可選:一個分量是可有可無的
3.在數據字典中建議使用下列符號:
(1)=:等價於(定義為)
(2):和(連接兩個分量)
(3)[]:或(從方括弧內數薯列出的若干個分量中選擇一個)
(4)():可選(圓括弧里的分量可有可無)
四、數據字典的用途
數據字典最重要的用途是作為分析階段的工具
有助於改進分析員,發小組之間的通信。
有助於改進不同開發人員,不同開發小組之間的通信
有助於要求所有開發人員根據公共數據字典描述數據和設計模塊,避免許多麻煩口問題
2.數據字典是開發資料庫的第一步。
五、數據字典的實現:
三種常見的途徑:
全人工過程(數據字典卡片)
全自動化過程(利用數據字典處理程序)
混合過程
六、數據字典應具有的特點:
通過名字能方便地查閱數據的定義
沒有冗餘
盡量薯輪者不重復在規格說明的其他組成部分中已經出現的信息
容易更新和修改
能單獨處理描述每一個數據元素的信息
定義的書寫方法簡單、方便且嚴格
產生交叉表、錯誤檢測、一致性校驗等
㈣ 資料庫設計:購物系統包括數據流圖和數據字典
流程圖可以用microsoft office里自帶的microsoft office visio做,選擇左側的軟體和資料庫,然後在右側「其他模版板」里選擇「數據流模型圖」權,就可以進入界面畫數據流圖了。左側選擇你想要的圖形拖至右側格子框中,大小可以調,雙擊可以在裡面輸入文字,一個小tip:「數據存儲」框中輸入文字雙擊時行不通的,先左鍵單擊「數據存儲」框,出現上下左右四個小箭頭,左鍵單擊右邊的小箭頭就可以出現一個框讓你輸,此時無需任何點擊就可以輸入了。
㈤ 數據字典的分類
數據字典在需求分析階段被建立。
數據字典是一個預留空間,一個資料庫,這是用來儲存信息資料庫本身。
數據字典可能包含的信息,例如:
資料庫設計資料
儲存的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可以使用動態視圖來監視和調節數據。