国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

數(shù)據(jù)庫設(shè)計(jì)經(jīng)驗(yàn)談 一 (引)

2024-07-21 02:11:17
字體:
供稿:網(wǎng)友
菜鳥學(xué)堂:
 數(shù)據(jù)庫設(shè)計(jì)經(jīng)驗(yàn)談

作者: 水若寒

一個(gè)成功的管理系統(tǒng),是由:[50% 的業(yè)務(wù) + 50% 的軟件] 所組成,而 50% 的成功軟件又有 [25% 的數(shù)據(jù)庫 + 25% 的程序] 所組成,數(shù)據(jù)庫設(shè)計(jì)的好壞是一個(gè)關(guān)鍵。如果把企業(yè)的數(shù)據(jù)比做生命所必需的血液,那么數(shù)據(jù)庫的設(shè)計(jì)就是應(yīng)用中最重要的一部分。有關(guān)數(shù)據(jù)庫設(shè)計(jì)的材料汗牛充棟,大學(xué)學(xué)位課程里也有專門的講述。不過,就如我們反復(fù)強(qiáng)調(diào)的那樣,再好的老師也比不過經(jīng)驗(yàn)的教誨。
插入一些數(shù)據(jù)庫設(shè)計(jì)心得:

一、 設(shè)計(jì)思想
對(duì)許多程序員來說,設(shè)計(jì)一個(gè)數(shù)據(jù)庫應(yīng)用程序并不是很難的一件事。但是卻有許多數(shù)據(jù)庫應(yīng)用軟件得不到用戶的承認(rèn),其原因就是前期調(diào)研中,信息化設(shè)計(jì)單位和使用單位沒有得到相應(yīng)的思想溝通。
這里所說的溝通包括用戶對(duì)軟件功能的要求,時(shí)間效益的要求,軟件平臺(tái)的要求,價(jià)格的要求和軟件維護(hù)的要求。這五種要求構(gòu)成一個(gè)成功應(yīng)用的軟件的所有的調(diào)研項(xiàng)目。
但是這里最重要的就是對(duì)軟件功能的要求,不同的企業(yè)對(duì)軟件要求的是不一樣的。下面就軟件功能的需求要求做一個(gè)概要介紹:
1. 對(duì)象性:
這并不是軟件工程或者其他參考書中所描繪的軟件設(shè)計(jì)要求,但是這是一個(gè)必然的發(fā)展趨勢(shì)。我國軟件主要由財(cái)務(wù)軟件起步,財(cái)務(wù)業(yè)務(wù)流程是國家統(tǒng)一規(guī)定的,零售業(yè)的財(cái)務(wù)流程和建材業(yè)的財(cái)務(wù)業(yè)務(wù)流程并沒有多大不同,所以設(shè)計(jì)一種軟件就可以應(yīng)用不同的公司甚至是跨行業(yè)的公司也就是很正常的一件事,但是隨著我國市場經(jīng)濟(jì)的發(fā)展,用信息化技術(shù)來推動(dòng)企業(yè)發(fā)展成為一種切實(shí)有效的手段,許多不同行業(yè)的企業(yè)甚至同行業(yè)不同企業(yè)對(duì)信息化應(yīng)用軟件都有不同的要求。
在現(xiàn)代程序開發(fā)技術(shù)中,面對(duì)對(duì)象的技術(shù)是一個(gè)大的飛躍。但是許多開發(fā)的數(shù)據(jù)庫應(yīng)用軟件并沒由認(rèn)識(shí)到這一點(diǎn),所以開發(fā)的軟件就沒有市場。有一次,一個(gè)軟件推銷員到我公司來推銷軟件,是明煌軟件公司的人事管理軟件,公司人事部門領(lǐng)導(dǎo)很感興趣,隨口問了幾個(gè)問題,其中一個(gè)是有沒有臨時(shí)工的管理,一個(gè)是工資統(tǒng)計(jì)查詢能不能按照職工年齡,崗位,職稱,學(xué)歷分類統(tǒng)計(jì)查詢。結(jié)果這個(gè)軟件沒有這兩項(xiàng)功能,所以人事部門領(lǐng)導(dǎo)很客氣的拒絕了這個(gè)應(yīng)用軟件推銷員的關(guān)于演示軟件的請(qǐng)求。
作為一個(gè)開發(fā)人員來說,在一個(gè)數(shù)據(jù)庫應(yīng)用軟件加上以上兩個(gè)功能實(shí)在是很一般的工作,但是就是因?yàn)樵陂_發(fā)時(shí)沒有面對(duì)對(duì)象的考慮用戶的需求導(dǎo)致了這次軟件推銷的失敗。
所以對(duì)一個(gè)應(yīng)用軟件來說一開始就考慮軟件的對(duì)象性是一個(gè)成功的必要因素。
2.易用性
關(guān)于易用性的好壞不是由開發(fā)部門測定的,也不是由軟件評(píng)測機(jī)構(gòu)認(rèn)定的,而是由用戶認(rèn)定的。這是在工作交流中得到確認(rèn)的。
許多軟件考慮精細(xì),例如oracle數(shù)據(jù)庫為后臺(tái)數(shù)據(jù)庫的oracle公司的erp軟件解決方案,就沒有考慮到中國的國情,不但應(yīng)用界面分類復(fù)雜,而且在工作業(yè)務(wù)繁忙的時(shí)候,由于操作復(fù)雜往往還適得其反,到耽誤了工作,惹得領(lǐng)導(dǎo)埋怨,職工抱怨,反而不如不用。
在銷售系統(tǒng)軟件的調(diào)試過程中,我認(rèn)識(shí)了一個(gè)銷售公司的業(yè)務(wù)員,他跟我談了使用軟件后的許多感想。他說軟件本來是減輕工作量的,但是銷售系統(tǒng)有的應(yīng)用界面就很不友好,在向網(wǎng)絡(luò)數(shù)據(jù)庫中錄入數(shù)據(jù)時(shí),錄入數(shù)據(jù)很多,但是軟件總要求一會(huì)用鍵盤打字,一會(huì)用鼠標(biāo)點(diǎn)擊,這幾千項(xiàng)數(shù)據(jù)輸入時(shí),人一會(huì)用鍵盤一會(huì)用鼠標(biāo),活就像個(gè)鐘擺,累死了,干嗎不設(shè)計(jì)的都能用鍵盤控制呢。
事實(shí)上就是這樣,軟件在編制的過程中一定要多與業(yè)務(wù)人員交流,了解工作流程很重要,但是決不能忽視易用性在整個(gè)軟件性能中不可忽視的比例。
3. 擴(kuò)展性
作為現(xiàn)代軟件系統(tǒng)的一部分,可擴(kuò)展性越來越成為構(gòu)成軟件生命的主要功能之一。無論什么公司都希望買的軟件能夠適應(yīng)并滿足公司業(yè)務(wù)發(fā)展變化的需求,還希望能夠和其他購買的軟件一起構(gòu)成一個(gè)完整的企業(yè)軟件系統(tǒng)。
在軟件上來說,這有點(diǎn)困難,因?yàn)橐獫M足這項(xiàng)要求不但要預(yù)測企業(yè)發(fā)展方向,并且在軟件中預(yù)留出數(shù)據(jù)交換接口,在應(yīng)用文檔中要公布部分?jǐn)?shù)據(jù)庫構(gòu)成甚至?xí)r部分源碼。
但是從大的應(yīng)用方向上,我們?cè)O(shè)計(jì)的軟件必須達(dá)到這樣使用的功能。金蝶,用友這兩個(gè)大的軟件公司已經(jīng)實(shí)現(xiàn)的客戶開發(fā)工具包來實(shí)現(xiàn)客戶化二次開發(fā)的需求。
4. 維護(hù)功能
為了保證軟件正常工作,軟件維護(hù)是必要的。但是遠(yuǎn)水救不了近火,誰也不能保證軟件在故障的時(shí)候軟件維護(hù)人員能夠及時(shí)維護(hù),這就要求在軟件設(shè)計(jì)是要增加軟件維護(hù)功能。有了軟件維護(hù)功能,哪怕是簡單的備份功能,也能夠在突發(fā)事件中將數(shù)據(jù)損失降到最低點(diǎn)。

除了一般功能外,在軟件設(shè)計(jì)時(shí),我認(rèn)為上述四個(gè)功能是注意要添加和完善的,這樣我們作出來的數(shù)據(jù)庫應(yīng)用軟件才能夠具有更高的使用價(jià)值。

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

所以我歸納歷年來所走的彎路及體會(huì),并在網(wǎng)上找了些對(duì)數(shù)據(jù)庫設(shè)計(jì)頗有造詣的專業(yè)人士給大家傳授一些設(shè)計(jì)數(shù)據(jù)庫的技巧和經(jīng)驗(yàn)。精選了其中的 60 個(gè)最佳技巧,并把這些技巧編寫成了本文,為了方便索引其內(nèi)容劃分為 5 個(gè)部分:
第 1 部分 - 設(shè)計(jì)數(shù)據(jù)庫之前
這一部分羅列了 12 個(gè)基本技巧,包括命名規(guī)范和明確業(yè)務(wù)需求等。
第 2 部分 - 設(shè)計(jì)數(shù)據(jù)庫表
總共 24 個(gè)指南性技巧,涵蓋表內(nèi)字段設(shè)計(jì)以及應(yīng)該避免的常見問題等。
第 3 部分 - 選擇鍵
怎么選擇鍵呢?這里有 10 個(gè)技巧專門涉及系統(tǒng)生成的主鍵的正確用法,還有何時(shí)以及如何索引字段以獲得最佳性能等。
第 4 部分 - 保證數(shù)據(jù)完整性
討論如何保持?jǐn)?shù)據(jù)庫的清晰和健壯,如何把有害數(shù)據(jù)降低到最小程度。
第 5 部分 - 各種小技巧
不包括在以上 4 個(gè)部分中的其他技巧,五花八門,有了它們希望你的數(shù)據(jù)庫開發(fā)工作會(huì)更輕松一些。
第 1 部分 - 設(shè)計(jì)數(shù)據(jù)庫之前
1. 考察現(xiàn)有環(huán)境
在設(shè)計(jì)一個(gè)新數(shù)據(jù)庫時(shí),你不但應(yīng)該仔細(xì)研究業(yè)務(wù)需求而且還要考察現(xiàn)有的系統(tǒng)。大多數(shù)數(shù)據(jù)庫項(xiàng)目都不是從頭開始建立的;通常,機(jī)構(gòu)內(nèi)總會(huì)存在用來滿足特定需求的現(xiàn)有系統(tǒng)(可能沒有實(shí)現(xiàn)自動(dòng)計(jì)算)。顯然,現(xiàn)有系統(tǒng)并不完美,否則你就不必再建立新系統(tǒng)了。但是對(duì)舊系統(tǒng)的研究可以讓你發(fā)現(xiàn)一些可能會(huì)忽略的細(xì)微問題。一般來說,考察現(xiàn)有系統(tǒng)對(duì)你絕對(duì)有好處。
2. 定義標(biāo)準(zhǔn)的對(duì)象命名規(guī)范
一定要定義數(shù)據(jù)庫對(duì)象的命名規(guī)范。對(duì)數(shù)據(jù)庫表來說,從項(xiàng)目一開始就要確定表名是采用復(fù)數(shù)還是單數(shù)形式。此外還要給表的別名定義簡單規(guī)則(比方說,如果表名是一個(gè)單詞,別名就取單詞的前 4 個(gè)字母;如果表名是兩個(gè)單詞,就各取兩個(gè)單詞的前兩個(gè)字母組成 4 個(gè)字母長的別名;如果表的名字由 3 個(gè)單詞組成,你不妨從頭兩個(gè)單詞中各取一個(gè)然后從最后一個(gè)單詞中再取出兩個(gè)字母,結(jié)果還是組成 4 字母長的別名,其余依次類推)對(duì)工作用表來說,表名可以加上前綴 work_ 后面附上采用該表的應(yīng)用程序的名字。表內(nèi)的列[字段]要針對(duì)鍵采用一整套設(shè)計(jì)規(guī)則。比如,如果鍵是數(shù)字類型,你可以用 _n 作為后綴;如果是字符類型則可以采用 _c 后綴。對(duì)列[字段]名應(yīng)該采用標(biāo)準(zhǔn)的前綴和后綴。再如,假如你的表里有好多“money”字段,你不妨給每個(gè)列[字段]增加一個(gè) _m 后綴。還有,日期列[字段]最好以 d_ 作為名字打頭。
檢查表名、報(bào)表名和查詢名之間的命名規(guī)范。你可能會(huì)很快就被這些不同的數(shù)據(jù)庫要素的名稱搞糊涂了。假如你堅(jiān)持統(tǒng)一地命名這些數(shù)據(jù)庫的不同組成部分,至少你應(yīng)該在這些對(duì)象名字的開頭用 table、query 或者 report 等前綴加以區(qū)別。
如果采用了 microsoft access,你可以用 qry、rpt、tbl 和 mod 等符號(hào)來標(biāo)識(shí)對(duì)象(比如 tbl_employees)。我在和 sql server 打交道的時(shí)候還用過 tbl 來索引表,但我用 sp_company (現(xiàn)在用 sp_feft_)標(biāo)識(shí)存儲(chǔ)過程,因?yàn)樵谟械臅r(shí)候如果我發(fā)現(xiàn)了更好的處理辦法往往會(huì)保存好幾個(gè)拷貝。我在實(shí)現(xiàn) sql server 2000 時(shí)用 udf_ (或者類似的標(biāo)記)標(biāo)識(shí)我編寫的函數(shù)。
3. 工欲利其器
采用理想的數(shù)據(jù)庫設(shè)計(jì)工具,比如:sybase 公司的 powerdesign,她支持 pb、vb、delphe 等語言,通過 odbc 可以連接市面上流行的 30 多個(gè)數(shù)據(jù)庫,包括 dbase、foxpro、vfp、sql server 等,今后有機(jī)會(huì)我將著重介紹 powerdesign 的使用。
4. 獲取數(shù)據(jù)模式資源手冊(cè)
正在尋求示例模式的人可以閱讀《數(shù)據(jù)模式資源手冊(cè)》一書,該書由 len silverston、w. h. inmon 和 kent graziano 編寫,是一本值得擁有的最佳數(shù)據(jù)建模圖書。該書包括的章節(jié)涵蓋多種數(shù)據(jù)領(lǐng)域,比如人員、機(jī)構(gòu)和工作效能等。其他的你還可以參考:[1]薩師煊 王珊著 數(shù)據(jù)庫系統(tǒng)概論(第二版)高等教育出版社 1991、[2][美] steven m.bobrowski 著 oracle 7 與客戶/服務(wù)器計(jì)算技術(shù)從入門到精通 劉建元等譯 電子工業(yè)出版社,1996、[3]周中元 信息系統(tǒng)建模方法(下) 電子與信息化 1999年第3期,1999
5. 暢想未來,但不可忘了過去的教訓(xùn)
我發(fā)現(xiàn)詢問用戶如何看待未來需求變化非常有用。這樣做可以達(dá)到兩個(gè)目的:首先,你可以清楚地了解應(yīng)用設(shè)計(jì)在哪個(gè)地方應(yīng)該更具靈活性以及如何避免性能瓶頸;其次,你知道發(fā)生事先沒有確定的需求變更時(shí)用戶將和你一樣感到吃驚。
一定要記住過去的經(jīng)驗(yàn)教訓(xùn)!我們開發(fā)人員還應(yīng)該通過分享自己的體會(huì)和經(jīng)驗(yàn)互相幫助。即使用戶認(rèn)為他們?cè)僖膊恍枰裁粗С至耍覀円矐?yīng)該對(duì)他們進(jìn)行這方面的教育,我們都曾經(jīng)面臨過這樣的時(shí)刻“當(dāng)初要是這么做了該多好..”。
6. 在物理實(shí)踐之前進(jìn)行邏輯設(shè)計(jì)
在深入物理設(shè)計(jì)之前要先進(jìn)行邏輯設(shè)計(jì)。隨著大量的 case 工具不斷涌現(xiàn)出來,你的設(shè)計(jì)也可以達(dá)到相當(dāng)高的邏輯水準(zhǔn),你通常可以從整體上更好地了解數(shù)據(jù)庫設(shè)計(jì)所需要的方方面面。
7. 了解你的業(yè)務(wù)
在你百分百地確定系統(tǒng)從客戶角度滿足其需求之前不要在你的 er(實(shí)體關(guān)系)模式中加入哪怕一個(gè)數(shù)據(jù)表(怎么,你還沒有模式?那請(qǐng)你參看技巧 9)。了解你的企業(yè)業(yè)務(wù)可以在以后的開發(fā)階段節(jié)約大量的時(shí)間。一旦你明確了業(yè)務(wù)需求,你就可以自己做出許多決策了。
一旦你認(rèn)為你已經(jīng)明確了業(yè)務(wù)內(nèi)容,你最好同客戶進(jìn)行一次系統(tǒng)的交流。采用客戶的術(shù)語并且向他們解釋你所想到的和你所聽到的。同時(shí)還應(yīng)該用可能、將會(huì)和必須等詞匯表達(dá)出系統(tǒng)的關(guān)系基數(shù)。這樣你就可以讓你的客戶糾正你自己的理解然后做好下一步的 er 設(shè)計(jì)。
8. 創(chuàng)建數(shù)據(jù)字典和 er 圖表
一定要花點(diǎn)時(shí)間創(chuàng)建 er 圖表和數(shù)據(jù)字典。其中至少應(yīng)該包含每個(gè)字段的數(shù)據(jù)類型和在每個(gè)表內(nèi)的主外鍵。創(chuàng)建 er 圖表和數(shù)據(jù)字典確實(shí)有點(diǎn)費(fèi)時(shí)但對(duì)其他開發(fā)人員要了解整個(gè)設(shè)計(jì)卻是完全必要的。越早創(chuàng)建越能有助于避免今后面臨的可能混亂,從而可以讓任何了解數(shù)據(jù)庫的人都明確如何從數(shù)據(jù)庫中獲得數(shù)據(jù)。
有一份諸如 er 圖表等最新文檔其重要性如何強(qiáng)調(diào)都不過分,這對(duì)表明表之間關(guān)系很有用,而數(shù)據(jù)字典則說明了每個(gè)字段的用途以及任何可能存在的別名。對(duì) sql 表達(dá)式的文檔化來說這是完全必要的。
9. 創(chuàng)建模式
一張圖表勝過千言萬語:開發(fā)人員不僅要閱讀和實(shí)現(xiàn)它,而且還要用它來幫助自己和用戶對(duì)話。模式有助于提高協(xié)作效能,這樣在先期的數(shù)據(jù)庫設(shè)計(jì)中幾乎不可能出現(xiàn)大的問題。模式不必弄的很復(fù)雜;甚至可以簡單到手寫在一張紙上就可以了。只是要保證其上的邏輯關(guān)系今后能產(chǎn)生效益。
10. 從輸入輸出下手
在定義數(shù)據(jù)庫表和字段需求(輸入)時(shí),首先應(yīng)檢查現(xiàn)有的或者已經(jīng)設(shè)計(jì)出的報(bào)表、查詢和視圖(輸出)以決定為了支持這些輸出哪些是必要的表和字段。舉個(gè)簡單的例子:假如客戶需要一個(gè)報(bào)表按照郵政編碼排序、分段和求和,你要保證其中包括了單獨(dú)的郵政編碼字段而不要把郵政編碼糅進(jìn)地址字段里。
11. 報(bào)表技巧
要了解用戶通常是如何報(bào)告數(shù)據(jù)的:批處理還是在線提交報(bào)表?時(shí)間間隔是每天、每周、每月、每個(gè)季度還是每年?如果需要的話還可以考慮創(chuàng)建總結(jié)表。系統(tǒng)生成的主鍵在報(bào)表中很難管理。用戶在具有系統(tǒng)生成主鍵的表內(nèi)用副鍵進(jìn)行檢索往往會(huì)返回許多重復(fù)數(shù)據(jù)。這樣的檢索性能比較低而且容易引起混亂。
12. 理解客戶需求
看起來這應(yīng)該是顯而易見的事,但需求就是來自客戶(這里要從內(nèi)部和外部客戶的角度考慮)。不要依賴用戶寫下來的需求,真正的需求在客戶的腦袋里。你要讓客戶解釋其需求,而且隨著開發(fā)的繼續(xù),還要經(jīng)常詢問客戶保證其需求仍然在開發(fā)的目的之中。一個(gè)不變的真理是:“只有我看見了我才知道我想要的是什么”必然會(huì)導(dǎo)致大量的返工,因?yàn)閿?shù)據(jù)庫沒有達(dá)到客戶從來沒有寫下來的需求標(biāo)準(zhǔn)。而更糟的是你對(duì)他們需求的解釋只屬于你自己,而且可能是完全錯(cuò)誤的。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 邳州市| 富民县| 麻城市| 伊吾县| 天津市| 临漳县| 富阳市| 信宜市| 呼图壁县| 砀山县| 闽清县| 怀安县| 平阳县| 隆德县| 宜兴市| 宜兰市| 焦作市| 景东| 金山区| 远安县| 外汇| 石首市| 海阳市| 清徐县| 安远县| 寿阳县| 光泽县| 清流县| 高青县| 大竹县| 新郑市| 盐边县| 枣阳市| 九寨沟县| 新竹县| 靖宇县| 兴城市| 龙江县| 雅安市| 仙游县| 东山县|