• 用户自定义函数的数据库设计(DEMO)


    开始

    以图1.来描述DEMO的需求:

    图1.

    在图1.设计一个DEMO系统能实现从【源数据】至【目标数据】的数据转换,转换过程能让用户通过调用自定义函数来实现。

    基本流程图

    图2.

    图2.中的"多次调用"并表示多次调用同一个函数,而是可能存在先后调用不同的函数进行数据转换。

    函数f(x)常见的几种情况

    图3.

    图3.中的列Function,描述各个函数名,列Input描述每函数的输入变量(参数),列Output描述函数的输出变量。其中Output部分,存在两种情况,一种是单一值,另一种是表(记录集)。在列Content描述函数的具体内容,这里使用省略号来描述其内容,如果含有调用其他函数的,就写调用对应的函数名。

    Chen's 数据库表示法

    图4.

    图4. 中的function是object中的其中一种类型对象,在object的属性object type描述对象类型,值范围是{table,view,function} 。object的属性is custom描述是否是用户自定义的对象(这里is custom=1的时候,object一定是用户自定义函数). function的属性function type 有两个值{scalar, table-valued }.function type与output存在约束关系,当function type = scalar的时候,output属性一定是一个标值,反之就是表值。

    物理模型图

    图5.

    数据模拟

    图6.

    这里模拟两种SQL Server实例环境,一个是本地的"MSTEST-PC\SQL2012DE"和远程的"192.168.163.2\SQLCOM,9101"。因为篇幅问题,这里我只拿两个数据库的一些表、视图、函数来模拟。而且模拟的数据可能与之前的数据库物理模型图有些不一样,我这里只列出一些关键信息的内容(字段),而且有几个表联合一起显示,这犹如UI上面呈现给用户的列表;这样做的目的是,为了更能让数据更直观感,更重要的是方便与其他组织部门沟通。

    图7.

    图8.

    图8.只有当function type是table-valued function的时候,才有function_return这一部分。当function type 是 scalar function的时候,函数就只返回一个某一类型的值,可以跳跃查看图10.部分的function_output.

    图9.

    图10.

    图11.

    图12.

    图12. 描述function_content引用到的对象,及哪些对象字段。

    扩展

    简短描述几个:

    • 虽然前面描述了用户自定义函数如何设计,涉及到源对象(哪些table,view,function),但少了目标对象(转换后的结果存在在哪里)。
    • 源对象发生改变,那么如何通知用户是否修改自定义函数。
    • 用户自定义函数如何进行版本管理。
    • 如何优化自定义函数。

    小结

    以上的内容只是一个DEMO的需求和有关数据库设计的内容,可能描述的不够详细具体。在前面的内容,大部分我都是用图形描述,而使用文字描述的地方很少。我觉得通过图形,有时候比文字更直接,更有效。

  • 相关阅读:
    配置并学习微信JS-SDK(1)
    在 Sublime Text 3 中运行 PHP
    apache-配置虚拟主机
    mysql-积累管理sql语句
    博客园-推荐发博客工具的安装配置
    注释多行文本
    nargin
    Sublime Text
    The MATLAB Profiler
    Fig723.asy
  • 原文地址:https://www.cnblogs.com/wghao/p/3053926.html
Copyright © 2020-2023  润新知