Maison > Article > base de données > MySQL Advanced (1) Explication des clés primaires et étrangères
1. Qu'est-ce qu'une clé étrangère :
Clé primaire : elle identifie de manière unique un enregistrement. Elle ne peut pas être répétée et ne peut pas être vide. Elle est utilisée pour garantir l'intégrité des données. > Clé étrangère : Oui La clé primaire et la clé étrangère d'une autre table peuvent avoir des doublons ou des valeurs nulles et sont utilisées pour établir des relations avec d'autres tables. Par conséquent, si nous parlons de clés étrangères, cela doit impliquer au moins deux tables. Par exemple, les deux tables suivantes :
Il y a deux tables ci-dessus : la table des départements (dept) et la table des employés (emp). Id=Dept_id, et Dept_id est la clé étrangère dans la table des employés : comme les employés de la table des employés ont besoin de savoir à quel service ils appartiennent, ils peuvent trouver le service correspondant via la clé étrangère Dept_id, puis trouver diverses informations de champ dans le table de département. Pour que les deux soient liés. Par conséquent, la clé étrangère doit être créée dans la table esclave pour trouver la connexion avec la table maître ; la table esclave est chargée de maintenir la relation entre les deux.
2. L'utilisation de clés étrangères doit répondre aux conditions suivantes : (Le concept d'InnoDB est ici impliqué)
1. Les deux tables doivent être des tables InnoDB, et elles n'ont pas de tables temporaires. .
Remarque : InnoDB est le moteur de la base de données. Il existe deux moteurs MySQL courants : InnoDB et MyISAM, ce dernier ne prend pas en charge les clés étrangères.
2. Les colonnes correspondantes pour établir une relation de clé étrangère doivent avoir des types de données internes InnoDB similaires.
3. La colonne correspondante pour établir une relation de clé étrangère doit être indexée.
4. Si le symbole CONSTRAINT est explicitement donné, le symbole doit être unique dans la base de données. S'il n'est pas indiqué explicitement, InnoDB sera créé automatiquement.
Question d'entretien : Quel moteur de stockage votre base de données utilise-t-elle ? La différence ?
Réponse : Les plus courants sont MyISAM et InnoDB.
MyISAM : les contraintes de clé étrangère ne sont pas prises en charge. Les transactions ne sont pas prises en charge. Lors de l'importation de données par lots volumineux, des index seront créés lors de l'insertion des données. Par conséquent, afin d'améliorer l'efficacité de l'exécution, vous devez d'abord désactiver l'index, puis l'activer une fois l'importation terminée.
InnoDB : prend en charge les contraintes et les transactions de clés étrangères. Les index sont traités séparément sans référencer l'index.
Symbole DE CONTRAINTE : Vous pouvez donner un nom à cette contrainte de clé étrangère. Avec le nom, il sera très pratique de la retrouver dans le futur. Si ce paramètre n'est pas ajouté, le système attribuera automatiquement un nom.
CLÉ ÉTRANGÈRE : Utilisez le champ 1 du tableau comme champ de la clé étrangère.
RÉFÉRENCES : Mappe vers le champ 2 de la table principale.
ON Les quatre paramètres après DELETE : représentent l'accord effectué lors de la suppression des enregistrements dans la table principale.
RESTRICT (restriction) : Si la table maître que vous souhaitez supprimer possède des enregistrements correspondant à la table esclave en dessous, cette table maître ne sera pas supprimée.
CASCADE : Si les enregistrements de la table principale sont supprimés, tous les enregistrements associés de la table esclave seront supprimés.
SET NULL : Définissez la clé étrangère sur null.
AUCUNE ACTION : Ne rien faire.
Remarque : Généralement, RESTRICT et CASCADE sont les plus utilisés.
Beaux textes et images
Ce qui précède est le contenu de MySQL Advanced (1) Clés primaires et étrangères, plus Pour le contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !