• 
    

    
    

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

      將工程經(jīng)驗融入數(shù)據(jù)庫應(yīng)用技術(shù)教學(xué)

      2018-02-01 06:32:33
      中國現(xiàn)代教育裝備 2018年1期
      關(guān)鍵詞:主鍵字段字典

      朱 峰

      上海城建職業(yè)學(xué)院機電工程與信息學(xué)院 上海 200438

      數(shù)據(jù)庫應(yīng)用技術(shù)課程處于計算機及專業(yè)課程體系的核心位置,與C#語言、Web程序設(shè)計、PhP程序設(shè)計、軟件工程等課程有著承上啟下的關(guān)系,是一門理論與實踐緊密結(jié)合的課程。學(xué)習(xí)數(shù)據(jù)庫課程的目的是使學(xué)生理解數(shù)據(jù)庫的基本原理,能夠獨立或配合團隊進行數(shù)據(jù)庫系統(tǒng)的設(shè)計和開發(fā),從而掌握如何在實際的項目中使用數(shù)據(jù)庫技術(shù)[1]。

      目前,我校開設(shè)的數(shù)據(jù)庫應(yīng)用技術(shù)課程,雖然也是以實踐為主,但是數(shù)據(jù)庫知識在實踐中的設(shè)置往往比較零散、孤立,沒有形成一個完整的實踐體系。學(xué)生只是掌握了各章的知識點,但對數(shù)據(jù)庫系統(tǒng)的全局建立不起完整的概念,以至于學(xué)生往往學(xué)完了數(shù)據(jù)庫,仍然不知道數(shù)據(jù)庫是什么[2],以及如何在具體的項目中使用數(shù)據(jù)庫。此外,目前大部分?jǐn)?shù)據(jù)庫教學(xué)的知識點仍是以教學(xué)案例為主,這和實際的工程開發(fā)脫節(jié)。筆者經(jīng)過半年的全脫產(chǎn)企業(yè)實踐,跟蹤公司實際項目開發(fā),總結(jié)了如何在數(shù)據(jù)庫應(yīng)用技術(shù)的教學(xué)中將工程經(jīng)驗和教學(xué)經(jīng)驗相結(jié)合,以便既能完成教學(xué)目標(biāo)又能讓學(xué)生了解實際的項目開發(fā)經(jīng)驗,從而使學(xué)生更快地融入社會工作,筆者將工程經(jīng)驗應(yīng)用在教學(xué)中的具體措施總結(jié)如下。

      1 強調(diào)需求分析的重要性

      教學(xué)中非常容易忽視需求分析,因為教學(xué)所用的案例一般都不是很復(fù)雜,看起來好像沒有強調(diào)需求分析的必要性,但在實際的開發(fā)中如果不進行需求分析直接設(shè)計數(shù)據(jù)庫表,那么這個表極有可能就不是最優(yōu)化的。進行需求分析首先要了解系統(tǒng)中所要存儲的數(shù)據(jù)是哪些;其次要了解數(shù)據(jù)的存儲特點,如哪些數(shù)據(jù)是有實效性的,哪些是沒有實效性的,有實效性的數(shù)據(jù)可以采取過期清理或更改的方式,還有一些增長量很大但不是核心數(shù)據(jù)的數(shù)據(jù),則可采用分庫分表的方式進行存儲,并定義好數(shù)據(jù)的歸檔和清理規(guī)則,而教學(xué)案例受教學(xué)數(shù)據(jù)量比較小的限制并不會涉及這些問題。

      2 強調(diào)數(shù)據(jù)庫設(shè)計中ER圖及標(biāo)準(zhǔn)文檔的規(guī)范制作

      ER圖實際上是將需求分析的結(jié)果做出邏輯模型的展示方式,在數(shù)據(jù)庫設(shè)計的教學(xué)中經(jīng)常會詳細(xì)講解第一范式、第二范式、第三范式以及BC范式,當(dāng)然還有第四、第五范式,但在實際的開發(fā)經(jīng)驗中重點放到前三個范式上,這是目前大多數(shù)數(shù)據(jù)庫設(shè)計所要遵循的開發(fā)范式,這樣在教學(xué)中可以有的放矢,更有重點地進行練習(xí)。

      3 強調(diào)命名規(guī)范

      良好規(guī)范的命名可以使開發(fā)人員的程序更具有易讀性,如數(shù)據(jù)庫的庫名、表名及字段名使用大寫和小寫格式化對象名稱可以獲得良好的可讀性。例如:使用CustAddress而不是custaddress提高可讀性,同時對象的名字應(yīng)該能夠描述它所標(biāo)識的對象。表的名稱應(yīng)該能夠體現(xiàn)表中存儲的數(shù)據(jù)內(nèi)容,存儲過程名稱應(yīng)該能夠體現(xiàn)存儲過程的功能,還要盡可能少使用或不使用縮寫。

      4 字段類型的選擇有原則

      在實際項目開發(fā)中,字段類型的選擇與教材上的一致性原則有所偏差,往往一個字段是可以在多個數(shù)據(jù)類型中進行選擇,需要考慮對數(shù)據(jù)進行的操作(查詢條件、join條件及排序),同樣的數(shù)據(jù),字符處理比數(shù)字處理慢;在數(shù)據(jù)庫中,數(shù)據(jù)處理以頁為單位,列的長度越小,越利于性能提升。例如,教材中對“出生日期”這個字段默認(rèn)都是datetime類型,但在實際應(yīng)用中如果該字段不會頻繁作為查詢字段,則考慮將其定義成int類型,這樣存儲的字符長度比datetime小。

      5 建表時對外鍵約束不做要求 對主鍵使用業(yè)務(wù)主鍵不使用觸發(fā)器

      數(shù)據(jù)庫的定義中有邏輯主鍵和業(yè)務(wù)主鍵之分,一般在教材中都是采用邏輯主鍵作為主鍵進行講解,如學(xué)生表中的學(xué)號、訂單表中的訂單號、員工表中的員工號,而業(yè)務(wù)主鍵是用來標(biāo)識業(yè)務(wù)數(shù)據(jù),進行表與表之間的關(guān)聯(lián)。數(shù)據(jù)庫主鍵是為了優(yōu)化數(shù)據(jù)庫的存儲,一般實際應(yīng)用中數(shù)據(jù)庫表的主鍵是要順序增長的,這樣就不會進行數(shù)據(jù)的邏輯遷移,同時數(shù)據(jù)庫表的主鍵要盡可能地小,這樣對IO的性能很有好處,所以多數(shù)情況下工程項目中會將業(yè)務(wù)主鍵作為數(shù)據(jù)庫表的真正主鍵。

      在數(shù)據(jù)庫教學(xué)中,都會強調(diào)外鍵是保持?jǐn)?shù)據(jù)完整性的一個方式,但是在目前高并發(fā)的互聯(lián)網(wǎng)絡(luò)中,如果使用外鍵會帶來一些負(fù)面影響,首先數(shù)據(jù)寫入時,每導(dǎo)入一次數(shù)據(jù)都要去查詢是否符合外鍵約束,如果符合才會插入數(shù)據(jù),如果不符合就會被拒絕掉,那么這個檢查符合外鍵約束的過程是非常耗時的,所以一般建議不要使用外鍵約束,但是可以在外鍵上建立外鍵索引。

      使用觸發(fā)器的目的是減少一些程序上的邏輯處理,如在操作一張表的同時需要記錄日志,一般會使用觸發(fā)器的方式向一張表中插入數(shù)據(jù),但是如果大量使用觸發(fā)器保證業(yè)務(wù)邏輯,當(dāng)業(yè)務(wù)邏輯發(fā)生變更而其他開發(fā)人員不知觸發(fā)器的情況下會出現(xiàn)意想不到的數(shù)據(jù)異常,并使業(yè)務(wù)邏輯變得更為復(fù)雜,所以在實際情況下要盡量避免或者不用觸發(fā)器。

      6 添加數(shù)據(jù)時強調(diào)TXT,Excel,CSV類型數(shù)據(jù)導(dǎo)入,得到一些企業(yè)可公開的一線數(shù)據(jù)作為教學(xué)案例數(shù)據(jù)

      在數(shù)據(jù)庫的教學(xué)中,教學(xué)案例設(shè)計的數(shù)據(jù)量都不會很大,并且數(shù)據(jù)相對比較“完美”,筆者稱其為“教學(xué)數(shù)據(jù)”,但在實際的工程環(huán)境中,數(shù)據(jù)量一般很大,并且也不是一條一條手動添加,多是導(dǎo)入文件,這是非常實用的一個操作,所以考慮取得能夠公開的企業(yè)數(shù)據(jù)作為教學(xué)數(shù)據(jù),采用TXT,Excel,CSV等文件類型,大量練習(xí)導(dǎo)入導(dǎo)出操作,更加貼合實際的開發(fā)環(huán)境。

      7 不使用預(yù)留字段

      有一些開發(fā)人員喜歡使用預(yù)留字段,主要是為了增加程序的可擴展性,設(shè)想是如果在以后需要給該表增加一列,這樣就不用再修改數(shù)據(jù)庫的表結(jié)構(gòu),但在實際應(yīng)用中往往無法準(zhǔn)確知道預(yù)留字段的類型及存儲內(nèi)容,如果真的要增加一個字段還需要對數(shù)據(jù)庫字段名稱和類型進行修改,這樣后期維護預(yù)留字段所需要的成本和增加一個字段所需要的成本是相同的,所以預(yù)留字段是達不到增加程序的擴展性及減少數(shù)據(jù)庫維護性目的的,一般不使用預(yù)留字段。

      8 反范式化的問題

      反范式化是針對范式化而言的,前面的內(nèi)容提到了數(shù)據(jù)庫設(shè)計需要滿足第三范式,所謂的反范式化就是為了性能和讀取效率的考慮而適當(dāng)存在少量的數(shù)據(jù)冗余,適當(dāng)?shù)貙Φ谌妒降囊筮M行違反,反范式化就是使用空間來換取時間。以圖1為例,圖1中4張表的邏輯結(jié)構(gòu)完全符合數(shù)據(jù)庫設(shè)計的第三范式,那么在這種情況下想要查詢訂單信息,sql語句如圖3中的左邊部分,如果對該數(shù)據(jù)庫做一些反范式化的設(shè)計,增加幾個字段如圖2所示,則訂單查詢代碼就可以簡化為圖3中的右邊部分,由此可見,適度的反范式化可以在復(fù)雜查詢中減少表的關(guān)聯(lián)數(shù)量,增加數(shù)據(jù)的讀取效率。

      圖1 符合第三范式的數(shù)據(jù)庫設(shè)計

      圖2 反范式化的數(shù)據(jù)庫設(shè)計

      圖3 查詢語句對比

      9 加強數(shù)據(jù)優(yōu)化方面的內(nèi)容

      數(shù)據(jù)庫的優(yōu)化主要是指數(shù)據(jù)字典的維護、索引的維護以及適當(dāng)時對表進行水平拆分或者垂直拆分等操作。數(shù)據(jù)字典對數(shù)據(jù)庫的維護非常重要,如果不清楚數(shù)據(jù)庫中每一張表及每一張表的每一列的內(nèi)容是什么,那么以后對數(shù)據(jù)庫的升級和維護將會非常困難,如狀態(tài)字段中對應(yīng)值的含義是什么只能從數(shù)據(jù)字典中查詢,需求不斷變換那么表結(jié)構(gòu)也在不斷變化,還有數(shù)據(jù)庫的存儲有個量的瓶頸,當(dāng)數(shù)據(jù)達到瓶頸時就要對表中數(shù)據(jù)進行垂直或水平的拆分。

      如何維護數(shù)據(jù)字典?目前對數(shù)據(jù)字典的維護有很多種方式,第一種主要是利用第三方工具對數(shù)據(jù)字典進行維護,用第三方工具維護是針對不同的數(shù)據(jù)庫應(yīng)用系統(tǒng)來說的;第二種是利用數(shù)據(jù)庫本身的備注字段維護數(shù)據(jù)字典,以mySql為例:

      Create table customer(

      cust_idint AUTO_INCREMENT NOT NULL COMMENT '自增ID',

      cust_name VARCHAR(10) NOT NULL COMMENT '客戶姓名',

      PRIMARY KEY(cust_id)

      )COMMENT '客戶表'

      這樣用sql語句導(dǎo)出數(shù)據(jù)字典的時候就可以看到如圖4所示的數(shù)據(jù)字典。

      圖4 使用備注字段來生成數(shù)據(jù)字典

      如何維護索引?如何選擇合適的列作為索引呢?開發(fā)人員有一定的原則。第一,出現(xiàn)在where從句、Group by從句和order by從句中的列可以選擇作為索引;第二,可選擇性高的列要放到索引的前面;第三,一般太長的數(shù)據(jù)類型不要作為索引。但是要注意,在實際使用中索引并不是越多越好,過多的索引不但會降低寫效率而且會降低讀的效率,同時要定期維護索引碎片,還要注意在sql語句中不要使用強制索引關(guān)鍵字。

      10 結(jié)語

      筆者在一線教學(xué)中深深感覺到,只研究教材閉門造車是無法上好程序設(shè)計類課程的。教材一般強調(diào)規(guī)范的語法、嚴(yán)謹(jǐn)?shù)脑O(shè)計;但在實際應(yīng)用中,又有著各種各樣靈活多變的工程經(jīng)驗,所以一線教師需要經(jīng)常保持與公司的聯(lián)系,尤其是項目的跟進,這樣才能更好地將教學(xué)經(jīng)驗和工程經(jīng)驗相結(jié)合,縮短學(xué)生理論和實踐的磨合過程。

      [1] 王向輝,崔巍,徐俊麗.基于CDIO的數(shù)據(jù)庫課程教學(xué)改革方案研究[J].計算機教育,2011(5):38-41.

      [2] 徐嘉.數(shù)據(jù)庫技術(shù)與應(yīng)用課程的教學(xué)改革方案研究[J].科學(xué)時代,2012(16).

      猜你喜歡
      主鍵字段字典
      開心字典
      家教世界(2023年28期)2023-11-14 10:13:50
      開心字典
      家教世界(2023年25期)2023-10-09 02:11:56
      基于Go 實現(xiàn)的分布式主鍵系統(tǒng)研究
      圖書館中文圖書編目外包數(shù)據(jù)質(zhì)量控制分析
      基于外鍵的E-R圖繪制方法研究
      我是小字典
      正版字典
      讀者(2016年14期)2016-06-29 17:25:50
      CNMARC304字段和314字段責(zé)任附注方式解析
      無正題名文獻著錄方法評述
      關(guān)于CNMARC的3--字段改革的必要性與可行性研究
      监利县| 江西省| 墨玉县| 定兴县| 平湖市| 巴东县| 东丽区| 东海县| 闸北区| 吉安县| 上饶县| 黄山市| 东至县| 搜索| 类乌齐县| 聂荣县| 色达县| 水城县| 桂林市| 西林县| 垦利县| 望奎县| 探索| 马尔康县| 云浮市| 江山市| 涞源县| 越西县| 科技| 潼南县| 淄博市| 玛纳斯县| 比如县| 大丰市| 景泰县| 安阳市| 静海县| 邢台县| 新野县| 岚皋县| 东山县|