2013年5月2日 用户自定义函数的数据库设计(DEMO)
来源:互联网 发布:oracle sql分页优化 编辑:程序博客网 时间:2024/06/10 01:47
开始
以图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的需求和有关数据库设计的内容,可能描述的不够详细具体。在前面的内容,大部分我都是用图形描述,而使用文字描述的地方很少。我觉得通过图形,有时候比文字更直接,更有效。
- 2013年5月2日 用户自定义函数的数据库设计(DEMO)
- 有关【年、月、日】的函数
- 2013年2月7日 故障--都是数据库惹的祸
- [5月10日的脚本] 获得登录、数据库用户/角色和对象级别的权限 (T-SQL)
- java中递归函数的应用2013年2月1日
- 2013年3月11日 自定义按钮效果
- [2月18日的脚本] 修复本地活动目录用户的重复用户主体名称
- 【c语言】反复校验用户输入的生日,包括年、月、日。直到年、月、日都合法。
- C语言 反复校验用户输入的生日,包括年、月、日。直到年、月、日都合法
- 2月5日
- 2月22日 随机变量的分布函数
- 【U3D日记-2016年9月2日】设计模式解决工作问题的一个实例
- 2013年2月17日,新的开始!
- 寻找固定的和----2013年2月26日
- 2013年7月14日-Java连接Oracle数据库
- 2009年2月5日-我的工作
- 5月2日密码的答案
- SendTs2Ip demo 2010年02月02日更新
- 实例分析Java Class的文件结构
- DELL Inspiron One 2020 安装win7问题
- Intent和PendingIntent的区别
- OPENCV版本的摄像机标定(张正友)
- RAC常用开启关闭命令 – SRVCTL用法
- 2013年5月2日 用户自定义函数的数据库设计(DEMO)
- 在JSP页面中输出JSON格式数据
- Ext.Net 1.X _德仔铁观音学习笔记整理
- Oracle ASM常用命令
- 五月学习计划
- django入门笔记8 - session
- django入门笔记9 - auth用户验证&权限
- 数字旋转方阵和上三角(递归问题)
- requestWindowFeature()的应用