реляционная терминология:источник внешнего ключа, пункт назначения?

StackOverflow https://stackoverflow.com/questions/258134

  •  06-07-2019
  •  | 
  •  

Вопрос

Я провожу некоторый 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.

Много ТИА!

Это было полезно?

Решение

Я бы сказал (данные в скобках необязательны, но я бы их использовал)

[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

Другие советы

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.

Я бы сказал что-то вроде

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.

Большинство людей, не являющихся техническими специалистами, поймут терминологию хозяин / раб очень интуитивно.

Вы могли бы принять следующую форму предложения:

  • Каждая строка t1 должна быть связана ровно с одной строкой t2
  • Каждая строка t2 может быть связана с любым количеством строк t1 или ни с одной

В объясненном сценарии я считаю, что правильное именование должно быть (технически говоря):
t2 является родителем t1
t1 является потомком t2

Таблица ограниченного столбца называется child , а таблица указанного столбца называется parent .

Лично мне не нравится это именование, в SQL SERVER, когда вы запрашиваете представление sys.foreign_keys , дочерняя таблица называется parent_object_id , а ссылочная таблица - < code> referenced_object_id .. с точки зрения самого ограничения может быть правильным .. но в конце это очень запутанно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top