新聞中心
數(shù)據(jù)庫設(shè)計(jì)模式是指基于實(shí)踐中的數(shù)據(jù)庫設(shè)計(jì)經(jīng)驗(yàn)和原則,形成的一類通用化的、可復(fù)用的解決方案,用于解決數(shù)據(jù)庫中的重復(fù)性問題。數(shù)據(jù)庫設(shè)計(jì)模式應(yīng)用廣泛,幾乎所有的企業(yè)級(jí)系統(tǒng)都采用了數(shù)據(jù)庫設(shè)計(jì)模式來支持?jǐn)?shù)據(jù)管理,通過這些模式可以解決多種具有共性的數(shù)據(jù)庫設(shè)計(jì)問題。

本文將詳細(xì)介紹幾種常見的數(shù)據(jù)庫設(shè)計(jì)模式。
1. 范式設(shè)計(jì)模式
范式設(shè)計(jì)模式是一種常用的數(shù)據(jù)庫設(shè)計(jì)模式,其目的在于將數(shù)據(jù)表盡可能歸一化,減少數(shù)據(jù)重復(fù)。范式設(shè)計(jì)模式被分為6個(gè)級(jí)別,分別是之一范式、第二范式、第三范式、巴斯-科德范式、第五范式和第六范式。其中,第三范式最為常見,大多數(shù)的數(shù)據(jù)庫設(shè)計(jì)都應(yīng)該符合第三范式。
2. 明星設(shè)計(jì)模式
明星設(shè)計(jì)模式也是一種常用的數(shù)據(jù)庫設(shè)計(jì)模式,它主要應(yīng)用于數(shù)據(jù)倉庫系統(tǒng)。明星設(shè)計(jì)模式把數(shù)據(jù)表分為事實(shí)表和維度表兩個(gè)部分,通過這種方式來提高數(shù)據(jù)查詢速度。事實(shí)表包括了實(shí)際的業(yè)務(wù)數(shù)據(jù),而維度表則包括了這些數(shù)據(jù)所屬的維度。
3. 連鎖設(shè)計(jì)模式
連鎖設(shè)計(jì)模式是一種通過關(guān)聯(lián)表來管理多對(duì)多關(guān)系的數(shù)據(jù)庫設(shè)計(jì)模式。它通過引入一個(gè)中間表來實(shí)現(xiàn)多對(duì)多關(guān)系,這個(gè)中間表會(huì)包含多個(gè)表之間的關(guān)聯(lián)關(guān)系并負(fù)責(zé)管理它們之間的關(guān)聯(lián)關(guān)系。連鎖設(shè)計(jì)模式的優(yōu)點(diǎn)是能夠有效地描述多對(duì)多的關(guān)系,同時(shí)也解決了多對(duì)多的冗余問題。
4. 將軍設(shè)計(jì)模式
將軍設(shè)計(jì)模式是一種解決數(shù)據(jù)庫中大量的子查詢、嵌套查詢的問題的設(shè)計(jì)模式。它通過使用緩存來解決這個(gè)問題,并將數(shù)據(jù)表達(dá)式緩存在臨時(shí)表中。這種方式的好處是可以提高查詢性能并減少數(shù)據(jù)庫的開銷。
5. 抽象設(shè)計(jì)模式
抽象設(shè)計(jì)模式是一種在多個(gè)表享相同屬性的數(shù)據(jù)庫設(shè)計(jì)模式。它通過將共同的屬性集中在一個(gè)表中來優(yōu)化數(shù)據(jù)表的重復(fù)。這種方式的優(yōu)點(diǎn)是能夠提高查詢效率并減少數(shù)據(jù)冗余。
需要注意的是,不同的數(shù)據(jù)庫設(shè)計(jì)模式所適用的場景可能會(huì)不同。因此,在實(shí)際應(yīng)用中,需要根據(jù)具體的業(yè)務(wù)需求來選擇使用哪種設(shè)計(jì)模式。
數(shù)據(jù)庫設(shè)計(jì)模式是一種非常實(shí)用的工具,可以大大地提高數(shù)據(jù)庫設(shè)計(jì)的效率和可維護(hù)性。通過不斷地學(xué)習(xí)和實(shí)踐,我們可以更好地掌握各種設(shè)計(jì)模式,并在實(shí)際應(yīng)用中靈活運(yùn)用。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!
設(shè)計(jì)模式(三)創(chuàng)建型模式
根據(jù)菜鳥教程的目錄,我們首先來看看創(chuàng)建型模式。 創(chuàng)建型模式研究:
下面分別對(duì)創(chuàng)建型模式下的各種具體模式進(jìn)行講解。
先看例子: 工廠模式。
某功能的使用者只和接口打交道,不關(guān)心如何實(shí)現(xiàn)。這種情況下,肯定有一個(gè)接口類,使用者使用接口;功能提供者繼承并實(shí)現(xiàn)接口。這利用了C++的多態(tài)特性。
既然使用者只關(guān)心接口,那么沒有必要把子類直接給使用者,沒有必要讓使用者在代碼中直接new子類。如果這樣做,會(huì)把不必要的信息暴露給使用者,增加了信息的耦合。試想,如果使用者在很多地方都new了子類,那么如果這些地方需要修改的話,怎么改?只能一個(gè)一個(gè)地方改,改完還需要編譯,維護(hù)極其困難。
工廠模式是指,針對(duì)某一功能接口,我們要新建一個(gè)工廠類,此工廠類將接口子類名稱、接口子類的創(chuàng)建過程封裝起來,只返回一個(gè)接口指針給接口的使用者。接口的實(shí)現(xiàn)類對(duì)使用者完全透明,高度解耦。這樣可以方便地切換接口的具體實(shí)現(xiàn),而不影響上層功能使用者。拿 汽車 打比方,不管工廠生產(chǎn) 汽車 的流程是什么,只要是 汽車 ,它的駕駛方法(人機(jī)接口)都類似。
顯而易見,工廠模式在使用者和實(shí)現(xiàn)者之間增加了一個(gè)封裝層,這正印證了計(jì)算機(jī)行業(yè)中一句名言:
典型的例子是:Qt中的數(shù)據(jù)庫模塊就利用了工廠模式,封裝了數(shù)據(jù)庫的底層實(shí)現(xiàn)。在保持?jǐn)?shù)據(jù)庫用戶接口不變的情況下,通過更換數(shù)據(jù)庫驅(qū)動(dòng),可以實(shí)現(xiàn)數(shù)據(jù)庫類型無縫切換。
在需求趨于穩(wěn)定時(shí)使用,需求不穩(wěn)定時(shí),不要過度設(shè)計(jì),否則設(shè)計(jì)很容易被推翻,白費(fèi)力氣。
從設(shè)計(jì)模式的本質(zhì)來看,工廠模式:
先看例子: 抽象工廠模式。
由前面工廠模式可知,所有的“工廠”有一個(gè)共同點(diǎn):每個(gè)工廠都會(huì)提供創(chuàng)建對(duì)象的函數(shù)。 既然所有工廠都實(shí)現(xiàn)了同一類功能,那么我們可以為工廠抽象出一個(gè)公共接口(虛基類),此接口定義了創(chuàng)建工廠子類的功能。 這種場景是否似曾相識(shí)?是的,工廠和工廠的功能接口構(gòu)成了使用工廠模式的場景。即工廠本身也適用于工廠模式。 使用工廠模式來設(shè)計(jì)工廠,必然要寫一個(gè)生產(chǎn)工廠的工廠。 生產(chǎn)工廠的工廠,返回值是工廠的抽象接口類,所以這種設(shè)計(jì)模式叫“抽象工廠模式”。其實(shí),筆者覺得把這種設(shè)計(jì)模式叫做“工廠工廠模式”更容易理解。
如果只有一個(gè)工廠就不要使用抽象工廠模式了,只有在工廠很多時(shí),才使用抽象工廠模式。
需求不穩(wěn)定時(shí),不要過度設(shè)計(jì),一切都可能被推翻。 對(duì)于小的項(xiàng)目,不需要過度追求使用設(shè)計(jì)模式,架構(gòu)的代碼更好只占整個(gè)項(xiàng)目代碼的一小部分,否則就是主次顛倒,給自己找麻煩。 對(duì)于大的項(xiàng)目,在需求較穩(wěn)定的情況下,為了提高可維護(hù)性、擴(kuò)展性,可以考慮使用設(shè)計(jì)模式。 另外,抽象工廠模式有一定的理解難度,要考慮你設(shè)計(jì)的代碼,其他人是否能夠讀懂,簡單易懂也是需要考慮的方面。
所以,從設(shè)計(jì)模式的本質(zhì)來看,
先看例子: 單例模式。
上面的例子都是允許一個(gè)類被創(chuàng)建多次的。如果我們想要限制一個(gè)類只被創(chuàng)建一次,即只有一個(gè)全局可訪問的實(shí)例(和C語言中的全局變量一樣),例如應(yīng)用程序?qū)ο?,每個(gè)應(yīng)用程序都應(yīng)該只有一個(gè)應(yīng)用程序?qū)ο蟆4藭r(shí)應(yīng)該怎么編寫代碼呢?
答案還是封裝。把不想暴露出來的信息藏起來,把必須暴露的信息暴露出來。單例模式把類的構(gòu)造函數(shù)設(shè)置成private私有訪問權(quán)限,限制外部無法通過new來創(chuàng)建實(shí)例。只能通過特定的接口來獲取實(shí)例指針。需要提及的是,封裝時(shí)需要考慮多線程安全的問題。
當(dāng)一個(gè)類需要有多個(gè)實(shí)例存在時(shí),不使用單例模式。
從設(shè)計(jì)模式的本質(zhì)上看,
具體的例子和寫法,可以參考菜鳥教程中的 建造者模式。
建造者模式的典型使用場景是快餐店的套餐搭配模型。 套餐由若干個(gè)單個(gè)餐品組合而成。單個(gè)餐品又由不同的原材料構(gòu)成。這種層層組合的樹形對(duì)象關(guān)系的應(yīng)用場景下,為了創(chuàng)建頂層的對(duì)象,需要先一層層的創(chuàng)建底層的對(duì)象,逐步向上,直到構(gòu)造出根對(duì)象。 這種場景下,使用繼承可以將同類的對(duì)象關(guān)聯(lián)起來,使用組合可以將不同類型的對(duì)象組合起來。組合就是把不同對(duì)象放在一塊內(nèi)存中保存,作為一個(gè)整體使用。
完全使用繼承來解決此類問題是非常不提倡的。設(shè)計(jì)模式理論中有一個(gè)原則是:“少用繼承,多用組合”。因?yàn)槔^承是一種強(qiáng)耦合,組合是一種松散的耦合。耦合不利于適應(yīng)需求變化,是項(xiàng)目中的一顆定時(shí)炸彈。
從設(shè)計(jì)模式的本質(zhì)上看,
菜鳥教程中沒有提及的一種設(shè)計(jì)模式是組合模式。具體內(nèi)容可以參考: 第四節(jié):組合模式和建筑者模式詳解。
這里簡單說明一下,組合模式和建造者模式比較像,也是遵循樹形對(duì)象關(guān)系結(jié)構(gòu)。和建造者模式相比,不同之處在于,子對(duì)象和父對(duì)象具有相同的類型。所以可以說,組合模式是簡單的建造者模式。
具體的使用場合和實(shí)例,見原型模式。
原型模式,在實(shí)際使用時(shí)可能用得不多。用一句話描述其特點(diǎn):
這種克隆是一種內(nèi)存中的復(fù)制行為,速度快,能充分利用已有對(duì)象的緩存數(shù)據(jù),性能高??寺〕鰜淼膶?duì)象具有和原對(duì)象相同的屬性和行為,可以用來幫助原對(duì)象處理一些事務(wù)。用一句動(dòng)漫中的詞匯來描述,“影分身”再合適不過了。
從設(shè)計(jì)模式的本質(zhì)看,
下一篇,我們將介紹結(jié)構(gòu)型模式。
數(shù)據(jù)庫設(shè)計(jì)模式有哪些的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于數(shù)據(jù)庫設(shè)計(jì)模式有哪些,數(shù)據(jù)庫設(shè)計(jì)模式大全,詳解各類設(shè)計(jì)模式!,設(shè)計(jì)模式(三)創(chuàng)建型模式的信息別忘了在本站進(jìn)行查找喔。
四川成都云服務(wù)器租用托管【創(chuàng)新互聯(lián)】提供各地服務(wù)器租用,電信服務(wù)器托管、移動(dòng)服務(wù)器托管、聯(lián)通服務(wù)器托管,云服務(wù)器虛擬主機(jī)租用。成都機(jī)房托管咨詢:13518219792
創(chuàng)新互聯(lián)(www.cdcxhl.com)擁有10多年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)、開啟建站+互聯(lián)網(wǎng)銷售服務(wù),與企業(yè)客戶共同成長,共創(chuàng)價(jià)值。
當(dāng)前標(biāo)題:數(shù)據(jù)庫設(shè)計(jì)模式大全,詳解各類設(shè)計(jì)模式!(數(shù)據(jù)庫設(shè)計(jì)模式有哪些)
URL地址:http://m.fisionsoft.com.cn/article/djjhcdj.html


咨詢
建站咨詢
