Database design 创建外键是否自动意味着引用完整性?

Database design 创建外键是否自动意味着引用完整性?,database-design,referential-integrity,Database Design,Referential Integrity,如果我创建外键,引用完整性是自动的吗?我是否需要设置任何其他设置才能使级联工作 编辑:例如,在postgres中。我的意思是,我不需要设置任何其他设置来使RI工作。删除。我猜FK意味着它将确保插入的FK中存在数据。引用完整性比外键更重要 对于级联,这取决于如何定义外键以及使用的RDBMS。引用完整性比外键更重要 对于级联,这取决于如何定义外键以及使用的RDBMS 如果我创建外键,引用完整性是自动的吗 没有 我是否需要设置任何其他设置才能使级联工作 细节取决于您使用的数据库系统,但类似于on DE

如果我创建外键,引用完整性是自动的吗?我是否需要设置任何其他设置才能使级联工作


编辑:例如,在postgres中。我的意思是,我不需要设置任何其他设置来使RI工作。删除。我猜FK意味着它将确保插入的FK中存在数据。

引用完整性比外键更重要


对于级联,这取决于如何定义外键以及使用的RDBMS。

引用完整性比外键更重要

对于级联,这取决于如何定义外键以及使用的RDBMS

如果我创建外键,引用完整性是自动的吗

没有

我是否需要设置任何其他设置才能使级联工作

细节取决于您使用的数据库系统,但类似于on DELETE CASCADE的内容可能是您想要的

如果我创建外键,引用完整性是自动的吗

没有

我是否需要设置任何其他设置才能使级联工作



详细信息取决于您正在使用的数据库系统,但类似于on DELETE CASCADE的内容可能正是您所需要的。

是的,只要创建外键,引用完整性就会强制执行。您还可以定义其他选项,例如级联更新和删除。通常,这是用于创建外键的相同语法的一部分,通常在创建外键时必须指定它-至少在标准SQL中是这样工作的。

是的,只要创建外键,引用完整性就会强制执行。您还可以定义其他选项,例如级联更新和删除。通常,这是用于创建外键的相同语法的一部分,通常在创建外键时必须指定它-至少在标准SQL中是这样工作的。

automatic?你认为你说的自动是什么意思?使级联工作?你这是什么意思?你是在问级联删除吗?请说得更具体些,这样我们就知道你在说什么了。自动的?你认为你说的自动是什么意思?使级联工作?你这是什么意思?你是在问级联删除吗?请说得更具体些,这样我们就知道你在说什么了。如果你有了一个FK regarless of cascades,引用完整性就不可用了吗?有什么我遗漏的吗?你能详细说明引用完整性的其余部分吗?您的评论听起来很神秘。@StephaniePage-只是在某些设计中,为了保持引用完整性,外键是不够的。假设您为一个人表和两个链接表建模:经理和下属。经理和下属有一个人名,但不能有相同的人名。外键本身并不能保持引用的完整性。啊,这很好。有许多关系是声明性约束无法解决的。这是关系数据库管理系统的主要缺陷之一。更新的更丰富的声明性约束将是一个巨大的改进。@Stephanie,缺少对所描述的Oded类型约束的支持并不是RBDM的主要缺陷。这是SQL及其实现的一个主要缺陷。RBDM没有理由不能也不应该支持这样的约束。如果您有一个FK regarless of cascades,引用完整性就不可用了吗?有什么我遗漏的吗?你能详细说明引用完整性的其余部分吗?您的评论听起来很神秘。@StephaniePage-只是在某些设计中,为了保持引用完整性,外键是不够的。假设您为一个人表和两个链接表建模:经理和下属。经理和下属有一个人名,但不能有相同的人名。外键本身并不能保持引用的完整性。啊,这很好。有许多关系是声明性约束无法解决的。这是关系数据库管理系统的主要缺陷之一。更新的更丰富的声明性约束将是一个巨大的改进。@Stephanie,缺少对所描述的Oded类型约束的支持并不是RBDM的主要缺陷。这是SQL及其实现的一个主要缺陷。RBDM没有理由不能也不应该支持此类约束。创建外键是否与声明外键约束的含义相同?如果是这样,那么您的回答是正确的。但是如果不是,那么就可以创建一些在查询中像外键一样使用的东西,如果功能上等同于外键,但是DBMS不知道它是外键。在这种情况下,可以想象,只要数据库被修改,应用程序就会强制执行引用完整性。但这是我不推荐的策略。我不知道这句话是什么意思。@Stephanie,我认为Walter的正确观点是外键不是constra
int-它是应用RI约束的列集。我和其他人将这个问题中的外键解释为SQL中使用的外键约束语法。这可能是问题的意思,也可能不是。创建外键与声明外键约束的意思相同吗?如果是这样,那么您的回答是正确的。但是如果不是,那么就可以创建一些在查询中像外键一样使用的东西,如果功能上等同于外键,但是DBMS不知道它是外键。在这种情况下,可以想象,只要数据库被修改,应用程序就会强制执行引用完整性。但这是我不推荐的策略。我不知道这句话是什么意思。@Stephanie,我认为Walter的正确观点是外键不是约束-它是RI约束适用的列集。我和其他人将这个问题中的外键解释为SQL中使用的外键约束语法。这可能是问题的意思,也可能不是。我对你的答案投了赞成票,主要是为了抵消其他人的反对票。从技术上讲,你是对的。通过声明约束,可以创建一个外键,并像使用外键一样使用它,而无需告诉DBMS它是一个外键。但是,您的答案太短,因为提问者可能想知道您在声明外键约束时使用了什么HEPPEN。如果这就是被问到的问题,那么你的答案是误导性的。我对你的答案投了更高的票,主要是为了抵消其他人的反对票。从技术上讲,你是对的。通过声明约束,可以创建一个外键,并像使用外键一样使用它,而无需告诉DBMS它是一个外键。但是,您的答案太短,因为提问者可能想知道您在声明外键约束时使用了什么HEPPEN。如果这就是被问到的问题,那么你的回答是误导性的。