Mysql
 sql >> Database >  >> RDS >> Mysql

Posso utilizzare lo stesso vincolo di chiave esterna in due tabelle diverse?

Ci sono colonne, chiavi esterne (FK) e vincoli.

Puoi avere un nome di colonna in una tabella indipendentemente dalle altre tabelle.

Un FK è una tabella di riferimento e un set di colonne e una tabella di riferimento e un set di colonne. Tutti i nomi insieme identificano un FK. È una cosa concettuale su un database.

Un vincolo FK, essendo un vincolo, è una cosa il cui nome deve essere univoco nel database. Ha e fa rispettare un FK associato, vale a dire quello descritto nella sua dichiarazione. Puoi avere più vincoli FK in una tabella che applicano lo stesso FK.

Il DBMS ha nomi univoci automatici per i vincoli FK. Ad esempio, una parte del nome più una parte del numero in cui il vincolo è il numero vincolo FK della tabella con quel nome. Puoi effettivamente avere lo stesso testo di definizione del vincolo FK senza nome più volte in una tabella e in più tabelle, ciascuna per un vincolo FK diverso. (Quelli all'interno di una determinata tabella impongono lo stesso FK.)

Dovresti avere uno schema di denominazione univoco per quando vuoi nominarli. Dovrebbero essere coinvolti riferimenti e nomi di tabelle di riferimento e, se necessario, distinguere i nomi delle colonne.

In modo confuso, diciamo FK quando intendiamo il vincolo FK.

Quando dici "È la stessa chiave esterna in due tabelle diverse", ciò abusa dei termini. Sono coinvolti due diversi FK e corrispondenti vincoli FK. Intendi forse "sono le stesse colonne di riferimento e la tabella e le colonne di riferimento in entrambi i vincoli FK" o "è lo stesso testo che fa riferimento nelle dichiarazioni di vincolo FK di entrambe le dichiarazioni di tabella". Ma i nomi dei vincoli FK devono essere univoci.

Quando dici "In entrambi i casi si riferisce a un utente interno", stai confermando che il tipo e/o la tabella della colonna di riferimento sono gli stessi per entrambi i vincoli FK. Ma sono vincoli FK diversi per FK diversi.