在数据库中分配关系和仅将数据库的主键存储为外键之间的区别是什么?

时间:2013-06-26 12:53:30

标签: sql database

这可能是一个新手数据库问题,但我一直有这个疑问。

为什么我们要分配Django或节点数据库包装器提供的关系,这种关系允许以多对一或一对一的关系连接到数据库模型。为什么我们不能只存储数据库B中数据库A的主键,从而确保数据库A与数据库B具有一对一的关系?

执行此DatabaseA.hasOne(数据库B)的需要是什么,最终实现相同的目的,在数据​​库B中创建databaseAId列并在那里存储数据库A的主键ID。

2 个答案:

答案 0 :(得分:1)

它们基本相同。
包装器的原因是始终如一地提供以所选语言工作的接口。例如,我在rails上使用ruby并且存在相同的范例。包装器允许您使用您正在使用的语言编写查询。

这种做法还允许您定义不同的关系,例如has_many与has_one,其中两者在另一个表中都有外键,但只有使用上述关系才能知道它是否是has_many或has_one关系

答案 1 :(得分:0)

描述中的一些术语对我来说似乎含糊不清(Django是什么?数据库这个词被误用了吗?)

但通常在数据库中创建关系通常也会确保您在外键列中输入的数据是合理的。 (例如,如果外表中不存在记录,则无法插入外键。)