數據庫建設的規(guī)則_第1頁
數據庫建設的規(guī)則_第2頁
數據庫建設的規(guī)則_第3頁
數據庫建設的規(guī)則_第4頁
數據庫建設的規(guī)則_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、I目錄目錄1. 范圍范圍 .12. 總體要求總體要求 .12.1 數據庫設計總體要求.12.2 數據庫對象命名的總體要求.12.3 數據庫程序編碼的總體要求.23. 數據庫設計規(guī)范數據庫設計規(guī)范 .23.1 數據庫設計要求.23.2 數據庫概念邏輯設計.23.2.1 需求調研.23.2.2 概念設計.33.2.3 局部設計.33.2.4 整體設汁.33.2.5 邏輯設計.33.3 數據庫物理設計.34. ORACLE 數據庫命名規(guī)則數據庫命名規(guī)則 .44.1 ORACLE數據庫對象命名規(guī)則.44.1.1 數據庫名(Databases) .54.1.2 實例名(Instances).54.1.3

2、 表空間 (Tablespaces).54.1.4 數據文件(Data files).54.1.5 日志文件(Redo log files).54.1.6 參數文件(Parameter files和Stored Parameter files).64.1.7 控制文件(Control files).64.1.8 回滾段(Rollback segments).64.1.9 表(Tables).64.1.10 字段(Fields).64.1.11 索引(Indexes).74.1.12 約束(Constraints).74.1.13 視圖(Views).74.1.14 同義詞(Synonyms).

3、74.1.15 序列號(Sequences).84.1.16 存儲過程(Stored Procedures).84.1.17 函數(Functions).84.1.18 程序包(Packages)和程序包體(Packages Bodies).84.1.19 觸發(fā)器(Triggers).84.1.20 角色(Roles).84.1.21 用戶(Users).84.2 SQL、PL/SQL 源代碼編寫約定.8II4.2.1 變量命名規(guī)則.84.2.2 代碼排版規(guī)則.94.2.3 代碼注釋規(guī)則.94.2.4 其他要求.105. 數據字典文檔編寫格式數據字典文檔編寫格式 .105.1 數據庫表匯總表格

4、式.105.2 數據庫表詳述表格式.105.3 編碼數據表格式.1111. 范圍范圍本規(guī)范規(guī)定了南京市交通局數據庫建設的規(guī)則,是檢驗評定軟件開發(fā)者為南京市交通局開發(fā)的應用系統(tǒng)質量的標準尺度。本規(guī)范適用于各軟件開發(fā)者和有關單位為南京市交通局開發(fā)的應用系統(tǒng)所使用的數據庫,數據庫的設計、數據庫內的對象命名、數據字典文檔的編寫必須遵守本規(guī)范。2. 總體要求總體要求數據庫建設規(guī)范主要包括數據庫設計規(guī)范、數據庫對象命名規(guī)則和數據庫程序編碼規(guī)則、數據字典文檔編寫格式等內容。2.1 數據庫設計總體要求數據庫設計總體要求 數據庫是交通信息化建設的重要基礎。數據庫設計通常是作為應用系統(tǒng)開發(fā)的一部分進行的,但在應用

5、系統(tǒng)開發(fā)中數據庫設計具有特殊的重要性和相對獨立性,因此在本規(guī)范中專門進行規(guī)定。關于交通局應用系統(tǒng)的開發(fā)要求,請參見南京市交通局信息化軟件開發(fā)實施指南 。 開發(fā)者在系統(tǒng)設計階段,應采用合理的設計方法進行數據庫設計,建立數據庫的邏輯模型和物理模型,最終設計出高性能、易擴展、易維護、少冗余、高安全性、高可靠性、一致性和完整性好的數據庫。 在數據庫設計完成后,開發(fā)者應向交通局提交數據庫設計報告 。在軟件鑒定驗收時,開發(fā)者應向交通局提交完整的數據庫設計報告 、 數據字典和在開發(fā)過程中發(fā)生的變更記錄。2.2 數據庫對象命名的總體要求數據庫對象命名的總體要求 數據庫對象如表、存儲過程等的名稱一般根據對象的類

6、別、所在的系統(tǒng)代號和自定義代號來確定,但對各類對象的命名有其特定要求,具體的各種對象的命名要求請見本規(guī)范第四部分。 自定義代號根據中文名稱來確定,采用中文名稱首字的全拼,后接其它字的中文拼音首字母,如果有兩個對象根據此方法命名出現重復則對兩個對象都用中文拼音的完整拼音來表示。 數據庫對象不得使用數據庫的關鍵字作為名字。 在本規(guī)則的第四部分對 Oracle 數據庫的對象命名要求和程序編碼要求做了具體規(guī)定,如果需要使用具它數據庫如 SQL Server 等,其命名規(guī)則參照 Oracle 數據庫的命名規(guī)則來進行。本部分的要求具有強制性,開發(fā)者應嚴格遵守此要求。22.3 數據庫程序編碼的總體要求數據庫

7、程序編碼的總體要求 通過對數據庫程序編碼制定規(guī)則,來提高程序的可讀性。這其中主要包括變量命名規(guī)則、代碼排版規(guī)則、代碼注釋規(guī)則等。 本部分相對要求較寬,但開發(fā)者應參照這部分的要求制定自己的編碼規(guī)范,并嚴格遵守。本部分的代碼注釋規(guī)則是對開發(fā)者編寫注釋的基本要求,開發(fā)者自己可以提出對代碼注釋的更高要求,但不得低于本規(guī)則的要求。3. 數據庫設計規(guī)范數據庫設計規(guī)范3.1 數據庫設計要求數據庫設計要求為了保證數據庫設計的質量,提高數據庫的完整性、一致型、安全性、易擴展性、性能、減少數據的冗余,開發(fā)者應在需求分析階段對已有業(yè)務系統(tǒng)、本期開發(fā)的業(yè)務系統(tǒng)和以后開發(fā)的業(yè)務系統(tǒng)的數據作全面的調研,在此基礎上采用合理

8、的設計方法,分析業(yè)務系統(tǒng)所涉及的數據及數據之間的內在關系,利用如 Rational Rose、Together、ER-Win 等軟件作為數據庫輔助設計工具,進行反映數據庫中對象聯系和依賴的概念邏輯設計和物理設計。在進行數據庫設計時,除了本規(guī)范以外,還應遵守南京市交通局信息化軟件開發(fā)實施指南的要求。 在數據庫邏輯設計完成后,開發(fā)者應向交通局提交數據庫設計報告 ,在數據庫設計報告中必須包括完整的實體關系圖(E-R 圖),在得到交通局的評審認可后方可進行數據庫的物理設計。 在軟件鑒定驗收時,開發(fā)者應向交通局提交最終完稿的數據庫設計報告及其變更記錄,同時提交所交付軟件完整的數據字典 。3.2 數據庫概

9、念邏輯設計數據庫概念邏輯設計 整個概念邏輯設計包括需求調研、概念設計和邏輯設計三個部分,需要與業(yè)務系統(tǒng)的調研、分析、設計和開發(fā)結合起來進行。3.2.1 需求調研 在應用系統(tǒng)開發(fā)的需求調研階段,應對本期開發(fā)的業(yè)務系統(tǒng)的功能數據和以后開發(fā)的業(yè)務系統(tǒng)的數據進行調研。對于本期要求開發(fā)實現的應用系統(tǒng),應調研系統(tǒng)功能和所要處理的數據,同時要對交通局所有已有相關應用系統(tǒng)進行調研,分析這些系統(tǒng)是否已有新系統(tǒng)所需要的數據,該數據能否滿足新系統(tǒng)的所有需求,以決定是否可以直接訪問已有應用系統(tǒng)的數據庫中的數據,或采用復制等方法定期將已有系統(tǒng)的數據復制到本期開發(fā)的應用系統(tǒng)后臺數據庫,或直接用新系統(tǒng)來維護這些數據。33.

10、2.2 概念設計 概念設計應采用 E-R 模型進行,針對各個業(yè)務系統(tǒng)進行局部數據視圖設計,然后進行局部數據視圖集成,進行整體數據視圖的設計。在整體設計中找到最大的共享數據集,同時對這些共享數據進行語義上的描述(數據產生的業(yè)務系統(tǒng)、數據使用的業(yè)務系統(tǒng)等)。面向信息服務的數據建模采用 E-R 模型描述,但所有的數據模式按照中心主題建立。E-R 圖設計、畫法不是唯一的,但在繪 E-R 圖時應注意:結構要清晰、關聯要簡潔、實體個數要適中、屬性分配要合理、沒有低級冗余。3.2.3 局部設計根據各個業(yè)務系統(tǒng)的需求調研,設計出業(yè)務系統(tǒng)中的所有實體和關系,形成個局部的業(yè)務數據視圖。3.2.4 整體設汁將交通局

11、的各個業(yè)務系統(tǒng)對應的局部業(yè)務視圖進行兩兩集成,刪除冗余的實體和關系,記錄業(yè)務系統(tǒng)的共享數據模式,最終實現一個沒有冗余、一致的全局視圖模式。標記所有共享數據模式的相關業(yè)務系統(tǒng),以及數據的來源和數據的使用狀況。3.2.5 邏輯設計根據得到的全局概念模式進行關系邏輯設計,并作規(guī)范化分解,建立一系列的規(guī)范化分解,對于概念模式中的數據集進行數據表的設計。所有的公共共享數據集,業(yè)務數據要保證數據源唯一。同時對本期開發(fā)的業(yè)務系統(tǒng)中不能維護但需要使用的共享數據集,建立與老業(yè)務系統(tǒng)之間數據抽取的映射關系。面向信息服務的數據模式根據概念模式的來源和用途分別建立數據表或者跨數據庫視圖。能從業(yè)務數據平臺中直接獲取的數

12、據應設計跨數據庫視圖,需要從業(yè)務數據平臺層捕獲的歷史數據應設計成數據表。在邏輯設計階段,應考慮:為提高程序的執(zhí)行效率適當進行逆規(guī)范化,減少連接運算合理的屬性類型及長度創(chuàng)建視圖 可以建立面向用戶的外模式,提供一定的邏輯數據獨立性。3.3 數據庫物理設計數據庫物理設計將設計好的關系邏輯模式按照數據產生的來源建立不同的業(yè)務數據集(庫),然后建立一個公共共享數據集(庫),在這個數據庫中建立共享視圖,同時為各個數據集(庫)進行用戶設置和權限分配。物理數據庫的分布也存在多種模式:所有的物理數據庫存在于一臺數據庫服務器上,而且都由一個 DBMS 實例管理;4所有的物理數據庫存在于一臺數據庫服務器上,由多個

13、DBMS 實例進行管理;所有的物理數據庫分布在不同的數據庫服務器上,但所有的 DBMS 采用一種類型;因選擇的數據庫不同,在具體的物理設計上也會有所不同,但要保證數據庫的設計和管理符合規(guī)范,并保證制定的規(guī)范是可行的、可擴的,同時必須符合本規(guī)范的要求。在物理設計階段,應根據數據的訪問需求、頻度、性能要求等設計索引和簇集,包括單屬性索引、多屬性索引、簇集索引等。4. Oracle 數據庫命名規(guī)則數據庫命名規(guī)則4.1 Oracle 數據庫對象命名規(guī)則數據庫對象命名規(guī)則為避免混亂,不得使用 Oracle 的關鍵字作為數據庫對象的名字,Oracle 數據庫的關鍵字參見下表。除非在定義對象名稱時在該對象前

14、后加雙引號,Oracle 各類對象都以大寫的形式保存, 且在使用時不區(qū)分大小寫。表 4-1 Oracle 數據庫關鍵字表ACCESSAUDITCOMPRESSDESCADOBETWEENCONNECTDISTINCTALLBYCREATEDROPALTERCHARCURRENTELSEANDCHECKDATEEXLUSIVEANYCLUSTERDECIMALEXISTSASCOLUMNDEFAULTFILEASCCOMMENTDELETEFLOATFORLONGFCTFREESUCCESSFULFROMMAXEXTENTSPRIORSYNONYMGRANTMUNUSPRIVILEGESSYSD

15、ATEGROUPMODEPUBLICTABLEHAVINGMODIFYRAWTHENIDENTIFIEDNETWORKRENANETOIMMEDIATENOAUDITRESOURCETRIGGERINNOCOMPRESSREVOKEUIDINCREMENTNOTROWUNIONINDEXNOWALTROWIDUNIQUEINITIALNULLROWNUMUPDATEINSERTNUMBERROWSUSERINTEGEROFSELECTVALIDATEINTERSECTOFFLINESESSIONVALUESINTOONSETVARCHARISONLINESHAREVARCHAR2LEVELOP

16、TIONSIZEVIEWLIKEORSMALLINTWHENEVER5LOCKORDERSTARTWHEREWITH各類 Oracle 數據庫對象的具體命名應遵守下面的規(guī)則。4.1.1 數據庫名(Databases) 數據庫名稱由數據庫系統(tǒng)的首字母拼音縮寫加數據庫編號組成,在只有一個數據庫的情況下可不加數據庫編號。數據庫編號從 1 開始,并以增量 1 遞增。4.1.2 實例名(Instances)如果一個數據庫只有一個實例,則此實例與數據庫名稱相同,如使用 Oracle 和 Parallel Server 或 Oracle Real Application Clusters 產品,一個數據庫可

17、能有多個實例,則采用數據庫名加下劃線加實例首字母拼音來命名。在數據庫建設過程中,各單位應認真填寫數據庫、數據庫實例名及對應用途關系表,并交數據庫管理員妥善保存,此表格如此下。表 4-2 數據庫實例表地點數據庫數據庫實例名用途備注實例 1數據庫 1實例 2實例 1單位名數據庫 2實例 24.1.3 表空間 (Tablespaces) 表空間分為兩種,用來存儲系統(tǒng)生成的臨時數據的臨時表空間(Temporary Tablespaces)和儲存用戶數據的永久表空間(Permanent Tablespace)。臨時表空間命名為 TEMP_#,#表示編號(下同) ,如一個數據庫只有一個臨時表空間,則直接用

18、 TEMP 命名即可。永久表空間命名分為三段:TBS_SSSS_ZZZZ;TBS 表示這是一個表空間,SSSS 為系統(tǒng)代號,ZZZZ 為表空間類型,可以為 DATA 和 IDX,DATA 表示該表空間用來存儲表對象,IDX 表示該表空間用來存儲索引對象。系統(tǒng)代號應能反映該表空間中存儲對象在系統(tǒng)中的總體功能,用功能名的首字母拼音表示。應用系統(tǒng)中的表和索引應該分別儲存在兩個表空間中,以達到提高性能的目的。4.1.4 數據文件(Data files)數據庫文件的命名根據該文件所屬表空間的名字進行,通過在表空間的名字后加下劃線加編號實現,如_#.dbf 所示,數據庫文件的名字用.dbf 作為后綴。64

19、.1.5 日志文件(Redo log files)采用_REDO_#.log 來命名數據庫的日志文件。4.1.6 參數文件(Parameter files 和 Stored Parameter files)一個數據庫對應一個參數文件,其命名用 init_.ora 表示。Oracle 9i 推出了存儲參數文件的功能,如使用,其命名用 sp_.ora 表示。4.1.7 控制文件(Control files)采用_CRTL_#.ctl 來命名數據庫的控制文件;為數據庫名稱,#為控制文件序號,控制文件以.ctl 作為后綴。4.1.8 回滾段(Rollback segments)回滾段用 RBS_#表示

20、,如一個數據庫的回滾段為 RBS_01,RBS_02,在 Oracle 9i 版本數據庫中推出了 Automatic Undo Management 功能,來實現對回滾信息的自動管理,此功能具有簡化管理、提高效率的優(yōu)點,因此如果使 Oracle 9i 以上版本數據庫,則應使用此功能。4.1.9 表(Tables)表名為三段:Z_SSSS_XXXX,Z 為性質代號,SSSS 為系統(tǒng)代號(下同) 。XXXX 為自定義代號(下同) ,表的所有字母統(tǒng)一用大寫表示。(1) 、性質代號包括 B、C、T、A,其含義如下:B 指原始數據表C 編碼數據表T 工具數據表A 統(tǒng)計數據表、臨時數據表或中間數據表(2)

21、 、系統(tǒng)代號應能反映該表所在系統(tǒng)的功能。開發(fā)者應該在系統(tǒng)設計階段根據軟件功能模塊的劃分來確定系統(tǒng)代號,系統(tǒng)代號用能表達模塊功能的關鍵詞的首字母來表示,應控制在 2 到 4 個字母之內,為便于理解和記憶,一個系統(tǒng)不宜有過多的系統(tǒng)代號。(3) 、自定義代號根據中文名稱來確定,采用中文名稱首字的全拼,后接其他字的中文拼音首字母,如果有兩個表根據此方法命名出現重復則對兩個表都用中文拼音的完整拼音來表示:自定義代號的長度應保持在 12 位以內。4.1.10 字段(Fields)字段名稱字段名分為三段:F_ZZ_XXXX; F 表示這是一個字段,ZZ 表示字段的數據類7型代號,數據類型對應的數據類型代號如

22、下表:表 4-3 數據類型代號表代號數據類型CRCHAR,NCHARDTDATELGLONGRARAWLRLONG RAWNBNUMBERVCVARCHAR2,NVARCHAR2FLFLOATLBBLOG,CLOG,NCLOGBFBFILE另外,主表中的主鍵字段和附表中的外部鍵字段的類型和名稱要完全相同。對于日期類型的數據,如果只保存日期數據,采用 yyyy/mm/dd 的格式,如果只保存時間數據,采用 hh24:mi:ss 的格式,如果同時保存日期和時間格式,采用 yyyy/mm/dd hh24:mi:ss 的格式。4.1.11 索引(Indexes)表主鍵(Primary Key)對應的索

23、引命名為 IDX_PK。如果表的唯一性索引(Unique Index)只有一個,則命名為 IDX_UK,如果表有多個唯一性索引,則在最后再加上一個編號,命名為 IDX_UK#,此處的#為一個數。如果一個表有多個其他的非唯一性索引,則按順序為每一個索引加一個編號 IDX_#,此處的#為一個數。4.1.12 約束(Constraints)應對主鍵(Primary Key) 、唯一性約束(Unique)和引用約束(Referential Key)等約束進行命名,而不是使用系統(tǒng)自動生成的名字。主鍵約束命名為 PK_。如果一個表只有唯一性約束,則命名為 UK_。如果一個表有多個外鍵,則在名稱的最后再加一

24、個編號,命名為 UK_#。如果一個表只有一個外鍵約束,則命名為 FK_。如果一個表有多個外鍵,則在名稱的最后再加一個編號,命名為 FK_#。4.1.13 視圖(Views)視圖名分為三段:V_SSSS_XXXX。V 表示此對象為視圖。84.1.14 同義詞(Synonyms)同義詞名分為三段:SYN_SSSS_XXXX。SYN 表示此對象為同義詞。4.1.15 序列號(Sequences)序列號名分為三段:SQ_SSSS_XXXX。SQ 表示此對象為序列號。4.1.16 存儲過程(Stored Procedures)存儲過程名分為三段:PRO_SSSS_XXXX。PRO 表示此對象為存儲過程。

25、4.1.17 函數(Functions) 函數分為三段:FUN_SSSS_XXXX。FUN 表示此對象為函數。4.1.18 程序包(Packages)和程序包體(Packages Bodies)程序包和相應程序包體的名字相同,分為三段:PAK_SSSS_XXXX。PAK 表示此對象為函數。包內過程和函數的命名規(guī)則與獨立的存儲過程和函數的命名相同,具體過程參見4.1.16 和 4.1.17。4.1.19 觸發(fā)器(Triggers)觸發(fā)器分為三段:TR_A|BI|U|D_。TR 表示這是一個觸發(fā)器,后面跟著表示觸發(fā)器操作條件的英文字母,A|BI|U|D(A|B 表示 after|before,I|

26、U|D 表示insert|update|delete 無該項操作則去掉相應的字母) ,后面再跟使用它的表名或視圖名。4.1.20 角色(Roles)數據庫角色分為兩段:ROL_XXXX。ROL 表示這是一個數據庫角色。4.1.21 用戶(Users)數據庫用戶分為兩段:USR_XXXX。USR 表示這是一個數據庫用戶。94.2 SQL、PL/SQL 源代碼編寫約定源代碼編寫約定4.2.1 變量命名規(guī)則為了提高 PL/SQL 程序的可讀性,需要對 PL/SQL 程序的變量制定適當的命名規(guī)則。變量應該用中文拼音首字母來表示,應防止變量名與 Oracle 表的字段重名,因為如果重名,Oracle 會

27、將此名字解釋為字段名。為了能夠快速區(qū)分變量的作用域和類型,應對變量加上統(tǒng)一的前綴和后綴。在基本類型局部變量名家前綴 v_在全局變量名前加前綴 g_在常量名前加前綴 c_在過程和函數的參數函數變量前加 p_,對 IN OUT 類型和 OUT 類型的參數變量要分別加后綴 io 和 o。缺省沒有前綴的參數變量都為 IN 類型。在 record collection 類型變量前加前綴 r_在%rowtype 類型變量前加前綴 rt_在 PL/SQL 類型變量前加前綴 t_在 table type 類型變量前加前綴 tt_在游標 cursor 類型變量前加前綴 cur_在例外 exception 類型變

28、量前加前綴 e_4.2.2 代碼排版規(guī)則制定代碼排版規(guī)則的目的是使用戶更方便地理解程序的邏輯結構??s進縮進設置為 4 個空格,Tab 設置為 4 個空格。通過縮進要把程序的條件、循環(huán)的邏輯結構顯示出來。使用大小寫所有的 SQL 和 PL/SQL 關鍵字用大小寫,而所有的數據庫表、字段、變量用小寫。4.2.3 代碼注釋規(guī)則在 PL/SQL 程序段中的注釋需要能說明問題,應該比代碼易讀;注釋的長度不能太長,60 字符以內為宜;當代碼發(fā)生改變時,注釋應該及時更新。每個數據對象包括表、存儲過程、函數和字段都必須作相關的注釋說明。如果數據對象是函數或存儲過程,還必須說明作者、功能和創(chuàng)立時間(修改時間)等

29、信息。格式如下:注釋位置對 Oracle 數據庫對象的整體注釋應置于對象定義語法的下一行,AS 關鍵字之后(置于頭部時,經 Oracle 編譯后會丟失,不能保存到數據庫中) ;同理,其他注釋也要置于代碼內部。PL/SQL 程序文件頭部注釋文件頭部注釋用于表明該文件的信息及版權格式,其格式如下:10/Copyright/文件名:/功能描述:/改版履歷:/ 姓名 時間 描述/過程、函數、包注釋對過程、函數、包必須加注釋描述其主要功能,注釋長度不超過 60 字符為宜,超過則作換行處理。其他需要加注釋的地方: 每一個分支出,如:if else 處; 曾經出現 Bug 的地方(加注 Bug 號) ;聲明變量時; 定義常量時,解釋常量的意義; 其他比較難以理解的地方。4.2.4 其他要求Oracle8i 以上版本是對象關系型數據庫管理系統(tǒng)(RDBMS) ,和傳統(tǒng)的關系型數據庫相比,增加了面向對象的功能。但為了提高數據庫的兼容性,在進行數據庫設計時應避免使用這些面向對象的功能。能夠使用 SQL 語句實現功能時,不使用 PL/SQL。刪除所有無用的變量。如果要用變量來表示一個字段和多個字段,盡量使用%TYPE 和%ROWTYP

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論