gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 19:58:28 25 4
gpt4 key购买 nike

大家好。我目前正在准备考试,想知道数据库系统中用户定义的完整性规则的一些示例。据我所知,这意味着我可以为列设置某些条件,当插入数据时,它需要满足这些条件。
例如:如果我设置了一个规则,一个id只需要由5个整数组成,那么当我插入一个id由整数和一些字符组成的行时,它将不接受它并返回一个错误。
有人能证实一下并给我一些意见吗?非常感谢你提前!

最佳答案

是的,这就是数据库的全部概念,而不是不受控制的数据存储位置。
它们不是用户定义的,而是定义的数据建模器、数据库管理员或数据库所有者(所有特定术语)。如果你把它留给用户或开发人员,他们将免费阅读垃圾或互联网,并实现一个怪物。
30多年来,数据库的概念是它的整个定义都在数据库中。在此期间,已经有许多标准(来自国际标准机构,而不是来自单一供应商或软件销售商),它们逐渐确定了各种标准,以提高数据库的完整性。sql供应商已经实现了它们(好吧,不是免费软件mob,但是他们不提供iso/iec/ansi sql;而且他们在这些产品中使用标准术语“sql”是欺诈的)。
在标准SQL中,我们有以下声明(即不是数据库外部的代码,不是触发器):
参照完整性。在插入子行之前,子代引用的父行必须存在。这正好是关系的定义,所以没有重叠。
数据完整性。各种形式:
首先确保使用了正确的数据类型。一贯地。这就避免了将字符值放在整数列中;将10位值放在4位列中,等等。
规则。它们确保遵守列的所有规则(例如您的示例)。
检查约束。这些选项允许在允许插入之前对照其他列检查列值。它们可以是简单的,也可以是复杂的。
(使用触发器,可以实现上述声明不提供的任何进一步约束)
是的。
交易完整性。这确保了不同表中行之间的完整性得到维护,并且可以依赖这些数据。
我重复一遍,如果它没有实现这些基础(在每一列上),它就不是一个数据库,它只是一个存储位置,对于没有完整性的数据。
您可以通过查看一些标准的sql手册或sql标准本身(都可以在internet上免费获得)轻松地确认这一点。
在互联网上发现的任何与上述内容相反的信息都不值得回应。
现在任何有键盘和连接的疯子都可以发布任何东西。wiki是由不合格的业余人士编写的,而“定义”每周都会发生变化,因为不合格的业余人士会对其进行编辑。
他们中的大多数人都在写他们所相信的东西,没有任何实际经验,对他们的信仰进行测试或验证。
与标准争论是浪费时间;他们有目的;他们是由比我们更伟大的思想创造的;他们有很长的时间(30年!)被更大的组织和政府接受(要求)。小型组织可以通过遵循这些标准来节省时间,而不是抱着某种“不同”的信念。我们在这个行业里从事的是物理科学和技术,而不是魔法思维。
应用层中的业务规则
好吧,如果你把规则放在服务器上,它们是由服务器保证的。我相信,任何一天,任何应用程序层的完美执行,尤其是那些不了解数据库或其用途的人编写的应用程序层。
数据库应该完全独立于使用它们的应用程序(注意复数)。如果把这些规则放在五个应用程序中,而不是放在一个数据库中,那就太傻了。当规则改变时会发生什么,有谁能保证所有的应用程序都能正确地、一致地升级?
还要记住,数据是公司资产,而不是部门资产。该公司实施标准,这样他们就可以避免部门管理人员浪费时间,在部门之外进行30年前已经解决的愚蠢争论。
同样,人们把自己的想法公布出来,就好像他们是第一个经历这一思想过程的人一样,没有任何资格(这意味着他们知道标准),也没有理解或实际经验(这将很快改变他们的信仰)。
因此:所有与数据有关的业务规则,无论是以何种形式或形式,都应与数据一起放在数据库中的iec/iso/ansi标准目录中。
任何业务逻辑(依赖于应用程序和使用情况)都可以放在业务决定的任何地方。这样一来,企业资产的完整性就得到了保护,而损害仅限于那些具有神奇思维的部门。

关于database - 数据库系统中用户定义的完整性规则的示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4699699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com