论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
用户定义的数据类型(User-defined DataType)是由标准数据类型导出的新数据类型,它比标准的数据类型更准确地限定了数据输入的范围。
约束(Check)用于限制列的值域,在数据类型限制的基础上对输入的数据进一步进行限制。通过逻辑表达式来定义列的有效值。
缺省(Default) 定义了一个数值,当用户向数据表插入数据时,若某个域未给定值,系统自动将定义在该域上的缺省作为输入值,保证数据库数据的合理性。
规则(Rule) 是一个用来绑定域或用户定义数据类型的数据库对象,规则说明了哪些数据可以输入到域中。任何时刻,用户输入或修改数据(INSERT 或 UPDATE), DBMS都将检查该数据是否违反绑定在域上的规则。
存储过程(Stored Procedure)是由编译过的SQL语句、控制流语句、变量说明和赋值运算等组成的集合,由开发者创建并存储在数据字典(大部分DBMS叫系统表)中。我们可以通过存储过程中的语句来定义企业业务规则,特别对于复杂的表与表之间的饿关系,用存储过程来实现将变得相当容易。
触发器(Trigger)也是一个存储过程,该过程在插入、修改和删除等操作事前或事后由DBS自动激发(执行)。经常用于实现逻辑上相关的数据表之间的数据完整性和一致性。触发器非常适合于实施企业规则,如果某个输入违反了其中的某个企业规则,触发器可以显示相应错误并中止正在执行的数据库动作。
二、Client/Server模型下实施企业规则的准则
在Client/Server系统中,前端和后端都提供数据完整性约束。在前端可进行域完整性约束,并能定制业务规则。在后端几乎可以实现上述所列的所有的完整性约束。E.F.Codd在衡量关系数据库的十二条准则之第十条指出关系完整性约束条件必须用数据子语言定义并存储在数据字典中,而不是在应用程序中。这样,当完整性约束改变时,只要修改数据字典即可,完整性的改变一般不会在逻辑上影响应用程序的活动。
前端应用程序也可以进行某些完整性检查并实施企业规则,但是这些做法不能用于取代在数据库里的完整性约束定义。如果数据库设计者完全正确地说明了所有的约束和企业规则,则任何违反约束和规则的数据操作都会引起数据库错误。前端应用程序的任务是尽量减少产生数据库错误的可能性,只有从这个意义上说,前端应用程序才应当包含完整性检查和实施