Bonjour à tous,

ma question concerne l'utilisation des index avec mysql.

Dans ma base de données, j'ai des publications associées à des lieux. Ces lieux sont répartis en 2 familles distinctes. En langage base de données, ça donne donc 3 tables :

- 1 table publications
- 1 table lieux_1
- 1 table lieux_2

Une publication ne peut être associée qu'à un seul lieu, je vais donc créer la jointure au niveau de la table publications. Mais quelle est la meilleure solution ?

1) 2 champs : "lieu_1_id" et "lieu_2_id". Une publication peut être associée au maximum à un seul lieu, l'un de ces 2 champs sera donc forcément vide. Il se peut aussi que les 2 soient vides.

2) 1 seul champ "lieu_id" de type varchar, contenant : <lettre initiale pour déterminer la table><lieu_id>
Exemple:
x123 pour le lieu d'id 123 de la table lieux_1
y123 pour le lieu d'id 123 de la table lieux_2

Avantage de la seconde solution : 1 seul index, contre 2 pour la première solution.

Désavantage : index sur un Varchar. Besoin d'utiliser la fonction sql SUBSTR pour effectuer mes jointures (pour isoler l'id).

Quelle solution vous semble la plus efficace ?

Merci d'avance pour votre aide