Database 使用引用完整性,应首先使用最小基数1..1填充哪个表?

Database 使用引用完整性,应首先使用最小基数1..1填充哪个表?,database,referential-integrity,cardinality,Database,Referential Integrity,Cardinality,假设我使用的是引用完整性,我在两个实体(a和B)之间有一个关系,两边的最小基数是1。这意味着在填写表A之前,表B需要一个表A可以链接到的记录。但是,由于双方的最小基数都是1,因此可以反过来说,也就是说,表a中需要有一条记录,表B中的记录可以链接到该记录,然后才能将该记录插入表B中 现在这似乎有问题,因为如果我理解正确,引用完整性会迫使您在两种情况下将记录链接到另一个表中的另一个记录,这意味着我不能在任何一个表中输入任何记录 有人能解释一下这种情况下会发生什么吗? 我向我的老师问了同样的问题,她说

假设我使用的是引用完整性,我在两个实体(a和B)之间有一个关系,两边的最小基数是1。这意味着在填写表A之前,表B需要一个表A可以链接到的记录。但是,由于双方的最小基数都是1,因此可以反过来说,也就是说,表a中需要有一条记录,表B中的记录可以链接到该记录,然后才能将该记录插入表B中

现在这似乎有问题,因为如果我理解正确,引用完整性会迫使您在两种情况下将记录链接到另一个表中的另一个记录,这意味着我不能在任何一个表中输入任何记录

有人能解释一下这种情况下会发生什么吗?

我向我的老师问了同样的问题,她说最小基数为1..1(这个符号正确吗?)的关系肯定是可能的,但她无法向我解释应该先填哪个表


对不起,我没有任何具体的例子,我只是随便想一下。。。如果你能在回答中用一个实际的例子来详细说明,那就太好了。

你的情况似乎不正确

在一对一关系中,必须有一个表父级,另一个是子级

让我们考虑您有一个用户表和一个用户配置表。在这种情况下,用户配置文件属于用户。只有在拥有用户配置文件后,才能创建用户配置文件。i、 e.用户表是父表,用户配置文件是子表。和“属于”将包含父表的id

在用户和用户配置文件场景中,用户配置文件表将保存用户配置文件id,您需要首先创建用户对象,然后将此id传递给用户配置文件并创建用户配置文件


因此,在您的场景中,您需要找到哪些是家长,哪些是孩子。如果不是这样的话,您将一直使用鸡蛋类的东西。

对于这个问题,您假设从用户的角度来看,DBMS一次只能操作一个表,而事实并非如此

在概念层面上,当然可能有两个基数为1:1的实体

在关系数据模型的逻辑级别上,这意味着一个关系中候选键的值集必须精确等于另一个关系中候选键的值集

在大多数DBMS的物理级别上,此完整性约束将作为外键约束实现

在大多数DBMS中,实际上一次只能操作一个表

在这种情况下,如果在每个语句之后检查约束,则必须选择一个表作为“父”表,另一个表作为“子”表。必须按照正确的顺序操作表,以便在任何语句之后都不会违反外键约束。可能需要在触发器等中进行额外的验证,以确保每个父级只有一个子级

但是,如果可以推迟约束的检查,以便在提交更改之前不检查约束,则可以指定两个外键约束;一个在第一个表和第二个表之间,另一个在第二个表和第一个表之间。表的操作可以按任何顺序进行,只要在提交更改时没有违反任何约束。然而,从用户的角度来看,在多语句事务的中间,违反了约束。 还有多重分配的概念。这是一个操作多个表被视为一个单一的原子操作。在这种情况下,单个语句需要操纵两个表,以便在语句末尾不违反约束。在这种情况下,从用户的角度来看,约束是并且永远不会被违反的。有一些非商业DBMS支持这些多重分配


您可能希望阅读Chris Date和Hugh Darwen的第三个宣言,该宣言引入了多重赋值的概念。

ahh我仍然只制作概念图(erd),因此当它们转换为关系图时,它会改变场景,其中一个表是父表,另一个是子表。。。我想得太远了:P谢谢。