web-dev-qa-db-fra.com

Une table peut-elle avoir deux clés étrangères?

J'ai les tableaux suivants (clé primaire dans gras. Clé étrangère dans italique )

Table client

  • ID --- Nom --- Solde --- Account_Name --- Account_Type

Tableau des catégories de compte

  • Account_Type ---- Solde

Tableau des détails du client

  • Account_Name --- First_Name ---- Last_Name --- Adresse

Puis-je avoir deux clés étrangères dans la table Customer et comment puis-je l'implémenter dans MySQL?


mis à jour

Je développe un système de comptabilité basé sur le Web pour un projet final.

Catégorie de compte

Type de compte -------------- Solde

Les atouts
Passif
Équité
Dépenses
Le revenu

Atout

  • Asset_ID ----- Nom de l'actif ---- Solde ---- Type de compte

à recevoir

  • Receivable_ID ----- Receivable Name ------- Address -------- Tel ----- Asset_ID ---- Type de compte

Compte à recevoir

  • Transaction_ID ---- Description ---- Montant --- Solde ---- Receivable_ID ---- Asset_ID --- Type de compte

J'ai dessiné le diagramme ER (Entity relation) à l'aide d'un logiciel et lorsque je spécifie la relation, il a automatiquement ajouté les plusieurs clés étrangères comme indiqué ci-dessus. Le design n'est-il pas assez sonore?

18
Rav

Oui, MySQL le permet. Vous pouvez avoir plusieurs clés étrangères sur la même table.

Obtenez plus de détails ici Contraintes FOREIGN KEY

25
user319198
create table Table1
(
  id varchar(2),
  name varchar(2),
  PRIMARY KEY (id)
)


Create table Table1_Addr
(
  addid varchar(2),
  Address varchar(2),
  PRIMARY KEY (addid)
)

Create table Table1_sal
(
  salid varchar(2),`enter code here`
  addid varchar(2),
  id varchar(2),
  PRIMARY KEY (salid),
  index(addid),
  index(id),
  FOREIGN KEY (addid) REFERENCES Table1_Addr(addid),
  FOREIGN KEY (id) REFERENCES Table1(id)
)
26
user2915443

Les clés étrangères de votre schéma (sur Account_Name et Account_Type) ne nécessite aucun traitement ni syntaxe particuliers. Déclarez simplement deux clés étrangères distinctes sur la table Client. Ils ne constituent certainement pas une clé composite dans un sens significatif de la Parole.

Il existe de nombreux autres problèmes avec ce schéma, mais je soulignerai simplement que ce n'est généralement pas une bonne idée de créer une clé primaire à partir de plusieurs colonnes uniques ou de colonnes dans lesquelles l'une est fonctionnellement dépendante d'une autre. Il semble qu'au moins un de ces cas s'applique aux colonnes ID et Nom de la table Client. Cela vous permet de créer deux lignes avec le même ID (nom différent), ce que je suppose que vous ne voulez pas autoriser.

4
Marcelo Cantos