用户自定义函数的数据库设计(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的需求和有关数据库设计的内容,可能描述的不够详细具体。在前面的内容,大部分我都是用图形描述,而使用文字描述的地方很少。我觉得通过图形,有时候比文字更直接,更有效。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值