0

Je travaille actuellement sur un algorithme évolutif qui va essayer de trouver une configuration optimale des paramètres pour un problème donné.Prévention des enregistrements en double dans MySQL

J'essaie de créer des enregistrements dans une table MySQL qui va stocker une configuration où chaque paramètre sera représenté comme une colonne de table. Si une configuration a déjà été tentée, je voudrais éviter qu'elle ne soit dupliquée.

Existe-t-il un mécanisme pour faire cela au niveau base de données/ORM ou devrais-je créer une logique programmatique pour éviter les entrées en double?

+2

slap une clé unique sur les champs pertinents dans votre tableau? –

+0

L'unicité sera une combinaison de toutes les colonnes. Je ne pense pas qu'une clé primaire suffira. La recherche doit être effectuée sur toutes les colonnes pour déterminer si la configuration a déjà été tentée ou non. –

+0

qui est ce que la clé unique fait. 'alter table foo ajoute une clé unique (field1, field2, ..., fieldN)'. les clés peuvent avoir plusieurs champs, après tout ... –

Répondre

2

est-il un mécanisme pour le faire à la base de données/ORM niveau

Oui, déclarer ou définir la colonne Configuration comme Primary Key ou Unique Key pendant que vous créez votre table pour éviter les doubles emplois. Je n'ai pas mentionné la colonne configuration parce que je ne suis pas sûr de la structure de votre table, mais si elle implique plusieurs colonnes, vous pouvez toujours en faire une clé composite. Pourquoi vous êtes inquiet à propos de la recherche de clés. Si vous concevez correctement votre table avec un indice correct, vous ne devriez pas vous inquiéter à ce sujet.

Dites que votre col1, col2, col3, col4 fait partie de la configuration et que vous voulez qu'ils soient uniques. Ensuite, faites-les en tant que clé primaire composite en disant

primary key (col1, col2, col3, col4) 
+0

Rahul, je ne pense pas que ce soit le cas, l'unicité sera une combinaison de toutes les colonnes. Une clé primaire ne suffira pas car la recherche doit être effectuée sur toutes les colonnes pour déterminer si la configuration a déjà été tentée ou non. –

+0

@PrimeByDesign, j'ai mentionné la colonne 'configuration' car je ne suis pas sûr de la structure de votre table, mais si elle implique plusieurs colonnes, vous pouvez toujours en faire une clé composite. Pourquoi vous êtes inquiet à propos de la recherche de clés. Si vous concevez correctement votre table avec un indice correct, vous ne devriez pas vous inquiéter à ce sujet. – Rahul

+0

ça marche @PrimeByDesign – Drew