黎雪琴 程多浪 張思平 孫新杰
摘要:隨著社會(huì)的迅猛發(fā)展,我們的社會(huì)已經(jīng)走進(jìn)了信息化的時(shí)代,我們獲得信息的方式也越來(lái)越多,龐大的信息量使得我們?cè)诓殚喌臅r(shí)候十分艱難,而強(qiáng)大的計(jì)算機(jī)技術(shù)便給我們提供了一個(gè)很好的平臺(tái)。信息管理就是對(duì)一系列信息資源的管理,也是對(duì)信息采集、信息加工、信息運(yùn)輸及信息存儲(chǔ)過(guò)程的總稱(chēng)。一個(gè)好的信息管理系統(tǒng)在很大程度上能夠幫助企業(yè)提高工作效率和決策水平,同時(shí),一個(gè)好的信息管理系統(tǒng)的設(shè)計(jì)也會(huì)出現(xiàn)一些常見(jiàn)的問(wèn)題。本文主要介紹信息管理系統(tǒng)設(shè)計(jì)過(guò)程中的一些常見(jiàn)問(wèn)題以及對(duì)策研究。
關(guān)鍵詞:系統(tǒng)設(shè)計(jì);常見(jiàn)問(wèn)題;對(duì)策研究
中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)09-0005-02
1 目標(biāo)不明確,思路不清晰
一個(gè)系統(tǒng)在開(kāi)發(fā)之前,我們應(yīng)該需要先進(jìn)行充分的系統(tǒng)的調(diào)研,主要為了確定軟件的開(kāi)發(fā)目標(biāo),并確定系統(tǒng)開(kāi)發(fā)的可行性。如果系統(tǒng)開(kāi)發(fā)前對(duì)自己需要達(dá)到的目標(biāo)分析不夠明了,沒(méi)有基本的、全面的概念,完全憑借自己的想法進(jìn)行設(shè)計(jì)與開(kāi)發(fā),很可能做著做著就發(fā)現(xiàn)自己的設(shè)計(jì)根本達(dá)不到開(kāi)發(fā)目標(biāo),不能滿足預(yù)期的需求,系統(tǒng)的設(shè)計(jì)開(kāi)發(fā)被迫停止,宣告失敗。沒(méi)有確切的目標(biāo),設(shè)計(jì)的系統(tǒng)很可能就走向失敗,在這失敗的系統(tǒng)設(shè)計(jì)過(guò)程,浪費(fèi)了大量的人力、物力、財(cái)力的同時(shí),也浪費(fèi)了大量的時(shí)間。
因此在項(xiàng)目開(kāi)發(fā)前要明確自己的思路,主要體現(xiàn)如下:
1)首先,對(duì)系統(tǒng)需求進(jìn)行熟悉和掌握,確定自己需要實(shí)現(xiàn)什么功能。
2)其次,制定一張系統(tǒng)的進(jìn)度安排表,理清思路,查詢收集相關(guān)文獻(xiàn)資料并加以學(xué)習(xí),做出系統(tǒng)的需求分析。
3)然后,根據(jù)需求分析設(shè)計(jì)相應(yīng)的系統(tǒng)功能,并畫(huà)出相應(yīng)的功能模塊圖以及系統(tǒng)流程圖。
4)最后對(duì)各個(gè)部分進(jìn)行分析,思考、尋找相應(yīng)的解決方法。
所以,我們?cè)谙到y(tǒng)項(xiàng)目開(kāi)發(fā)的過(guò)程中,首要的就是要有一個(gè)明確的目標(biāo);其次,一個(gè)清晰的思路也是實(shí)現(xiàn)細(xì)節(jié)的關(guān)鍵部分;明確的目標(biāo)和清晰的思路能夠確保任務(wù)的按時(shí)完成。
2 數(shù)據(jù)庫(kù)設(shè)計(jì)問(wèn)題
數(shù)據(jù)庫(kù)設(shè)計(jì)是軟件系統(tǒng)設(shè)計(jì)的重要組成部分,在軟件設(shè)計(jì)中有著舉足輕重的位置。對(duì)于什么是數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)有著什么樣的功能,我想,大家也應(yīng)該清楚。對(duì)于數(shù)據(jù)庫(kù)來(lái)說(shuō),其本身就是一個(gè)倉(cāng)庫(kù),用于對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)和管理的倉(cāng)庫(kù)。目前,數(shù)據(jù)庫(kù)種類(lèi)較多,例如:Oracle數(shù)據(jù)庫(kù)、MS SQL Server數(shù)據(jù)庫(kù)、MYSQL數(shù)據(jù)庫(kù)等;就目前而言,我們?cè)趯W(xué)校使用最多的就是MYsoL數(shù)據(jù)庫(kù),它是一種常用的關(guān)系型數(shù)據(jù)庫(kù)。在數(shù)據(jù)庫(kù)的設(shè)計(jì)中,主要有以下問(wèn)題:
1)名稱(chēng)使用出錯(cuò)。
在數(shù)據(jù)庫(kù)的設(shè)計(jì)中,有時(shí)會(huì)遇到名稱(chēng)無(wú)效的情況,原因可能是名字太長(zhǎng)或者把關(guān)鍵字作為表名等,所以,我們?cè)谄鸨砻麜r(shí),需要做到:表名盡量要一目了然、簡(jiǎn)短、直觀、具有代表性,還有具有一致性;
其次,在MYsoL數(shù)據(jù)庫(kù)設(shè)計(jì)中,對(duì)于數(shù)據(jù)庫(kù)名來(lái)說(shuō),它是由26個(gè)區(qū)分大小寫(xiě)的英文字母以及0到9的自然數(shù)字,除此之外,加上上劃線和下劃線組成。
2)范式化設(shè)計(jì)造成過(guò)多的關(guān)聯(lián)表。
在對(duì)數(shù)據(jù)的查詢時(shí),通常都需要關(guān)聯(lián)很多表,在MYSQL中,最多關(guān)聯(lián)表的數(shù)量是61張,而在關(guān)聯(lián)表增加的同時(shí),數(shù)據(jù)庫(kù)的性能也會(huì)隨之下降。為了MYsoL的性能,需要盡量減少關(guān)聯(lián)的表,數(shù)量最好不要超過(guò)十個(gè)。為了提高數(shù)據(jù)庫(kù)的性能,我們可以在進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)把經(jīng)常使用的兩個(gè)小表和在一起,成為一個(gè)大表。
3)不規(guī)范的soL語(yǔ)句。
MYsoL數(shù)據(jù)庫(kù)中,不規(guī)范的soL編寫(xiě)可能會(huì)對(duì)服務(wù)器的反應(yīng)造成影響,比如上千個(gè)語(yǔ)句基本相同的語(yǔ)句容易使服務(wù)器登錄不上。在soL的編寫(xiě)中,如果有多層嵌套,那么,我們需要按照一定的語(yǔ)法來(lái)編寫(xiě),要建立統(tǒng)一的日志表對(duì)執(zhí)行過(guò)程中的日志、異常進(jìn)行記錄,如當(dāng)前出錯(cuò)的異常行號(hào)、異常消息、執(zhí)行時(shí)間等,方便問(wèn)題排查。因此,規(guī)范化我們的數(shù)據(jù)庫(kù)對(duì)于系統(tǒng)的開(kāi)發(fā)至關(guān)重要。
4)字段設(shè)計(jì)的一些問(wèn)題。
首先,為了使數(shù)據(jù)庫(kù)能夠獲得更大的靈活性,在對(duì)電話和地址等的字段設(shè)計(jì)上來(lái)說(shuō),我們應(yīng)該采用多個(gè)字段;然后,在對(duì)選擇數(shù)字類(lèi)型以及文本類(lèi)型進(jìn)行設(shè)計(jì)時(shí),應(yīng)該要盡量使字段的長(zhǎng)度更加充足,例如在設(shè)計(jì)用戶ID時(shí),如果ID的長(zhǎng)度為18位,那么,我們久可以把數(shù)據(jù)庫(kù)中這個(gè)ID字段的長(zhǎng)度設(shè)為20位。
5)鍵的選擇問(wèn)題
在設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí),通常我們使用系統(tǒng)自己生成的鍵來(lái)最為主鍵,并且把可選擇的鍵用作主鍵,可以使數(shù)據(jù)庫(kù)具有索引的能力。除主鍵外,我們?cè)诮㈡I時(shí),通常不會(huì)選擇那些用戶可以操作的字段來(lái)作為鍵,在設(shè)計(jì)鍵的時(shí)候,所有的鍵都必須唯一,并且還要避免使用復(fù)合鍵。
6)數(shù)據(jù)庫(kù)密碼忘記問(wèn)題
在數(shù)據(jù)庫(kù)設(shè)計(jì)中,可能有時(shí)我們會(huì)不小心把數(shù)據(jù)庫(kù)密碼忘記了,或者當(dāng)別人把數(shù)據(jù)庫(kù)轉(zhuǎn)手給我們時(shí),在剛開(kāi)始,我們很有可能會(huì)弄丟root密碼或者忘記密碼,這種情況我們是不能夠進(jìn)人數(shù)據(jù)庫(kù)的,也就不能進(jìn)行數(shù)據(jù)庫(kù)的一系列操作問(wèn)題。但不要擔(dān)心,在MYsoL數(shù)據(jù)庫(kù)的user表中有著用戶信息的相關(guān)記錄,這時(shí),我們可以考慮是否可以跳過(guò)權(quán)限。在啟動(dòng)MYsoL數(shù)據(jù)庫(kù)的過(guò)程中,采用如下方式可以不用輸入密碼進(jìn)入數(shù)據(jù)庫(kù),然后更改密碼即可:/usr/local/mysql/bin/mysqld_safe defaults-file=/etc/my.cnf -skip-grant-tables&.
7)數(shù)據(jù)庫(kù)中中文亂碼的問(wèn)題
對(duì)于中文亂碼來(lái)說(shuō),無(wú)非就是字符集的問(wèn)題。只要把相關(guān)字符集的位置設(shè)置為utf-8,一般來(lái)說(shuō)都能解決問(wèn)題。
8)MYSQL數(shù)據(jù)庫(kù)連接超時(shí)
MYsoL數(shù)據(jù)庫(kù)連接超時(shí)要考慮wait timeout以及interac-tive_ timeout這兩個(gè)參數(shù),這兩個(gè)參數(shù)設(shè)置必須相同,要保持一致才行,且默認(rèn)配置時(shí)間是28800,也就是八小時(shí),時(shí)間太長(zhǎng),不適用,連接長(zhǎng)時(shí)間不工作不僅占用我們的連接數(shù)還會(huì)消耗我們的系統(tǒng)資源。我們要在程序中做判斷,在操作系統(tǒng)結(jié)束時(shí)更改應(yīng)用程序邏輯從而關(guān)閉連接,再設(shè)置一個(gè)較為合理的time-out值。
3 系統(tǒng)代碼編程的相關(guān)問(wèn)題
1)頁(yè)面布局
舒適美觀的頁(yè)面讓人感到輕松,因此在項(xiàng)目開(kāi)始前要學(xué)會(huì)相關(guān)frameset、table、div等標(biāo)簽以及表單==form表單的使用,從而便于頁(yè)面結(jié)構(gòu)的布局。
2)相關(guān)代碼問(wèn)題
在定義變量時(shí),變量名不能一樣,否則會(huì)報(bào)錯(cuò);字符必須加單引號(hào),且char只能表示一個(gè)字符。
使用JDBC連接數(shù)據(jù)庫(kù)的相關(guān)問(wèn)題:在連接mysql數(shù)據(jù)庫(kù)的時(shí)候,首先,我們需要導(dǎo)人mysql-connector.jar架包;Json數(shù)據(jù)設(shè)計(jì),使用jackjson庫(kù)的Json格式創(chuàng)建數(shù)據(jù),并生成Json數(shù)據(jù);在實(shí)現(xiàn)接口時(shí),我們主要是通過(guò)使用service方法、doGet方法、do-Post方法等來(lái)對(duì)接口進(jìn)行實(shí)現(xiàn)。使用JDBC連接數(shù)據(jù)庫(kù)方法主要如下:
(1)首先,需要下載jar包,然后導(dǎo)入項(xiàng)目,并使用代碼Class.forName(”com.mysql.jdbc.Driver”);來(lái)進(jìn)行驅(qū)動(dòng)的加載。
(2)其次,需要使用代碼Connection conn= Driver Manager.getConnection(”j dbc: mysql://loc alhost: 3306/databasename”,”root”,”databasepassword”);來(lái)對(duì)數(shù)據(jù)庫(kù)進(jìn)行連接。
(3)再次,對(duì)語(yǔ)句執(zhí)行對(duì)象進(jìn)行獲?。篠tatement sttm=conn.createStatement0;
(4)其中,執(zhí)行對(duì)象執(zhí)行sql語(yǔ)句:sttm.execute(”INSERTinto users(id,name,age,sex) VALUES(5,'劉德華',42,'男')”);
(5)最后,必須要使用sttm.close(); conn. close0;進(jìn)行釋放連接。
3)對(duì)于基類(lèi)的東西來(lái)說(shuō),我們不要總是想著去修改,要避免修改其中的內(nèi)容
4)事務(wù)方面的問(wèn)題
在一些邏輯業(yè)務(wù)操作中,事務(wù)主要被用來(lái)保證數(shù)據(jù)庫(kù)數(shù)據(jù)的完整性,如轉(zhuǎn)賬這類(lèi)等;除此以外,我們還利用事務(wù)完成系統(tǒng)中的相關(guān)功能,例如數(shù)據(jù)的刪除、修改以及查詢。
5)JSP問(wèn)題
JSP就是Java中用來(lái)做動(dòng)態(tài)網(wǎng)頁(yè)的技術(shù)。其運(yùn)行原理是tomcat將JSP內(nèi)容讀取到servlet類(lèi)中,通過(guò)流響應(yīng)到瀏覽器。JSP不能直接拖到瀏覽器上面運(yùn)行,它只能在tomcat服務(wù)器上面使用。
6)ajax局部刷新技術(shù)問(wèn)題
ajax內(nèi)部都是以鍵值對(duì)的形式,并且我們需要設(shè)置其請(qǐng)求方式,請(qǐng)求的url,返回值的類(lèi)型,傳值,回調(diào)函數(shù)等。并且傳值到后臺(tái)的設(shè)置中也都是鍵值對(duì)。
7)cookie問(wèn)題
首先,創(chuàng)建cookie。用new的方式來(lái)創(chuàng)建一個(gè)Cookie對(duì)象,通過(guò)c.setMaxAge0來(lái)設(shè)置cookie保存的時(shí)間,單位為秒,創(chuàng)建設(shè)置好后要將cookie回寫(xiě)給瀏覽器(cookie寫(xiě)在哪里就回寫(xiě)在哪里)。其次,刪除cookie。先通過(guò)getCookies0獲取瀏覽器上所有的Cookie,然后遍歷cookie數(shù)組,再設(shè)置cookie保存的時(shí)間為0,從而刪除該cookie,最后回寫(xiě)給瀏覽器(必須回寫(xiě))。
8)JAVA設(shè)計(jì)中經(jīng)常出現(xiàn)的問(wèn)題
404路徑錯(cuò)誤、500代碼錯(cuò)誤、空指針異常、端口號(hào)被占用,亂碼等問(wèn)題。404路徑錯(cuò)誤主要檢查路徑問(wèn)題;500代碼錯(cuò)誤的話,可以根據(jù)打印出來(lái)的錯(cuò)誤提示進(jìn)行查找并更改;空指針異常要注意記錄的檢查、soL訪問(wèn)異常、參數(shù)的傳遞等;亂碼主要就是字符集的問(wèn)題,需要對(duì)字符集進(jìn)行轉(zhuǎn)換,我們一般是用utf-8;還有就是中文的亂碼,需要在操作代碼中加入resp.set-ContentType(”text/html;charset=utf-8”),反之也是字符集問(wèn)題。
4 測(cè)試與維護(hù)問(wèn)題
測(cè)試與維護(hù)是每個(gè)系統(tǒng)開(kāi)發(fā)的必經(jīng)過(guò)程,通過(guò)測(cè)試我們才能找出問(wèn)題便于系統(tǒng)的優(yōu)化,可以清楚地了解到系統(tǒng)是否達(dá)到預(yù)期的目標(biāo)。通過(guò)系統(tǒng)維護(hù)可以提高系統(tǒng)安全性以及運(yùn)行速度。
5 結(jié)論
需求分析在管理系統(tǒng)的設(shè)計(jì)中,是非常重要的,我們必須認(rèn)真對(duì)待,并明確自己的目標(biāo),理清自己的思路,一個(gè)好的數(shù)據(jù)庫(kù)設(shè)計(jì)要嚴(yán)格遵循設(shè)計(jì)規(guī)范,還要注意系統(tǒng)的測(cè)試與維護(hù)。還有就是,對(duì)于出現(xiàn)的問(wèn)題,我們應(yīng)該積極對(duì)待,要想辦法去解決,不能對(duì)問(wèn)題一味地逃避,要越挫越勇,只有把設(shè)計(jì)中出現(xiàn)的問(wèn)題錯(cuò)誤逐個(gè)擊破,才能把它們變成我們成功路上的基石,我們便能進(jìn)一步踏人成功的殿堂。
【通聯(lián)編輯:梁書(shū)】
作者簡(jiǎn)介:孫新杰,男,東北大學(xué)碩士研究生學(xué)歷,副教授,通訊作者,主要研究方向?yàn)閿?shù)據(jù)分析與處理,下一代互聯(lián)網(wǎng)中的關(guān)鍵問(wèn)題等,主持或參與科研項(xiàng)目8項(xiàng),發(fā)表論文10余篇。