• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      關(guān)系型數(shù)據(jù)庫邏輯設(shè)計規(guī)范研究

      2018-03-04 04:54:32陳英達(dá)黃巨濤林強唐亮亮
      微型電腦應(yīng)用 2018年6期
      關(guān)鍵詞:邏輯設(shè)計字段完整性

      陳英達(dá), 黃巨濤, 林強, 唐亮亮

      (廣東電網(wǎng)有限責(zé)任公司信息中心,廣東 廣州 510080)

      0 引言

      在信息系統(tǒng)開發(fā)中普遍采用Oracle、MySQL等關(guān)系型數(shù)據(jù)庫系統(tǒng),而數(shù)據(jù)庫的邏輯設(shè)計好壞影響著數(shù)據(jù)庫及其應(yīng)用系統(tǒng)的整體性能,決定了數(shù)據(jù)的完整性、準(zhǔn)確性和一致性能否得到保證。如果數(shù)據(jù)庫邏輯設(shè)計不合理,那么數(shù)據(jù)庫的調(diào)優(yōu)對于數(shù)據(jù)庫的性能提升將十分有限。因此我們對數(shù)據(jù)庫的邏輯設(shè)計規(guī)范開展研究,通過對數(shù)據(jù)庫邏輯設(shè)計提出相應(yīng)的要求與建議。遵照本文所制定的數(shù)據(jù)庫邏輯設(shè)計規(guī)范可以減少數(shù)據(jù)庫中數(shù)據(jù)冗余、提高數(shù)據(jù)庫存儲效率[1]。對數(shù)據(jù)定義恰當(dāng)?shù)募s束條件,并能提升SQL語句執(zhí)行效率,對信息系統(tǒng)的長期穩(wěn)定運行具有重要的價值。

      1 數(shù)據(jù)完整性設(shè)計規(guī)范

      數(shù)據(jù)完整性需要使用不同的完整性約束條件來制約,數(shù)據(jù)設(shè)計的完整性約束主要包含以下四方面:域的完整性、實體完整性、參照完整性以及用戶定義完整性,其含義分別如下。

      (1) 域的完整性:數(shù)據(jù)庫表中的字段必須滿足某種特定的數(shù)據(jù)類型或約束。約束包括取值范圍、精度等規(guī)定;

      (2) 實體完整性:表中行主鍵的約束;

      (3) 參照完整性:屬于表間規(guī)則,用于設(shè)計表間數(shù)據(jù)的完整性;

      (4) 用戶定義完整性:對數(shù)據(jù)表中字段屬性的約束。

      數(shù)據(jù)完整性設(shè)計規(guī)范有如下要求。

      (1) 每張表必須定義主鍵;

      (2) 某一字段如果為另一表的主鍵,則該字段應(yīng)定義為外鍵;

      (3) 表中字段的類型定義必須與其實際含義和可能的值匹配;

      (4) 對表中的字段應(yīng)根據(jù)實際使用要求對字段屬性進行約束,如非空、唯一性約束等;

      (5) 如某一字段值需滿足特定要求,例如有特定的取值范圍等,則應(yīng)為其定義合適的約束條件。

      2 表邏輯設(shè)計規(guī)范

      依托大量的數(shù)據(jù)庫分析與設(shè)計實踐,總結(jié)出表邏輯設(shè)計的規(guī)范如下:

      (1) 應(yīng)采用第三范式(3NF)的設(shè)計方法,最大化保證數(shù)據(jù)的完整性[2]。

      (2) Oracle數(shù)據(jù)庫中,對周期性插入大批量數(shù)據(jù)操作的表或?qū)χ芷谛越⒌拇蟊?數(shù)據(jù)文件大于300M),INITIAL EXTENT應(yīng)設(shè)置成首次操作數(shù)據(jù)量的大小。具體如下。

      建議把INITIAL EXTENT設(shè)置成等于NEXT EXTENT的大??;

      表的EXTENTS次數(shù)盡量不超過200次;

      對于不發(fā)生變化的表:PCTUSED設(shè)置為90,PCTFREE設(shè)置為5;

      對于并非頻繁變化的表:PCTUSED設(shè)置為80,PCTFREE設(shè)置為5;

      對于經(jīng)常變化的表(插入與更新操作均較頻繁):PCTUSED設(shè)置為60,PCTFREE設(shè)置為20;

      對于僅插入操作頻繁但不經(jīng)常修改原有記錄的表:PCTUSED設(shè)置為80,PCTFREE設(shè)置為10;

      對于更新操作頻繁的表:PCTUSED設(shè)置為50,PCTFREE設(shè)置為40;

      對于DB_BLOCK_SIZE>=8192的OLTP(聯(lián)機事務(wù)處理過程)數(shù)據(jù)庫信息系統(tǒng),表及索引應(yīng)設(shè)定為INITRANS>=4,MAXTRANS>=10。

      (3) 對于頻繁使用的表(如字典表),在內(nèi)存空閑空間較多且數(shù)據(jù)量不大(如不超1000行)時,可采用緩存的方式保存,提升表的使用性能。

      (4) 創(chuàng)建表時需指定到相應(yīng)的數(shù)據(jù)表空間,確保不同數(shù)據(jù)存儲在不同的表空間。

      (5) 主鍵字段個數(shù)不能過多,盡量不修改主鍵值。

      (6) 在數(shù)據(jù)庫中實現(xiàn)數(shù)據(jù)完整性的校驗,避免在應(yīng)用中對數(shù)據(jù)進行完整性校驗。

      (7) 避免使用字符類型存放時間或日期類數(shù)據(jù)。

      (8) 避免使用字符類型存放數(shù)值類型的數(shù)據(jù)。

      (9) 避免表中字段數(shù)值類型直接使用INT型,應(yīng)明確寫明字段的取值范圍,如NUMBER(8)。

      (10) 應(yīng)盡量減少使用大字段,如BLOB,CLOB,LONG,TEXT與IMAGE等。

      3 表分區(qū)設(shè)計規(guī)范

      隨著表中數(shù)據(jù)量不斷增大,數(shù)據(jù)查詢的速度會逐漸降低,從而導(dǎo)致應(yīng)用系統(tǒng)的性能下降,此時應(yīng)考慮對表進行分區(qū)操作。

      表分區(qū)具有以下優(yōu)點。

      (1) 提升查詢性能:分區(qū)對象的查詢可以僅查詢與自己相關(guān)的分區(qū),不用再對整表進行查詢,從而提高查詢效率;

      (2) 減少故障損失:表的某個分區(qū)發(fā)生故障時不會影響該表其他分區(qū)的正常使用;

      (3) 維護效率高:只需對故障分區(qū)進行修復(fù),不用對整表修復(fù);

      表分區(qū)設(shè)計的規(guī)范與建議如下。

      (4) 應(yīng)對有需要的大表進行分區(qū),以提高性能和可維護性;

      (5) 當(dāng)表的大小接近或超過4GB時,可考慮對其進行分區(qū);

      (6) 對于OLTP系統(tǒng),當(dāng)表的數(shù)據(jù)量非常龐大時,應(yīng)考慮對表進行分區(qū),對于硬件性能較好的服務(wù)器,可適度放寬要求;

      (7) 對經(jīng)常執(zhí)行并行操作的表,建議對其進行分區(qū)。

      數(shù)據(jù)庫分區(qū)表的基本類型可分如下4類:

      范圍分區(qū)。范圍分區(qū)以表中分區(qū)字段的值的范圍來作為分區(qū)的劃分條件。不同的記錄將按照分區(qū)字段的值的不同,存放在對應(yīng)在的范圍分區(qū)中。該分區(qū)方式最適用于查詢條件中對分區(qū)鍵值進行區(qū)間查詢的場景;

      哈希分區(qū)。哈希分區(qū)將表中數(shù)據(jù)的存放位置依據(jù)分區(qū)字段的值進行特定的哈希計算后得到的結(jié)果來決定,該分區(qū)方式最適用于查詢條件中對分區(qū)字段采用等號進行比較的情況[3];

      列表分區(qū)。與范圍分區(qū)不同,列表分區(qū)必須指定分區(qū)字段的具體值而不僅僅是一個范圍。該分區(qū)的使用范圍比范圍分區(qū)和哈希分區(qū)??;

      組合分區(qū)。通過在不同字段上,使用“范圍分區(qū)”、 “哈希分區(qū)”以及“列表分區(qū)”的不同組合方式,實現(xiàn)組合分區(qū)。該分區(qū)適用于數(shù)據(jù)量大的表以及對性能具有特殊要求的情況。

      4 字段邏輯設(shè)計規(guī)范

      對表中字段的邏輯設(shè)計規(guī)范如下。

      (1) 應(yīng)對通信地址等特定的信息采用多個字段來表示,增加靈活性;

      (2) 應(yīng)使用角色實體來定義關(guān)聯(lián)屬性,方便創(chuàng)建時間關(guān)聯(lián)關(guān)系;

      (3) 數(shù)字類型與文本類型的字段長度應(yīng)保證充足;

      (4) 對刪除記錄的操作需用統(tǒng)一的特定字段標(biāo)注,而非直接刪除記錄;

      (5) 盡量避免使用大字段。

      5 索引設(shè)計規(guī)范

      在設(shè)計關(guān)系型系統(tǒng)的數(shù)據(jù)庫時,通常需要創(chuàng)建大量索引,良好的索引可以加快表與表之間的連接[4],通常能顯著減少復(fù)雜的SQL查詢所花費的時間,從而提升數(shù)據(jù)庫系統(tǒng)的性能[5]。

      創(chuàng)建索引應(yīng)遵循如下規(guī)范。

      (1) 不要索引大型字符字段;

      (2) 不要索引常用的小型表;

      (3) DML操作頻繁的表應(yīng)盡量少建索引;

      (4) 盡量不要將經(jīng)常修改的字段作為索引字段;

      (5) 選擇性高的字段適合建立索引;

      (6) 如某一字段或字段組合經(jīng)常在WHERE子句中使用并且滿足該字段或字段組合查詢條件的行數(shù)占表總行數(shù)的比例小于等于5%時,適合創(chuàng)建索引;

      (7) 應(yīng)在頻繁使用DISTINCT關(guān)鍵字查詢的字段上建立索引;

      (8) 進行表連接時,應(yīng)在連接字段上建立索引;

      (9) 復(fù)合索引創(chuàng)建時應(yīng)把最常用的字段放在第一位,而將不常用的字段排后;

      (10) 當(dāng)索引字段的記錄重復(fù)較多而DISTINCT記錄值又較少(一般少于30)時,應(yīng)建立位圖索引;

      (11) 盡量避免對OLTP系統(tǒng)的一張數(shù)據(jù)庫表創(chuàng)建過多索引,例如超過10個;

      (12) 由于位圖索引會影響DML操作的速度,因此OLTP系統(tǒng)中盡量不使用位圖索引;

      (13) 如查詢中需使用函數(shù),且滿足該查詢條件的記錄數(shù)比例很小,建議創(chuàng)建相應(yīng)的函數(shù)索引;

      創(chuàng)建索引完畢后,正確使用索引才能使其發(fā)揮作用,使用索引的規(guī)范如下。

      (1) 確認(rèn)是否已使用索引。應(yīng)盡量使用選擇率高的索引,避免全表掃描;

      (2) 確認(rèn)已使用的索引是否合理。錯誤的索引將導(dǎo)致性能的降低。索引的合理使用規(guī)范如下:

      應(yīng)避免在字段上進行類型轉(zhuǎn)換操作,否則無法使用該字段上的索引;

      避免對索引字段進行任何計算操作,對索引字段的計算操作會引起索引的失效;

      盡可能增加查詢的條件,限制全范圍的查詢

      當(dāng)索引效率很低時,應(yīng)避免使用索引;

      盡量避免模糊查詢,如必須使用模糊查詢時,盡量使用前端匹配的模糊查詢;

      WHERE條件中對索引字段盡量使用等值“=”進行比較查詢;

      盡量使用前導(dǎo)字段(復(fù)合索引的首字段)作為查詢條件;

      WHERE條件中對索引字段的查詢條件應(yīng)保證比較值的類型和字段類型一致。

      索引在創(chuàng)建和維護過程中需注意如下事項。

      (1) 創(chuàng)建索引時數(shù)據(jù)和索引應(yīng)放在不同的表空間;

      (2) 創(chuàng)建分區(qū)表索引時,盡量創(chuàng)建本地索引;

      (3) 對于經(jīng)常執(zhí)行刪除操作的表上的索引應(yīng)定期重建索引。由于索引重建時會阻塞DML操作,應(yīng)選擇在業(yè)務(wù)空閑時進行,盡量減少其對業(yè)務(wù)產(chǎn)生影響;

      (4) 對于鍵值頻繁更新的索引,也應(yīng)定期進行重建;

      (5) 刪除無用的索引,避免多余索引降低數(shù)據(jù)庫DML操作的執(zhí)行速度。

      6 總結(jié)

      關(guān)系型數(shù)據(jù)庫是信息應(yīng)用系統(tǒng)的核心組成部分,不合理的關(guān)系型數(shù)據(jù)庫設(shè)計會加大編程難度,引起操作繁瑣、性能降低、空間浪費等不良后果,甚至影響應(yīng)用系統(tǒng)的安全與穩(wěn)定,合理設(shè)計關(guān)系型數(shù)據(jù)庫十分有必要。而邏輯結(jié)構(gòu)的設(shè)計是關(guān)系型數(shù)據(jù)庫設(shè)計過程中的重要環(huán)節(jié),邏輯結(jié)構(gòu)設(shè)計的好壞直接決定并影響了數(shù)據(jù)的完整性、準(zhǔn)確性與一致性,因此在關(guān)系型數(shù)據(jù)庫邏輯設(shè)計過程中研究并提出相應(yīng)的規(guī)范具有重大價值。

      [1] 陶勇,丁維明. 數(shù)據(jù)庫中規(guī)范化與反規(guī)范化設(shè)計的比較與分析[J]. 計算機技術(shù)與發(fā)展, 2006,16(4):107-109.

      [2] 丁智斌,石浩磊. 關(guān)系數(shù)據(jù)庫設(shè)計與規(guī)范化[J]. 計算機與數(shù)字工程, 2005,33(2):114-116.

      [3] 韋平飛. 移動業(yè)務(wù)運營支撐系統(tǒng)數(shù)據(jù)庫性能優(yōu)化的研究[D]. 廣州:華南理工大學(xué), 2011.

      [4] 王力等. 基于免疫遺傳算法的關(guān)系型數(shù)據(jù)庫查詢優(yōu)化技術(shù)[J]. 微型電腦應(yīng)用, 2008,24(3):45-47.

      [5] 張若唯. 基于ORACLE的煉鋼—連鑄綜合優(yōu)化系統(tǒng)信息平臺的設(shè)計與實現(xiàn)[D]. 沈陽:東北大學(xué), 2012.

      猜你喜歡
      邏輯設(shè)計字段完整性
      圖書館中文圖書編目外包數(shù)據(jù)質(zhì)量控制分析
      稠油熱采水泥環(huán)完整性研究
      云南化工(2021年9期)2021-12-21 07:44:00
      火電機組公用電泵系統(tǒng)介紹及邏輯設(shè)計
      電子制作(2018年12期)2018-08-01 00:47:44
      莫斷音動聽 且惜意傳情——論音樂作品“完整性欣賞”的意義
      提高火力發(fā)電廠熱工保護可靠性方案與策略探討
      精子DNA完整性損傷的發(fā)生機制及診斷治療
      排課系統(tǒng)中數(shù)據(jù)庫表的設(shè)計
      科技資訊(2015年15期)2015-06-29 17:31:46
      CNMARC304字段和314字段責(zé)任附注方式解析
      可定制報表系統(tǒng)的設(shè)計與應(yīng)用
      無正題名文獻著錄方法評述
      宁陵县| 伽师县| 蚌埠市| 高邑县| 玛纳斯县| 夏津县| 三穗县| 三门县| 彝良县| 赣榆县| 芦山县| 井陉县| 蒙城县| 秭归县| 安西县| 五常市| 东明县| 凌云县| 东丽区| 顺昌县| 库车县| 博客| 临漳县| 普兰店市| 武义县| 杭州市| 安丘市| 上栗县| 兴和县| 阿尔山市| 陵川县| 扎兰屯市| 静海县| 利川市| 泉州市| 忻州市| 咸阳市| 桂平市| 胶州市| 霸州市| 大化|