关系术语:外键源,目的地?

时间:2008-11-03 08:30:57

标签: sql oracle terminology

我正在通过指导对我们的表做一些FK分析 表示FK依赖关系然后遍历的图形 图形。在我的代码中,我使用有向图命名所有内容 术语,但我想要更多的东西 报告中的“用户友好”。

在这种情况下:

create table t1(a varchar2(20));
alter table t1 add constraint t1_fk foreign key(a) references t2(b);

t1.a必须存在于t2.b.那么,我应该在空白处使用什么词?

t1 is the _______ of t2.
t2 is the _______ of t1.

许多TIA!

5 个答案:

答案 0 :(得分:4)

我会说(括号内的东西是可选的,但我会使用它们)

[Column a of] table t1 references [column b of] table t2

[Column b of] table t2 is referenced by [column a of] table t1

我还会指定删除/更新时发生的操作(如果有的话)。

Column b of table t2 is referenced by column a of table t1. 
Deleting a record in table t2 will delete matching records on table t1

答案 1 :(得分:2)

t1 is the parent of t2.
t2 is the child of t1.

这是什么观众?如果是理解关系模式的人,那么可能会这样做。如果它是非技术人员,那么我通常会在我的建模工具(ERWin)中记录具体关系的含义。

InvoiceLineItem is a part of Invoice.
Invoice has one or more InvoiceLineItems.

或者:

User must belong to a Business.
Business has zero or more Users.

答案 2 :(得分:1)

我会说

t1 is the master of t2. An ID must be in t1, before it can be mentioned in t2.
t2 is the slave of t1. It cannot refer to an ID that does not exist in t1.

大多数非技术人员会非常直观地掌握主/从术语。

答案 3 :(得分:1)

您可以采用以下句子形式:

  • 每个t1行必须恰好链接到一个t2行
  • 每个t2行可以与任意数量的t1行链接,或者没有

答案 4 :(得分:0)

在解释的场景中,我认为正确的命名应该是(从技术上讲):
t2t1的父级 t1t2

的孩子

受约束列的表称为,而引用列的表称为 parent

我个人不喜欢这个命名,在SQL SERVER中,当你查询sys.foreign_keys视图时,子表被称为parent_object_id,而引用的表被称为referenced_object_id ..来自约束本身的观点可能是正确的..但最后这是非常令人困惑的。