Je travaille actuellement avec une grande base de données dont j'ai absolument le besoin de de voir toutes les liaison entre les table avec le concepteur sous phpMyAdmin , cependant , je vois qu'il n'y a pas de clé étrangères , j'ai repéré quelques liaisons assez évidentes a l’œil nu entre des tables , et j'arrive bizarrement a faire des jointure entre les tables sans les clés étrangères , j'ai vu que toutes les tables ont des index , je suppose que c’est une autre manière de relier les tables ,pouvait vous donc m'éclaircir par rapport a cela ? peut-être me conseiller un cours particulier sur le sujet ou une astuce pour transformé la base donnée en une base a clés étrangères , merci d'avance !
Les jointures fonctionnent sans contrainte ... Il suffit que les colonnes soient de même type dans les tables liées, pas plus ...
M.YassineLguirati a écrit:
j'arrive bizarrement a faire des jointure entre les tables sans les clés étrangères
Les clés étrangères n'ont pas pour rôle de permettre les jointures entre les tables ... Ce sont "simplement" des contraintes d'intégrité qui vont empêcher d'utiliser des valeurs incohérentes entre la table de référence et la table liée.
M.YassineLguirati a écrit:
toutes les tables ont des index , je suppose que c’est une autre manière de relier les tables
Les index n'ont pas pour rôle de permettre les jointures entre les tables ... Ce sont "simplement" des contraintes qui vont assurer de meilleures performances, notamment dans les jointures ou les recherches ...
M.YassineLguirati a écrit:
une astuce pour transformer la base donnée en une base a clés étrangères
Pas d'autre astuce que de créer manuellement les contraintes nécessaires ... Personne ne pourra les inventer à ta place ...
M.YassineLguirati a écrit:
une grande base de données
C'est à dire ? Combien de tables dans le schéma ? C'est ce nombre qui va induire la quantité de travail pour créer les FK ...
Les jointures fonctionnent sans contrainte ... Il suffit que les colonnes soient de même type dans les tables liées, pas plus ...
M.YassineLguirati a écrit:
j'arrive bizarrement a faire des jointure entre les tables sans les clés étrangères
Les clés étrangères n'ont pas pour rôle de permettre les jointures entre les tables ... Ce sont "simplement" des contraintes d'intégrité qui vont empêcher d'utiliser des valeurs incohérentes entre la table de référence et la table liée.
M.YassineLguirati a écrit:
toutes les tables ont des index , je suppose que c’est une autre manière de relier les tables
Les index n'ont pas pour rôle de permettre les jointures entre les tables ... Ce sont "simplement" des contraintes qui vont assurer de meilleures performances, notamment dans les jointures ou les recherches ...
M.YassineLguirati a écrit:
une astuce pour transformer la base donnée en une base a clés étrangères
Pas d'autre astuce que de créer manuellement les contraintes nécessaires ... Personne ne pourra les inventer à ta place ...
M.YassineLguirati a écrit:
une grande base de données
C'est à dire ? Combien de tables dans le schéma ? C'est ce nombre qui va induire la quantité de travail pour créer les FK ...
Merci pour ta réponse ! la base contient 52 tables , j'ai pour mission de détecter des données venant du site dans la base sachant que je n'ai pas le code du site et du coup je suis obligé , a mon avis , de relié toutes les tables pour enlever du moins toutes les ambiguïté ..
52 tables ce n'est pas énorme, si les noms (tables, colonnes) sont cohérents ce sera assez vite fait d'identifier les relations.
Ensuite tu pourras ajouter les contraintes de clés étrangère au fur et à mesure, en espérant qu'il n'y ait pas d'incohérence existante qui bloquerait leur mise en place.
Cannot add or update a child row: a foreign key constraint fails (`nombase`.`#sql-1a50_1ee`, CONSTRAINT `listing_id_FKAUTPER` FOREIGN KEY (`author_id`) REFERENCES `people` (`id`)
philodick a écrit:
C'est sans doute que la contrainte n'est pas respectée a priori.
Même sans a priori ... L'erreur t'indique qu'il y a une valeur dans la colonne author_id qui n'existe pas dans la colonne id de la table people ...
Benzouye a écrit:
tu pourras ajouter les contraintes de clés étrangère au fur et à mesure, en espérant qu'il n'y ait pas d'incohérence existante qui bloquerait leur mise en place.
Il y a donc des incohérences, l'intégrité de la base est compromise ... justement parce que les contraintes de clé étrangère n'étaient pas en place ...
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
N'oubliez pas d'activer les erreurs PDO.