Pav*_*vel 2 database entity-relationship relational-database
嘿大家.我目前正在准备考试,并希望了解数据库系统中用户定义的完整性规则的一些示例.据我所知,这意味着我可以为列设置某些条件,并且在插入数据时,它需要满足这些条件.
例如:如果我设置一个规则,ID只需要由5个整数组成,那么当我插入一个ID由整数和一些字符组成的行时,它就不会接受它并返回错误.
有人可以确认并给我一些意见吗?非常感谢你提前!
是的,这是数据库的全部概念,而不是不受控制的数据存储位置.
它们不是用户定义的,它们是定义的数据建模器或数据库管理员或数据库所有者(所有特定术语).如果你把它留给用户或开发者,他们会阅读免费的垃圾或互联网,并实现一个怪物.
30多年来,数据库的概念是它的整个定义都在数据库中.在此期间,已经有许多标准(来自国际标准机构,而不是来自单一供应商或软件销售商),已逐步确定各种标准以提升数据库的完整性.SQL供应商已经实现了它们(好吧,不是免费软件,但它们不提供ISO/IEC/ANSI SQL;它们在这些产品中使用标准术语"SQL"是欺诈性的).
在标准SQL中,我们有以下内容,如声明(即不是数据库外的代码,不是触发器):
参照完整性.在插入子行之前,子项引用的父行必须存在.这恰好是关系定义,所以没有加倍.
数据的完整性.各种形式:
我再说一遍,如果它没有实现这些基础(在每一列上),它不是一个数据库,它只是一个存储位置,对于没有完整性的数据.
您可以通过检查一些标准SQL手册或SQL标准本身(两者都可在Internet上免费获得)轻松确认.
在互联网上发现的与上述相反的任何信息都不值得回应.
与标准争论是浪费时间; 他们有目的; 它们是由比我们更大的思想创造出来的; 他们长期(30年!)被大型组织和政府接受(要求).小型组织可以通过遵循这些标准来节省时间,而不是相信它们在某种程度上"不同".我们正在处理这个行业的物理科学和技术,而不是神奇的思考.
应用层中的业务规则
好吧,如果您将规则放在服务器中,它们将由服务器保证.我相信任何一天,任何应用层的完美执行,尤其是那些不了解数据库或其目的的人所写的.
数据库应该完全独立于使用它们的应用程序(注意复数).将这些规则放在数据库中的五个应用程序而不是一个地方是愚蠢的.当规则发生变化时会发生什么,任何人都可以保证所有应用程序都能正确升级,并且一致吗?
还要记住,数据是公司资产,而不是部门资产.公司实施标准,以便他们可以避免部门管理员浪费时间浪费30年前在部门之外解决的愚蠢论点.
再次,人们发布他们的想法,好像他们是第一个经历这个思考过程的人,没有任何资格(这意味着他们知道标准)或理解或实际经验(这将真正快速地改变他们的信念).
因此:所有与数据相关的业务规则,无论以何种形式或形式,都应与IEC/ISO/ANSI标准目录中的数据一起放在数据库中.
任何业务逻辑(依赖于应用程序和使用情况)都可以放在业务决策的任何地方.这样,公司资产的完整性得以保留,损害仅限于娱乐神奇思维的部门.