Pergunta

Estou fazendo algumas análises FK das nossas mesas, fazendo uma dirigidos gráfico representando dependências FK e, em seguida, atravessando o gráfico. No meu código, eu nomeio tudo usando grafo direcionado terminologia, mas eu gostaria de ter algo um pouco mais "User friendly" no relatório.

Neste cenário:

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

t1.a deve existir no t2.b. Então, o que as palavras que eu deveria usar os espaços em branco?

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

Muitos TIA!

Foi útil?

Solução

Eu diria que (as coisas entre colchetes são opcionais, mas eu usá-los)

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

e

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

?

Eu também especificar a ação que acontece no update / delete se houver.

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

Outras dicas

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

O que é o público para isso? Se é pessoas que entendem um esquema relacional, em seguida, que irá provavelmente fazer. Se é as pessoas não técnicas, então geralmente eu tenho documentado em minha ferramenta de modelagem (ERWin) o significado das relações especificamente.

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

Ou:

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

Eu diria que algo ao longo das linhas de

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.

A maioria das pessoas não-técnicas vai entender a terminologia master / slave muito intuitivamente.

Você poderia adotar o seguinte formulário frase:

  • Cada linha t1 deve ser vinculado a exatamente uma linha t2
  • Cada linha t2 pode ser ligado com qualquer número de linhas T1 ou nenhuma

No cenário explicou Eu acho que a nomenclatura correta deve ser (tecnicamente falando):
t2is o pai de t1
t1 é o filho de t2

A tabela da coluna restrita é chamado criança , enquanto a mesa da coluna referenciada é chamado pai .

Pessoalmente eu não gosto dessa nomeação, no SQL Server quando você está consultando para a vista sys.foreign_keys tabela filho é chamado parent_object_id, enquanto a tabela de referência é chamado referenced_object_id .. a partir do ponto de vista da própria restrição, poderia estar certo. . mas no final isso é muito confuso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top