999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Split()函數(shù)在數(shù)據(jù)庫設(shè)計(jì)應(yīng)用的研究

2021-06-16 09:35:52鄒同浩許學(xué)添
電子技術(shù)與軟件工程 2021年7期
關(guān)鍵詞:數(shù)據(jù)庫設(shè)計(jì)

鄒同浩 許學(xué)添

(廣東司法警官職業(yè)學(xué)院 廣東省廣州市 510520)

1 引言

在數(shù)據(jù)庫設(shè)計(jì)的過程中,經(jīng)常遇到對于同類事物需要的信息不一樣,為解決這一問題,需要針對不同的事物設(shè)計(jì)不同的數(shù)據(jù)表,數(shù)據(jù)表之間通過關(guān)鍵字段確定多種內(nèi)聯(lián)關(guān)系。如果把不同的事物放在同一張數(shù)據(jù)表中,不同的事物有不同的屬性,這樣創(chuàng)建一張表就很難進(jìn)行輸入和管理。例如,把人和物存在同一張表格內(nèi),人的屬性有“性別”,而物沒有這樣的屬性,存在同一張表中,很多字段對于彼此都是無效字段,增加了計(jì)算機(jī)處理負(fù)荷,從而暴露出數(shù)據(jù)庫設(shè)計(jì)的龐大和復(fù)雜性。本文指出用split()函數(shù)減少數(shù)據(jù)庫設(shè)計(jì)中的多表性和內(nèi)聯(lián)性,降低數(shù)據(jù)庫設(shè)計(jì)的復(fù)雜性 ,盡最大可能的把不同的信息存儲設(shè)計(jì)在同一張數(shù)據(jù)表中,減少表的數(shù)據(jù)表的數(shù)量和降低數(shù)據(jù)之間關(guān)聯(lián)性,提高數(shù)據(jù)的設(shè)計(jì)效率,降低數(shù)據(jù)庫的管理復(fù)雜度。

2 Split()函數(shù)分割作用及存儲

Split 函數(shù)是編程語言中使用于分割字符串一種函數(shù),它返回一個(gè)下標(biāo)從零開始的一維數(shù)組。它是在邏輯上對輸入數(shù)據(jù)進(jìn)行的分割,并不會在磁盤上將其切割成片存儲[1]。

Split 函數(shù)格式:Split(expression[,delimiter [,count[, ompare]]])。如果用“.”作為分隔的話,必須寫法,String.split("\."),這樣才能正確的分隔開,不能用String.split(".");如果用“|”作為分隔的話,寫法,String.split("\|"),這樣才能正確的分隔開;“.”和“|”都是轉(zhuǎn)義字符,必須得加"\";如果在一個(gè)字符串中有多個(gè)分隔符,可以用“|”作為連字符,比如,“acount=? and uu =? or n=?”,把三個(gè)都分隔出來,可以用String.split("and|or");

使用String.split 方法分隔字符串時(shí),分隔符如果用到一些特殊字符,可能會得不到我們預(yù)期的結(jié)果。

在數(shù)據(jù)庫設(shè)計(jì)的過程中,程序開發(fā)人員結(jié)合數(shù)據(jù)庫的設(shè)計(jì)和程序設(shè)計(jì)中Split()函數(shù)特點(diǎn),取長補(bǔ)短,優(yōu)化數(shù)據(jù)庫的設(shè)計(jì),目標(biāo)是降低數(shù)據(jù)庫設(shè)計(jì)的復(fù)雜性和內(nèi)聯(lián)性。

3 數(shù)據(jù)庫設(shè)計(jì)格式不一致

程序員在數(shù)據(jù)庫設(shè)計(jì)過程中,遇到同一個(gè)物品,數(shù)據(jù)表需要的字段不一樣,給數(shù)據(jù)表的建立增加非常多的統(tǒng)計(jì)表格。或者物品較多,但統(tǒng)計(jì)量有很少,增加數(shù)據(jù)表的設(shè)計(jì)數(shù)量,又顯得多余。還要通過設(shè)置主鍵和外鍵進(jìn)行關(guān)聯(lián),這樣會增加數(shù)據(jù)庫的復(fù)雜度。我們試想,能否把數(shù)據(jù)放在一張數(shù)據(jù)表中,一張數(shù)據(jù)表能把所有物品的數(shù)據(jù)信息存儲下來,共查詢和統(tǒng)計(jì)。數(shù)據(jù)庫設(shè)計(jì)時(shí)能否利用split()函數(shù)的字符分割功能解決這些問題。

在開發(fā)固定資產(chǎn)管理系統(tǒng)時(shí),物品種類幾千種,屬性參數(shù)各不相同,在建立數(shù)據(jù)庫時(shí)可能要幾千個(gè)數(shù)據(jù)表。例如,臺式計(jì)算機(jī)的參數(shù)有系統(tǒng)、CPU 型號、內(nèi)存、主板等;辦公椅的參數(shù)有類別、扶手類型、五星腳材質(zhì)等,如果把這樣的物品放在同一張數(shù)據(jù)表中,會出這樣的情況,如表1 所示。

表1:匯總表

表2:拆分表1

表3:拆分表2

表4:改造后的匯總表

表5:成績表

這樣設(shè)計(jì)出來的數(shù)據(jù)表,冗余量太大,對于同一物品無效字段太多、數(shù)據(jù)表字段太多等一系列問題。查詢物品的信息相互關(guān)聯(lián)時(shí),是否能夠合并作為一個(gè)字段,需要統(tǒng)計(jì)的公用信息可以單列字段,這樣就減少數(shù)據(jù)表的設(shè)計(jì)復(fù)雜性。假設(shè)對不同類物品單列一張數(shù)據(jù)表如表2、表3 所示。

這樣精煉了數(shù)據(jù)表中的字段項(xiàng),但增加了數(shù)據(jù)表的數(shù)量。后期會增加程序設(shè)計(jì)的復(fù)雜性。因此,我們考慮,根據(jù)用戶的需求,比如一鍵查詢出某個(gè)物品的所有信息,而不是單個(gè)信息。或者說,查詢某個(gè)物品的單個(gè)信息和整個(gè)信息時(shí)等價(jià)的,或者沒有實(shí)在意義,是否能通過程序設(shè)計(jì),可以使數(shù)據(jù)庫的表的數(shù)量最少,還能滿足系統(tǒng)需求。

4 用Split()函數(shù)解決數(shù)據(jù)表格式不一致問題

例如,在固定資產(chǎn)管理系統(tǒng)中,注重的是產(chǎn)品的存在及價(jià)值,對于具體參數(shù)不是統(tǒng)計(jì)重點(diǎn),我們是否考慮不同的物品的參數(shù)僅僅用一個(gè)字段表示,如“參數(shù)說明”。數(shù)據(jù)表可以設(shè)計(jì)如表4 所示。

這樣的數(shù)據(jù)庫設(shè)計(jì)方法應(yīng)用必須滿足兩個(gè)條件。第一該物品字段統(tǒng)計(jì)字段次不齊或無統(tǒng)計(jì)價(jià)值;第二可以大大降低數(shù)據(jù)庫中數(shù)據(jù)表的數(shù)量。數(shù)據(jù)表這樣的設(shè)計(jì),會出現(xiàn)統(tǒng)計(jì)量統(tǒng)計(jì)的問題,我們通過程序設(shè)計(jì)中Split()函數(shù)可以解覺數(shù)據(jù)表數(shù)量與程序設(shè)計(jì)的問題[2]。例如通過split()函數(shù)可以吧表4 中的“參數(shù)說明”的字段信息通過split()函數(shù)進(jìn)行拆分提取,分別以“:”和“;”進(jìn)行拆分。當(dāng)然我們可以根據(jù)統(tǒng)計(jì)需要以不同的符號代表進(jìn)行多次拆分。利用String 類中的split 函數(shù)進(jìn)行分割,同時(shí)將結(jié)果存放在一個(gè)二維數(shù)組中。問題在于怎么利用兩次split 分割后放在數(shù)組的兩個(gè)維度中,過程不再撰述。數(shù)組為引用型,需要申請內(nèi)存。

通過程序設(shè)計(jì)中split()函數(shù)字符串的分割功能,可以吧數(shù)據(jù)表的存儲有固定格式的字段內(nèi)容提取后根據(jù)需要進(jìn)行拆分,提取需要的內(nèi)容。完成統(tǒng)計(jì)功能。對于學(xué)生成績管理系統(tǒng),這種功能更能體現(xiàn)出來。一張數(shù)據(jù)表就可以解決。例如表5 如下,統(tǒng)計(jì)一下“張三”的總成績。

以上兩種通過程序設(shè)計(jì)中Split()的函數(shù)來解決數(shù)據(jù)庫的設(shè)計(jì)問題及統(tǒng)計(jì)量的問題,從而大大的降低了數(shù)據(jù)庫設(shè)計(jì)的復(fù)雜度,尤其在數(shù)據(jù)表的數(shù)量上會大大的減少,減少了數(shù)據(jù)庫的維護(hù)性[3]。僅僅在錄入數(shù)據(jù)庫時(shí),程序上一定要做格式上的驗(yàn)證,防止輸入不能被split()函數(shù)識別的問題,這點(diǎn)在程序設(shè)計(jì)之初,必須要考慮的。

5 split()函數(shù)特殊應(yīng)用

Split()函數(shù)在數(shù)據(jù)庫設(shè)計(jì)查詢過程中,顯示其優(yōu)越性。例如,全校不同專業(yè)的學(xué)生可以放在同一張表格內(nèi),三個(gè)字段:學(xué)號、姓名、成績,在成績這個(gè)字段中,可以把學(xué)生各科成績放在同一個(gè)字段中,比如:語文:90;數(shù)學(xué):96;英語:98;通過冒號和分號區(qū)別門課和成績。如果學(xué)生查詢總的成績時(shí),直接查詢,如果學(xué)生查詢“語文”成績時(shí),調(diào)用Split()函數(shù)直接單獨(dú)顯示語文成績。如統(tǒng)計(jì)總成績、平均成績等都可以通過Split()函數(shù)進(jìn)行實(shí)現(xiàn)。雖然用Split()函數(shù)可以提高數(shù)據(jù)的設(shè)計(jì)效率,但其的開銷比較大,因此Split()函數(shù)比較適合較小規(guī)模的數(shù)據(jù)庫設(shè)計(jì),而且對服務(wù)器的要求比較高。

6 應(yīng)用split()函數(shù)性能分析

Split()函數(shù)的在數(shù)據(jù)庫設(shè)計(jì)的應(yīng)用必然會增加程序的計(jì)算效率。程序中用到for 循環(huán)嵌套,時(shí)間復(fù)雜度達(dá)到O(n2)。文中提到split()函數(shù)在計(jì)算機(jī)上僅僅是邏輯分割,并不會在磁盤上將其切割成片存儲這樣對服務(wù)器的性能要求就會提高,增加了服務(wù)器的符合。如果通過增加數(shù)據(jù)表的方法來開發(fā),程序的復(fù)雜度可以達(dá)到O(n),但數(shù)據(jù)庫的維護(hù)復(fù)雜度就會增加[4]。

在字符串截取字符串應(yīng)用方面,Split()函數(shù)沒有其優(yōu)越性,StringTokenizer 在截取字符串中效率最高,不論數(shù)據(jù)量大小,幾乎持平。SubString 則要次之,數(shù)據(jù)量增加耗時(shí)也要隨之增加。Split()函數(shù)則是表現(xiàn)一般,究其原因,split 的實(shí)現(xiàn)方式是采用正則表達(dá)式實(shí)現(xiàn),所以其性能會比較低。

在字符串拆分應(yīng)用方面,以看出Split()方法比StringTokenizer類的拆分方法更加簡潔和方便后續(xù)處理。Split()方法可以匹配正則表達(dá)式,而StringTokenizer 則不行。且大多數(shù)時(shí)候拆分得到的子字符串是要進(jìn)行操作的,而StringTokenizer 類操作子字符串是靠遍歷進(jìn)行的,比較繁瑣,相比之下運(yùn)用數(shù)組進(jìn)行下標(biāo)操作就方便多了,事實(shí)上官方也不推薦用StringTokenizer 類生成對象的方法來進(jìn)行字符串的拆分操作了。

7 結(jié)束語

根據(jù)用戶規(guī)模和實(shí)際需求,尋求數(shù)據(jù)庫設(shè)計(jì)方法,重效率還是重管理,數(shù)據(jù)庫有不同的設(shè)計(jì)方法。同一張數(shù)據(jù)表中,關(guān)聯(lián)性強(qiáng)的屬性可以合并后存入同一字段中,需要統(tǒng)計(jì)字段可以單列出來建立字段,這樣只要折中找出一個(gè)最優(yōu)點(diǎn),就可以減少數(shù)據(jù)表內(nèi)冗余,減少數(shù)據(jù)庫中數(shù)據(jù)表的數(shù)量和數(shù)據(jù)表間的關(guān)聯(lián)程度。對于合并項(xiàng),可以利用Split()函數(shù)進(jìn)行分割提取,因Split()函數(shù)開銷較大,但目前隨著服務(wù)器性能的提高及云服務(wù)能力的急速提升,開銷已不是主要考慮的問題,降低數(shù)據(jù)庫設(shè)計(jì)的復(fù)雜度和內(nèi)聯(lián)性是我們考慮的重點(diǎn)問題。

猜你喜歡
數(shù)據(jù)庫設(shè)計(jì)
何為設(shè)計(jì)的守護(hù)之道?
《豐收的喜悅展示設(shè)計(jì)》
流行色(2020年1期)2020-04-28 11:16:38
瞞天過海——仿生設(shè)計(jì)萌到家
設(shè)計(jì)秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
數(shù)據(jù)庫
有種設(shè)計(jì)叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
主站蜘蛛池模板: 亚洲第一视频网| 久久久受www免费人成| 成人午夜久久| 久综合日韩| 欧美高清日韩| 亚亚洲乱码一二三四区| 亚洲第一成网站| 国产精品久久久久久久久久久久| 欧美成人手机在线视频| 国产精品主播| 99久久99视频| 欧美日韩中文国产va另类| 国产午夜精品一区二区三| 91小视频在线观看| 亚洲欧洲综合| 国产精品美女在线| 亚洲黄网在线| 国产1区2区在线观看| 91免费国产高清观看| 中文字幕在线一区二区在线| 国产手机在线ΑⅤ片无码观看| 91成人在线观看| 久久综合结合久久狠狠狠97色| 久久综合亚洲鲁鲁九月天| 久久免费看片| 国产av无码日韩av无码网站| 国产精品精品视频| 亚洲永久色| 欧洲极品无码一区二区三区| 国产精品亚洲а∨天堂免下载| lhav亚洲精品| 精品伊人久久久久7777人| 国产精品成人啪精品视频| 国产国语一级毛片| 日韩不卡免费视频| 国产丰满成熟女性性满足视频| 国产精品自在在线午夜| 成人一区在线| 免费视频在线2021入口| 欧美在线伊人| 久久国产精品电影| 免费中文字幕在在线不卡| 亚洲成人网在线播放| 亚洲精品麻豆| 亚洲视屏在线观看| 亚洲最新地址| 最新日本中文字幕| 欧美国产日韩在线播放| 91啪在线| 91麻豆精品国产91久久久久| 999精品视频在线| 激情综合婷婷丁香五月尤物| 国产尤物视频在线| av大片在线无码免费| 久久综合九色综合97婷婷| 亚洲精品无码抽插日韩| 日韩在线1| 国产精品久久久免费视频| 国产精品开放后亚洲| 欧美狠狠干| 日本成人不卡视频| 国产欧美一区二区三区视频在线观看| 97影院午夜在线观看视频| 日韩色图在线观看| 精品一区二区无码av| 啪啪啪亚洲无码| 国产区91| 亚洲欧美不卡| 日韩美毛片| 2021精品国产自在现线看| 永久免费精品视频| 国产精品视频999| 国产性生大片免费观看性欧美| 亚洲欧美国产视频| 免费人成又黄又爽的视频网站| 亚洲精品高清视频| 亚洲天堂首页| 国产杨幂丝袜av在线播放| 免费毛片全部不收费的| 久久精品嫩草研究院| 久久久精品久久久久三级| 欧美人与牲动交a欧美精品|