数据库系统中用户定义的完整性规则示例?

Pav*_*vel 2 database entity-relationship relational-database

嘿大家.我目前正在准备考试,并希望了解数据库系统中用户定义的完整性规则的一些示例.据我所知,这意味着我可以为列设置某些条件,并且在插入数据时,它需要满足这些条件.

例如:如果我设置一个规则,ID只需要由5个整数组成,那么当我插入一个ID由整数和一些字符组成的行时,它就不会接受它并返回错误.

有人可以确认并给我一些意见吗?非常感谢你提前!

Per*_*DBA 6

是的,这是数据库的全部概念,而不是不受控制的数据存储位置.

它们不是用户定义的,它们是定义的数据建模器或数据库管理员或数据库所有者(所有特定术语).如果你把它留给用户或开发者,他们会阅读免费的垃圾或互联网,并实现一个怪物.

30多年来,数据库的概念是它的整个定义都数据库中.在此期间,已经有许多标准(来自国际标准机构,而不是来自单一供应商或软件销售商),已逐步确定各种标准以提升数据库的完整性.SQL供应商已经实现了它们(好吧,不是免费软件,但它们不提供ISO/IEC/ANSI SQL;它们在这些产品中使用标准术语"SQL"是欺诈性的).

在标准SQL中,我们有以下内容,如声明(即不是数据库外的代码,不是触发器):

  • 参照完整性.在插入子行之前,子项引用的父行必须存在.这恰好是关系定义,所以没有加倍.

  • 数据的完整性.各种形式:

    • 首先确保使用正确的数据类型.始终如一.这消除了将字符值放在整数列中; 4位数列中的10位数值等
    • 规则.这些确保遵守列的所有规则(例如您的示例).
    • 检查约束.在允许插入之前,这些允许在其他列中检查列值.它们可以简单或复杂.
    • (使用触发器,您可以实现上述声明不提供的任何进一步约束).
  • 交易诚信.这确保了维护不同表中的行之间的完整性,并且可以依赖数据.

我再说一遍,如果它没有实现这些基础(在每一列上),它不是一个数据库,它只是一个存储位置,对于没有完整性的数据.

您可以通过检查一些标准SQL手册或SQL标准本身(两者都可在Internet上免费获得)轻松确认.

在互联网上发现的与上述相反的任何信息都不值得回应.

  • 任何带键盘和连接的坚果盒都可以发布任何东西.Wiki由不合格的业余爱好者撰写,"定义"每周都在变化,因为不太合格的业余爱好者会对其进行编辑.
  • 他们中的大多数人都在写他们所相信的东西,没有任何实际经验,测试或验证他们的信仰.

与标准争论是浪费时间; 他们有目的; 它们是由比我们更大的思想创造出来的; 他们长期(30年!)被大型组织和政府接受(要求).小型组织可以通过遵循这些标准来节省时间,而不是相信它们在某种程度上"不同".我们正在处理这个行业的物理科学和技术,而不是神奇的思考.

应用层中的业务规则

  1. 好吧,如果您将规则放在服务器中,它们将由服务器保证.我相信任何一天,任何应用层的完美执行,尤其是那些不了解数据库或其目的的人所写的.

  2. 数据库应该完全独立于使用它们的应用程序(注意复数).将这些规则放在数据库中的五个应用程序而不是一个地方是愚蠢的.当规则发生变化时会发生什么,任何人都可以保证所有应用程序都能正确升级,并且一致吗?

  3. 还要记住,数据是公司资产,而不是部门资产.公司实施标准,以便他们可以避免部门管理员浪费时间浪费30年前在部门之外解决的愚蠢论点.

再次,人们发布他们的想法,好像他们是第一个经历这个思考过程的人,没有任何资格(这意味着他们知道标准)或理解或实际经验(这将真正快速地改变他们的信念).

因此:所有与数据相关的业务规则,无论以何种形式或形式,都应与IEC/ISO/ANSI标准目录中的数据一起放在数据库中.

任何业务逻辑(依赖于应用程序和使用情况)都可以放在业务决策的任何地方.这样,公司资产的完整性得以保留,损害仅限于娱乐神奇思维的部门.