• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            woaidongmao

            文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見諒!~
            隨筆 - 1469, 文章 - 0, 評(píng)論 - 661, 引用 - 0
            數(shù)據(jù)加載中……

            淺層數(shù)據(jù)結(jié)構(gòu)(結(jié)構(gòu)型)vs 深層數(shù)據(jù)結(jié)構(gòu)(聚合型)

             

            構(gòu)建系統(tǒng)數(shù)據(jù)模型時(shí),有2共選擇,以:group->account->son account舉例

            1、系統(tǒng)由多個(gè)group組成;

            2、一個(gè)group有多個(gè)account;

            3、一個(gè)account有多個(gè)son account.

             

            有2種數(shù)據(jù)模型構(gòu)建方式選擇;

            image

            1、模式一的數(shù)據(jù)模型由3張表構(gòu)成:groups表,accounts表,son accounts表。是淺層數(shù)據(jù)結(jié)構(gòu)(結(jié)構(gòu)型),每張表的深度是1。accounts表將有一個(gè)[group]字段關(guān)聯(lián)到groups表里面的某條記錄;son accounts表將有一個(gè)[account]字段關(guān)聯(lián)到accounts表里面的某條記錄。可以說這是一種經(jīng)典的數(shù)據(jù)結(jié)構(gòu),結(jié)構(gòu)型數(shù)據(jù)庫就是由這樣深度為1的二維型數(shù)據(jù)表構(gòu)成,多張表之間的關(guān)系通過增加關(guān)聯(lián)字段來標(biāo)明;

            2、模式二的數(shù)據(jù)模型中,把group視作一個(gè)整體,它是數(shù)據(jù)層的一個(gè)基本單元(unit),數(shù)據(jù)層由多個(gè)group對(duì)象組成,group對(duì)象的深度是3,是深層數(shù)據(jù)結(jié)構(gòu)(聚合型)。現(xiàn)實(shí)的模型對(duì)應(yīng)為對(duì)象型數(shù)據(jù)庫;

             

            現(xiàn)在的問題是:模式一簡(jiǎn)單還是模式二簡(jiǎn)單?哪一種是更為優(yōu)越的選擇?我傾向于模式一,因?yàn)椋?/p>

            1、結(jié)構(gòu)型數(shù)據(jù)建模是經(jīng)典的,目前依然是主流的,得到數(shù)據(jù)庫的廣泛支持,即使不使用數(shù)據(jù)庫,也容易序列化到存儲(chǔ),并且我相信群眾,相信主流意志的正確性;

            2、模式二的對(duì)象型數(shù)據(jù)建模,group是數(shù)據(jù)元,是數(shù)據(jù)操作的唯一入口,所以需要提供account,son account的操作接口,account又需要提供son account的操作接口,假設(shè)對(duì)象深度再多增加幾層,那這是一個(gè)龐大且累贅的冗余。另外一點(diǎn)是樹形的對(duì)象不容易序列化,沒有太多數(shù)據(jù)庫支持;

            3、模式二的層次太深,復(fù)雜度級(jí)數(shù)上升,違反了系統(tǒng)弱化成小類模型的原則(多個(gè)類,每個(gè)類的復(fù)雜度都很低),而這里,group將是一個(gè)很大的類。

            4、第一感覺:模式一的復(fù)雜度我能控制,模式二就沒有把握,所以心里更認(rèn)同模式一;

            5、雖然模式二直觀的表明了數(shù)據(jù)的聚合-組合關(guān)系,與現(xiàn)實(shí)模型完全隱射,在理論上應(yīng)該是更好的選擇。但是就人的理解能力的傾向來說:我認(rèn)為理解廣度的事務(wù)比較理解深度的事務(wù)而言更有優(yōu)勢(shì);

            6、寫到這里,我突然想說一句:化深度為廣度,符合人的認(rèn)知規(guī)律,降低了復(fù)雜度。

            posted on 2008-10-25 02:36 肥仔 閱讀(2513) 評(píng)論(5)  編輯 收藏 引用 所屬分類: 編程思想

            評(píng)論

            # re: 淺層數(shù)據(jù)結(jié)構(gòu)(結(jié)構(gòu)型)vs 深層數(shù)據(jù)結(jié)構(gòu)(聚合型)  回復(fù)  更多評(píng)論   

            現(xiàn)在很多都是采用聚合型。
            2008-10-25 16:46 | 金山詞霸2008

            # re: 淺層數(shù)據(jù)結(jié)構(gòu)(結(jié)構(gòu)型)vs 深層數(shù)據(jù)結(jié)構(gòu)(聚合型)  回復(fù)  更多評(píng)論   

            兩邊的account根本就不一樣
            模式一的account是list<account>
            右邊的account才真的是account

            左邊的圖你沒有確保一個(gè)sub account只能被一個(gè)account擁有,會(huì)導(dǎo)致后續(xù)開發(fā)出錯(cuò)的可能性增大。
            2008-10-27 13:15 | 陳梓瀚(vczh)

            # re: 淺層數(shù)據(jù)結(jié)構(gòu)(結(jié)構(gòu)型)vs 深層數(shù)據(jù)結(jié)構(gòu)(聚合型)  回復(fù)  更多評(píng)論   

            @陳梓瀚(vczh)
            模式二確實(shí)很OOP,不過我接觸過的項(xiàng)目,基本上是用關(guān)聯(lián)來替代聚合,我的經(jīng)歷也告訴我,模式一更為簡(jiǎn)單,更容易控制。

            模式二看上去很美,卻膠合層太厚重,冗余的接口帶來負(fù)擔(dān),要變通也困難。
            聚合的本質(zhì)就是一種強(qiáng)耦合,看上去漂亮而已吧。
            2008-10-27 16:05 | 肥仔

            # re: 淺層數(shù)據(jù)結(jié)構(gòu)(結(jié)構(gòu)型)vs 深層數(shù)據(jù)結(jié)構(gòu)(聚合型)  回復(fù)  更多評(píng)論   

            測(cè)試一下回復(fù)功能。
            2008-12-20 22:02 | 楊成

            # re: 淺層數(shù)據(jù)結(jié)構(gòu)(結(jié)構(gòu)型)vs 深層數(shù)據(jù)結(jié)構(gòu)(聚合型)  回復(fù)  更多評(píng)論   

            gourp -> accounts -> son accounts 的概念太抽象,我們具體點(diǎn),
            很簡(jiǎn)單的,比如汽車是一個(gè)group,
            那么不同品牌的汽車算是各個(gè)accounts,不同品牌的汽車的不同型號(hào)算是son accounts。

            如果是模式1,那么我們就需要?dú)w納,每個(gè)品牌都有哪些字段,以便區(qū)分各個(gè)品牌。
            每個(gè)型號(hào)汽車都有哪些字段,區(qū)分各個(gè)型號(hào)。我們將有3個(gè)類,每個(gè)類都有若干字段。因?yàn)樾吞?hào)特別多,每個(gè)型號(hào)或許都有自己特有的字段,但是因?yàn)槭墙y(tǒng)一的類,因此,所有型號(hào)字段都是一樣的,可能默認(rèn)值不同。那么這樣一個(gè)扁平的數(shù)據(jù)結(jié)構(gòu)里,各種算法交錯(cuò),各種變量之間也是高度耦合。在這種情況下,一旦增加一個(gè)新車型,要有自己特定的新字段,那么所有的邏輯和代碼都要修改。

            如果是模式2,每個(gè)品牌是自己特有的類,每個(gè)型號(hào)也是自己特有的類,有一些公共的接口,將來增加新的品牌,新的型號(hào)只是增加類的種類而已,以前的代碼是不需要?jiǎng)拥摹_@也是oo的最大好處。

            認(rèn)為模式1比模式2好的人,或許等同于認(rèn)同c比c++好很多。而且上面有的評(píng)論,說什么關(guān)聯(lián)和聚合,聚合是相對(duì)于包容模型很而言把,跟關(guān)聯(lián)沒什么關(guān)系啊。
            2008-12-20 22:18 | 楊成
            久久久精品国产亚洲成人满18免费网站| 一本久久a久久精品亚洲| 伊人久久大香线焦综合四虎| 国产成人久久激情91| 中文字幕一区二区三区久久网站| 无码国内精品久久人妻蜜桃| 亚洲级αV无码毛片久久精品| 色综合久久无码五十路人妻| 99热成人精品热久久669| 色综合久久综合网观看| 久久天天躁狠狠躁夜夜2020老熟妇| 99久久婷婷国产一区二区| 国产精品久久久久久久人人看| 中文字幕无码免费久久| 精品永久久福利一区二区| 欧美久久精品一级c片片| 四虎国产精品免费久久| 国内精品久久久久久99| 国产精品丝袜久久久久久不卡| 亚洲欧美另类日本久久国产真实乱对白| 99久久免费国产精品| 亚洲香蕉网久久综合影视 | 岛国搬运www久久| 精品无码久久久久久久久久 | 亚洲精品无码久久一线| 久久久综合九色合综国产| 久久久久无码中| 久久99热这里只频精品6| 国产ww久久久久久久久久| 精品久久人人爽天天玩人人妻| 久久亚洲欧美日本精品| 精品熟女少妇AV免费久久| 国产精品综合久久第一页| 久久精品国产99久久无毒不卡 | 日韩人妻无码一区二区三区久久 | 久久亚洲日韩精品一区二区三区| 99久久精品免费看国产一区二区三区 | 性做久久久久久久久久久| 久久综合亚洲欧美成人| 99久久www免费人成精品| 一本一本久久A久久综合精品 |