2010-09-17 3 views
1

J'ai une base de données qui ne possède pas de clé étrangère. J'ai fait quelques vérifications et il y a un peu de disques orphelins.Conseils pour créer des clés étrangères dans une base de données existante

Son une base de données assez grandes tables 500 + et je suis à la recherche à la possibilité de construire les clés étrangères avant.

autres que la pêche au chalut que chaque table unique au fil du temps?

Est-ce que quelqu'un a déjà vécu ce processus auparavant et peut-être offrir quelques idées ou conseils sur la façon de rendre le processus un peu plus facile.

Tout conseil d'aide apprécié.

Répondre

1

Je suppose que vous voulez dire "n'a pas de clé étrangère contraintes" ... s'il n'y avait pas de clés étrangères, vous ne sauriez pas quels enregistrements correspondent.

Les champs de clé primaire et étrangère ont-ils le même nom? Comme dans, la table PK a un champ "CustomerId" et la table FK a également un champ "CustomerId"? Si c'est le cas, vous pouvez interroger les propriétés de la colonne (peut-être en utilisant INFORMATION_SCHEMA, vous n'avez pas mentionné de SGBDR) pour trouver des relations implicites. Faites juste une requête pour toutes les tables qui ont un champ appelé "CustomerId" qui n'est pas un PK et il y a un bon pari (mais pas certain) que ces tables devraient avoir une contrainte FK sur la table Customer. Vous pouvez même utiliser la sortie de la requête pour générer le DDL pour créer les contraintes.

+0

Ce n'est pas une mauvaise idée dans la plupart des cas, les clés correspondent. Et oui je veux dire "contraintes" –

0

Vous pouvez travailler des tables les plus grandes aux plus petites ou commencer par la zone la moins performante de la base de données. L'ajout de clés devrait grandement améliorer votre performance, mais vous devrez d'abord résoudre les lignes orphelines. Vous pourriez avoir besoin des commentaires de l'entreprise pour cela. Attendez-leur à être très confus au sujet de ce qui se passe.

Questions connexes