leica69
Messages postés14Date d'inscriptionvendredi 12 février 2010StatutMembreDernière intervention20 février 2013
-
3 oct. 2008 à 17:54
leica69
Messages postés14Date d'inscriptionvendredi 12 février 2010StatutMembreDernière intervention20 février 2013
-
9 oct. 2008 à 19:00
Bonjour,
je souhaiterais concevoir une BDD mais avant d'attaquer j'aurais une question à vous poser.
En simplifiant, voici ma situation:
Je veux mettre en relation une table de médicaments et une table de propriétés (antitussif, expectorant, ...)
t_medicaments{
medic_id
medic_nom
}
t_proprietes{
prop_id
prop_nom
}
Chaque médicament a plusieurs propriétés.
Chaque propriété peut être exercée par plusieurs médicaments.
On se trouve donc dans une relation n-n
Quel est, d'après vous, le meilleur moyen de mettre en relation ces deux tables?
A/ Créer une 3ème table liant les 2 premières?
t_relations{
relation_id
relation_medic_id
relation_prop_id
}
ou
B/ Ajouter à la table médicaments un autre champ qui aurait une sorte de "array" des prop_id qui lui correspondent?
t_medicaments{
medic_id
medic_nom
medic_proprietes
}
pour obtenir qqch du genre:
medic_id medic_nom medic_proprietes 1 aspirine ['1';'32']
2 medicChose ['22';'32']
3 medicTruc ['43';'1']
Si je prends l'option B, pour trouver les médics ayant la propriété 23, je devrais faire un
SELECT * FROM t_medicaments WHERE 'medic_proprietes' LIKE '23'
Je n'ai jamais travaillé avec l'option B. Selon votre expérience, quelle méthode est préférable, pratique, conviviale???
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 7 oct. 2008 à 19:49
Hello,
et puis surtout, LIKE est TRES lent.
Sans compter que ça ne te faciliterait pas la tâche pour sortir des états/reporting/statistiques.
En effet, choix A sans hésiter. Sauf que je ne nommerais pas mes champs ainsi mais ça...c'est une simple préférence.