Domanda

Sto facendo alcune analisi FK dei nostri tavoli realizzando una regia grafico che rappresenta le dipendenze FK e quindi attraversa il grafico. Nel mio codice, nomina tutto usando il grafico diretto terminologia, ma mi piacerebbe avere qualcosa in più " facile da usare " nel rapporto.

In questo scenario:

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

t1.a deve esistere in t2.b. Quindi, quali parole dovrei usare negli spazi vuoti?

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

Molti TIA!

È stato utile?

Soluzione

Direi (le cose tra parentesi sono opzionali, ma le userei)

[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

Specificherei anche l'azione che si verifica all'eliminazione / aggiornamento se presente.

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

Altri suggerimenti

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

Qual è il pubblico per questo? Se sono le persone a capire uno schema relazionale, allora probabilmente lo farà. Se si tratta di persone non tecniche, in genere ho documentato nel mio strumento di modellazione (ERWin) il significato specifico delle relazioni.

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.

Direi qualcosa del genere

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 maggior parte delle persone non tecniche afferrerà la terminologia master / slave in modo molto intuitivo.

Potresti adottare il seguente modulo di frase:

  • Ogni riga t1 deve essere collegata esattamente a una riga t2
  • Ogni riga t2 può essere collegata con un numero qualsiasi di righe t1 o nessuna

Nello scenario spiegato penso che la denominazione corretta dovrebbe essere (tecnicamente parlando):
t2 è il genitore di t1
t1 è figlio di t2

La tabella della colonna vincolata si chiama figlio , mentre la tabella della colonna referenziata si chiama genitore .

Personalmente non mi piace questa denominazione, in SQL SERVER quando si esegue una query per la vista sys.foreign_keys la tabella figlio si chiama parent_object_id , mentre la tabella referenziata si chiama < code> referenced_object_id .. dal punto di vista del vincolo stesso, potrebbe essere giusto .. ma alla fine questo è molto confuso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top