web-dev-qa-db-fra.com

Comment créer une clé étrangère dans phpmyadmin

Je veux faire de Doctorid une clé étrangère à la table de mes patients.

Toutes mes tables ont donc été créées - le problème principal est que, lorsque je vais dans la vue table> structure>, seule la clé primaire apparaisse me permettant de créer une clé étrangère (et c'est déjà la clé primaire de la table concernée que je veux conserver - c’est-à-dire que le patient de la table patient est activé, mais que l’ID du médecin (j’ai une table de médecin également - n’est pas activé).

J'ai une autre table avec deux clés composites (medicineid et patientid), ce qui me permet de changer les deux

Dois-je changer l'indice d'ID de médecin dans la table des patients avec autre chose? les deux ne peuvent pas être des clés primaires car l'ID du patient est la principale pour la table des patients - le médecin est l'étranger.

table

J'espère que tout le monde peut aider

Sincères amitiés

11
laurajs

Vous pouvez le faire à l'ancienne ... avec une instruction SQL qui ressemble à ceci

ALTER TABLE table_name
    ADD CONSTRAINT fk_foreign_key_name
    FOREIGN KEY (foreign_key_name)
    REFERENCES target_table(target_key_name);

Cela suppose que les clés existent déjà dans la table correspondante

17
Jon Story

La clé doit être indexée pour appliquer la contrainte de clé étrangère. Pour ce faire, suivez les étapes.

  1. Structure de la table ouverte. (2ème onglet)
  2. Voir la dernière action de colonne où plusieurs options d’action sont présentes. Cliquez sur Index, la colonne sera indexée.
  3. Ouvrir la vue relationnelle et ajouter une contrainte de clé étrangère.

Vous pourrez attribuer DOCTOR_ID comme étranger maintenant.

15
Alok Patel

Lorsque vous créez un tableau, vous pouvez donner comme suit.

CREATE TABLE categories(
cat_id int not null auto_increment primary key,
cat_name varchar(255) not null,
cat_description text
) ENGINE=InnoDB;


CREATE TABLE products(
   prd_id int not null auto_increment primary key,
   prd_name varchar(355) not null,
   prd_price decimal,
   cat_id int not null,
   FOREIGN KEY fk_cat(cat_id)
   REFERENCES categories(cat_id)
   ON UPDATE CASCADE
   ON DELETE RESTRICT
)ENGINE=InnoDB;

et quand après la table créer comme ça

   ALTER table_name
    ADD CONSTRAINT constraint_name
    FOREIGN KEY foreign_key_name(columns)
    REFERENCES parent_table(columns)
    ON DELETE action
    ON UPDATE action;

Suivre l'exemple pour cela.

CREATE TABLE vendors(
    vdr_id int not null auto_increment primary key,
    vdr_name varchar(255)
)ENGINE=InnoDB;

ALTER TABLE products 
ADD COLUMN vdr_id int not null AFTER cat_id;

Pour ajouter une clé étrangère à la table products, utilisez l'instruction suivante:

ALTER TABLE products
ADD FOREIGN KEY fk_vendor(vdr_id)
REFERENCES vendors(vdr_id)
ON DELETE NO ACTION
ON UPDATE CASCADE;

Pour déposer la clé

ALTER TABLE table_name 
DROP FOREIGN KEY constraint_name;

J'espère que cette aide pour apprendre les clés étrangères fonctionne

2
Yagnik Detroja

Pour pouvoir créer une relation, la table Storage Engine doit être InnoDB. Vous pouvez éditer dans Opérations. Storage Engine Configuration

Ensuite, vous devez vous assurer que la colonne id de votre table principale a été indexée. Il devrait apparaître à la section Index de Structure.

Index list

Enfin, vous pouvez voir l'option Vue Relations dans Structure Onglet. Lors de l’édition, vous pourrez sélectionner la colonne parente dans la table étrangère pour créer la relation.

enter image description here

Voir pièces jointes. J'espère que cela pourrait être utile pour n'importe qui.

0
Sky Games Inc