<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

    blog已經轉移至github,大家請訪問 http://qaseven.github.io/

    SQL Server數據庫基礎的級聯刪除、級聯更新與三層架構之窺

    一、定義

      級聯刪除是指刪除包含主鍵值的行的操作,該值由其它表的現有行中的外鍵引用。在級聯刪除中,還刪除其外鍵值引用刪除的主鍵值的所有行。

      級聯更新是指更新主鍵值的操作,該值由其它表的現有行中的外鍵引用。在級聯更新中,更新所有外鍵值與新的主鍵值相匹配。

      三層架構是指一種架構思想。通常他將整個業務應用劃分為:表現層(UI)、業務邏輯層(BLL)、數據訪問層(DAL)。區分層次的目的是為了“高內聚、低耦合”的思想。

      二、特點

      大家都知道,級聯刪除與級聯更新操作,都是指主表的信息刪除或更新后,外鍵表中的相應信息隨主表保持一致,也同樣做出刪除或更新操作,不然就會發生錯誤,保持數據的事務性。

      而關于三層架構的分層問題,我們之前就討論過。看似簡單,但是越是往細處想,越是發現疑點重重,很多知識都掌握的似是而非。

      之前,我們談論過,我們的架構設計,一般DAL層是與表一一對應的。這是一種規則,可以使DAL層與BLL層之間的關系更加清晰、簡潔。但是,我們知道,在實際應用中,真正實現一個邏輯對應一個表是比較困難的,我們的業務不可能彼此孤立,而只能相對孤立。

      因此,我認為:我們在設計之初,大方向依然按照DAL與表一一對應的原則進行設計。這里有一點需要注意:所寫的SQL語句,一定是要放在存儲過程里面的,因為存儲過程是預編譯類型。業務修改時,我們只需要修改對應存儲過程,實現對修改封閉的原則。

      三、比較

      通過上面的分析,我們可以得出:級聯操作與三層機構設計思想是彼此矛盾的。前者只適用于多表間的操作關系,而后者的宏觀路線是單對單。

      然而,我認為,通過編寫存儲過程或者觸發器來實現級聯操作,這樣可以使得三層架構的設計更加靈活多變、更加具有彈性。

      我們來看機房收費系統中的一個功能:充值功能。我們在充值的時候,不僅要更新卡表內余額,同時也要增加充值記錄。

      我們之前的做法是,在DAL層對應卡表編寫進行更新余額,在充值記錄表中添加相應記錄。然后在BLL層實現他們的協調工作

      這樣做有一個很大的弊端,充值的過程是一個順序過程,現更新,在添加記錄。如果中途斷電,那么數據就會不完整了。

      看下面的例子,首先是數據庫關系圖

      編寫下面觸發器,實現起來就非常方便了。

    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author:  劉正權
    -- Create date: 2012年5月7日
    -- Description: 充值時,更新最新的余額的同時,增加充值記錄
    -- =============================================
    CREATE TRIGGER trigCharge
       ON  card
       Update
    AS
    BEGIN
     Update chargerecord set c.ChargeCash=i.ChargeCash
     from chargerocord c,Deleted d, Inserted i
     where c.CId=d.id
    END
    GO

      四、結論

      我認為,級聯操作與三層架構或者多層架構的思想是不矛盾的。想反,它使得分層更加靈活多變。

    posted on 2012-06-20 09:46 順其自然EVO 閱讀(818) 評論(0)  編輯  收藏 所屬分類: 數據庫

    <2012年6月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567

    導航

    統計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产午夜免费秋霞影院| 亚洲性线免费观看视频成熟| 亚洲黑人嫩小videos| 黄 色一级 成 人网站免费| 国产免费啪嗒啪嗒视频看看| 精品亚洲国产成人av| 成人亚洲综合天堂| 男性gay黄免费网站| 亚洲?v无码国产在丝袜线观看| 亚洲av无码日韩av无码网站冲| 国产精品麻豆免费版| 亚洲一级片免费看| 亚洲成A人片在线观看无码不卡 | 亚洲一区在线免费观看| 亚洲伦另类中文字幕| 美女内射毛片在线看免费人动物| 久久精品亚洲中文字幕无码麻豆| **一级毛片免费完整视| 久久精品国产99国产精品亚洲| 日本免费无遮挡吸乳视频电影| 水蜜桃视频在线观看免费| 亚洲熟女一区二区三区| 久久久久久久99精品免费| 麻豆狠色伊人亚洲综合网站| 国产午夜无码视频免费网站| a级成人毛片免费图片| 亚洲高清资源在线观看| 国产精品免费电影| 中文无码成人免费视频在线观看 | 亚洲熟妇成人精品一区| 亚洲高清无码综合性爱视频| 人人揉揉香蕉大免费不卡| 亚洲制服丝袜中文字幕| 亚洲AⅤ无码一区二区三区在线 | 在线观看免费成人| 两个人看的www免费高清| 亚洲成人高清在线观看| 免费一级成人毛片| 亚欧在线精品免费观看一区| 亚洲AV无码国产剧情| 亚洲Av无码精品色午夜|