Plsql Oracle实验室数据库设计(管道功能?)

Plsql Oracle实验室数据库设计(管道功能?),plsql,oracle10g,Plsql,Oracle10g,主要目标:查询数据库以确定实验室技术人员下一步应该做什么。 我正在努力实现的目标 我正在设计一个实验室数据库,其中以下每个实体都需要一位家长(左边)和至少一位孩子(右边):request(REQ)->sample(SAM)->test(TST)->measurement(MEA) 每个实体都有以下内容: 该实体的模板-(或类型)(测试模板可能包括:pH测试、滴定等) 自定义表-仅应用于该模板的表字段 计算-根据该实体(和子实体)的数据得出的相关公式的结果 我们的规格通常非常复杂。例如,规范可

主要目标:查询数据库以确定实验室技术人员下一步应该做什么。

我正在努力实现的目标
我正在设计一个实验室数据库,其中以下每个实体都需要一位家长(左边)和至少一位孩子(右边):
request(REQ)->sample(SAM)->test(TST)->measurement(MEA)

每个实体都有以下内容:

  • 该实体的模板-(或类型)(测试模板可能包括:pH测试、滴定等)
  • 自定义表-仅应用于该模板的表字段
  • 计算-根据该实体(和子实体)的数据得出的相关公式的结果
我们的规格通常非常复杂。例如,规范可能会说明,“如果前两个不符合规范,则可进行第三次测量”,或“如果快速测试方法失败,则执行长测试方法”

我想要一个函数,它接受一个
实体\u id
,并(基于已经输入的数据和规范规则)返回可用子模板的列表

问题
管道函数(如下面tuinstoel所述)是实现我试图实现的所需的_children()函数的最佳方法吗


如果没有,您有什么建议?

您想用一条select语句选择主数据和详细数据吗?尝试选择..强制转换..多重设置。请看这里:

EDIT1


OP似乎需要一个流水线函数。可以将光标用作流水线函数的参数。流水线功能非常灵活。请参见此处:

是否要使用一条select语句选择主数据和详细数据?尝试选择..强制转换..多重设置。请看这里:

EDIT1

OP似乎需要一个流水线函数。可以将光标用作流水线函数的参数。流水线功能非常灵活。请看这里:

流水线函数是实现我想要实现的所需的_children()函数的最佳方式吗

我不同意——从功能上讲,这与使用临时表是一样的,但是您可以在父函数中使用INSERT/UPDATE语句来执行相同的操作

流水线函数是实现我想要实现的所需的_children()函数的最佳方式吗


我不同意-从功能上讲,这与使用临时表是一样的,但是您可以在父函数中使用INSERT/UPDATE语句来完成相同的工作。

我认为您并不真正需要管道函数。流水线函数对于能够永远生成数据的生成器来说是很好的。例如,可以使用返回斐波那契数的流水线函数。从概念上讲,流水线函数与.net中的迭代器相同


出于您的考虑,您还可以使用非流水线表函数。这是一个将数据收集(生成、计算等)到“记录数组”中的函数,并最终返回该数组。这取决于您必须做什么,它可能比流水线函数更容易使用。如果“记录数组”是处理数据的自然方式,那么它可能是更好的选择。否则,流水线函数可能会更好。

我认为您并不真正需要流水线函数。流水线函数对于能够永远生成数据的生成器来说是很好的。例如,可以使用返回斐波那契数的流水线函数。从概念上讲,流水线函数与.net中的迭代器相同


出于您的考虑,您还可以使用非流水线表函数。这是一个将数据收集(生成、计算等)到“记录数组”中的函数,并最终返回该数组。这取决于您必须做什么,它可能比流水线函数更容易使用。如果“记录数组”是处理数据的自然方式,那么它可能是更好的选择。否则,流水线函数可能会更好。

对于如此复杂的规范,我将使用支持多态性的面向对象语言或Drools()之类的规则引擎。您仍然可以将数据存储在数据库中,并使用查询尽可能限制内存中的处理量

使用面向对象的语言(例如Java或数据库的过程语言),您可以拥有一个规范基类(或接口),然后在子类中实现特定的行为。在数据库中,您将配置应用规范的位置


规则引擎将更加灵活,因为规则只是可以根据需要更改的文本字符串,但如果从未使用过它们,则会有一点学习曲线。

对于如此复杂的规范,我将使用支持多态性的面向对象语言或类似Drools()的规则引擎。您仍然可以将数据存储在数据库中,并使用查询尽可能限制内存中的处理量

使用面向对象的语言(例如Java或数据库的过程语言),您可以拥有一个规范基类(或接口),然后在子类中实现特定的行为。在数据库中,您将配置应用规范的位置


规则引擎将更加灵活,因为规则只是可以根据需要更改的文本字符串,但如果从未使用过它们,则会有一点学习曲线。

您想要一个返回一条主记录的子记录的函数吗?我想我不同意。好的数据库编程是基于集合的,而不是逐行的。不,我想要一个返回应该创建的子类类型的函数。例如,在新样本上调用它可能会返回需要在样本上执行的三个测试的模板(类型)。在完成一个测试后,对同一个样本调用的函数将只返回另外两个测试。好的,