Dans le cadre d'un projet, je dois pouvoir associer autant de catégorie (sur une base de l'infini et au delà).
Deux réflexion :
La première faire une table product_category pour lier le tout avec JOIN LEFT ...
db.product {
id=34
title = iPhone
}
db.category {
id=76
title = Smartphone
id=77
title = Téléphone
}
db.product_category {
id=1
product = 34
category = 76
...........................
id = 2
product = 34
category = 77
............................
etc.
}
ou alors, stocker l'ensemble des noms des catégories dans la table product_category sur une seule ligne :
db.product_category {
id=1
product=34
category = "Apple, Smartphone, Téléphone, 3G, 4G, etc.
}
et ne pas utilisé un
SELECT FROM WHERE AND ORDER BY ASC
mais plutôt un
SELECT FROM WHERE (MATCH ("mot clés") AGAINST ("mot clés*" IN BOOLEAN MODE)) ORDER BY ASC
Je voulais avoir vos retour sur cette réflexion en terme de d'organisation et sur les performances entre les deux méthodes ?
Merci d'avance
Bonjour imars,
Mettre tout à la suite dans une chaine c'est de la KKboudasse.
En base de données, il y a des règles, tu dois identifier le type de relation 1-1, 1-N ou N-N
Là typiquement tu es dans du N-N, il te faut créer une table intermédiaire 'product-category' qui reprend les deux clés id_product et id_category
Au niveau des requêtes c'est beaucoup plus façile (ajout, suppression, filtrage, comptage) et tu bénéficies des optimisations SQL (index).
En plus il n' y a pratiquement plus aucune limite en terme de nombre de 'product-category'.
ok Merci Huggy, je pense que le mot KKboudasse est suffisament claire pour oublier cette idée ;-)