реляционная терминология: источник внешнего ключа, место назначения? - PullRequest
4 голосов
/ 03 ноября 2008

Я делаю анализ 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.

Много ТИА!

Ответы [ 5 ]

4 голосов
/ 03 ноября 2008

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

[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
2 голосов
/ 03 ноября 2008
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.
1 голос
/ 03 ноября 2008

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

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

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

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.

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

0 голосов
/ 06 февраля 2017

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

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

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

...