Pregunta

Estoy haciendo un análisis FK de nuestras tablas haciendo un direccionamiento gráfico que representa las dependencias FK y luego atravesar el grafico. En mi código, nombro todo usando el grafo dirigido terminología, pero me gustaría tener algo un poco más " fácil de usar " en el informe.

En este escenario:

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

t1.a debe existir en t2.b. Entonces, ¿qué palabras debo usar en los espacios en blanco?

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

¡Muchos TIA!

¿Fue útil?

Solución

Yo diría (las cosas entre paréntesis son opcionales, pero las usaría)

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

y

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

?

También especificaría la acción que ocurre en eliminar / actualizar, si corresponde.

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

Otros consejos

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

¿Cuál es la audiencia para esto? Si es la gente que entiende un esquema relacional, entonces probablemente lo hará. Si no es personal técnico, generalmente he documentado en mi herramienta de modelado (ERWin) el significado de las relaciones específicamente.

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

O:

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

Yo diría algo en la línea 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.

La mayoría de las personas no técnicas entenderán la terminología maestro / esclavo de manera muy intuitiva.

Podrías adoptar la siguiente forma de oración:

  • Cada fila t1 debe estar vinculada a exactamente una fila t2
  • Cada fila t2 puede estar vinculada con cualquier número de filas t1, o ninguna

En el escenario explicado, creo que la denominación correcta debería ser (técnicamente hablando):
t2 es el padre de t1
t1 es hijo de t2

La tabla de la columna restringida se llama hijo , mientras que la tabla de la columna a la que se hace referencia se llama padre .

Personalmente, no me gusta este nombre, en SQL SERVER cuando consulta la vista sys.foreign_keys , la tabla secundaria se llama parent_object_id , mientras que la tabla referenciada se llama < código> referenced_object_id .. desde el punto de vista de la restricción en sí misma, podría ser correcto ... pero al final esto es muy confuso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top