• 让你提前认识软件开发(35):怎样改动SQL脚本以完毕需求?


    第2部分 数据库SQL语言

    怎样改动SQL脚本以完毕需求?

     

             SQL脚本的改动和C语言代码的改动流程是一样的,都要遵循下面步骤:

            第一步,阅读需求。弄清楚自己要完毕什么功能。

            第二步,对比需求阅读原代码。找到本次要改动的内容的大致位置。

            第三步,对代码进行改动(包含:加入、删除和改动等),将本次的功能加入上去。

            第四步,对改动后的代码进行測试,验证新增功能是否满足需求。

     

           本文以一个实际的需求完毕过程为例。具体说明怎样对SQL脚本进行改动。

            1. 需求描写叙述

            在某软件版本号中,须要完毕例如以下需求:

            (1) 在原有媒体类型的基础上新增一种媒体类型4,其功能属性编号为4

            (2) 要查询信箱中存储的新增媒体类型的用户总数。并推断是否达到最大存储限额。

            (3) 假设最大存储限额为1000,则表明不限制信箱所存储的新增的媒体类型的用户总数。即不用推断信箱是否满。

            (4) 假设最大存储限额为0,则表明信箱不同意接收新增的媒体类型的邮件。

     

            2. 寻找SQL脚本的改动位置

            通过对需求的理解和原脚本的阅读。发现须要在下面代码位置处进行改动(脚本是基于Sybase数据库实现)

    ……

    ……

    if (@mailtype=1)

    begin

        select @functionid = 1

    end

    else if (@mailtype=2)

    begin

        select @functionid = 1

    end

    else if(@mailtype=3)

    begin

        select @functionid = 3

    end

     

    select @tmpstr = funvalue from tb_cosprofile where cosinid = @mboxserver and functionid = @functionid

     

    if (@mailcnt < @maxcnt)

    begin

        select @isfull = 0

    end

    else

    begin

        select @isfull = 1

    end

    ……

    ……

     

             3. 一步一步完毕需求

            找到了代码的改动位置之后,下面就要来实现需求了。

            第一步:在原有媒体类型的基础上新增一种媒体类型4。其功能属性编号为4

            改动之后的代码例如以下所看到的:

    ……

    ……

    if (@mailtype=1)

    begin

        select @functionid = 1

    end

    else if (@mailtype=2)

    begin

        select @functionid = 1

    end

    else if(@mailtype=3)

    begin

        select @functionid = 3

    end

    -- zzx add 20140709 begin

    else if(@mailtype=4)

    begin

        select @functionid = 4

    end

    -- zzx add 20140709 end

    ……

    ……

     

            第二步:要查询信箱中存储的新增媒体类型的用户总数,并推断是否达到最大存储限额。

            对比原代码。该需求可採用之前的实现,本次不做改动。

     

            第三步:假设最大存储限额为1000。则表明不限制信箱所存储的新增的媒体类型的用户总数,即不用推断信箱是否满。假设最大存储限额为0,则表明信箱不同意接收新增的媒体类型的邮件。

            在改动代码的时候,我们有一个原则,那就是尽量不要改变之前的流程

    因此。为了完毕该需求,考虑採用“ifelse”语句。对本次新增的媒体类型进行单独处理。

           改动之后的代码例如以下所看到的:

    ……

    ……

    -- zzx add 20140709 begin

    if (@functionid = 4)

    begin

        if (@maxcnt = 0)

        begin

            select @isfull = 2        -- 对于这样的情况。要返回一个特殊的值

        end

        else if (@maxcnt = 1000)

        begin

            select @isfull = 0

        end

        else

        begin

             if (@mailcnt < @maxcnt)

             begin

                 select @isfull = 0

             end

             else

             begin

                 select @isfull = 1

             end

        end

    end

    -- zzx add 20140709 end

    else

    begin

        if (@mailcnt < @maxcnt)

        begin

            select @isfull = 0

        end

        else

        begin

            select @isfull = 1

        end

    end

    ……

    ……

     

            经过以上三步的改动之后,最后的脚本例如以下所看到的:

    ……

    ……

    if (@mailtype=1)

    begin

        select @functionid = 1

    end

    else if (@mailtype=2)

    begin

        select @functionid = 1

    end

    else if(@mailtype=3)

    begin

        select @functionid = 3

    end

    -- zzx add 20140709 begin

    else if(@mailtype=4)

    begin

        select @functionid = 4

    end

    -- zzx add 20140709 end

     

    select @tmpstr = funvalue from tb_cosprofile where cosinid = @mboxserver and functionid = @functionid

     

    -- zzx add 20140709 begin

    if (@functionid = 4)

    begin

        if (@maxcnt = 0)

        begin

            select @isfull = 2        -- 对于这样的情况,要返回一个特殊的值

        end

        else if (@maxcnt = 1000)

        begin

            select @isfull = 0

       end

       else

       begin

             if (@mailcnt < @maxcnt)

            begin

                select @isfull = 0

           end

           else

           begin

               select @isfull = 1

           end

       end

    end

    -- zzx add 20140709 end

    else

    begin

        if (@mailcnt < @maxcnt)

        begin

            select @isfull = 0

        end

        else

        begin

        select @isfull = 1

        end

    end

    ……

    ……

     

            4. 对改动之后的代码进行測试

           代码改动完后,我们还要进行充分的自測之后才干提交版本号。

           对于SQL脚本的測试。须要构造一些数据,待脚本运行完之后,查看是否依照需求要求运行了特定的流程。

     

           总的说来。在改动SQL脚本的过程中,我们要注意下面事项:

           (1) 在动手改动代码之前,一定要将需求理解到位,弄清楚要实现的功能究竟是什么。

           (2) 在改动代码的过程中。要严格參照编程规范运行。

    对于改动的代码,一定要加入凝视。

           (3) 代码的改动要遵循最小改动原则。即我们在尽量不改变原程序流程的前提下来实现新的功能。

           (4) 在代码改动完之后,一定要进行充分的自測。这个与C语言程序的測试是一样的道理。

     

          “实践出真知”,仅仅有通过不断的实践,我们才可以提高自己的编程能力,才可以掌握需求实现的正确而高速的方法。

     

    (本人微博:http://weibo.com/zhouzxi?

    topnav=1&wvr=5,微信号:245924426。欢迎关注。)

  • 相关阅读:
    BZOJ1146:[CTSC2008]网络管理
    AtCoder Grand Contest 004 C:AND Grid
    BZOJ3295:[CQOI2011]动态逆序对
    AtCoder Regular Contest 070F:Honest Or Unkind
    BZOJ3110:[ZJOI2013]K大数查询
    BZOJ3196:二逼平衡树
    浅谈splay
    BZOJ3938:Robot
    浅谈标记永久化
    AtCoder Regular Contest 068E:Snuke Line
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5080239.html
Copyright © 2020-2023  润新知