La manière dont tu comptes concevoir ta base de données semble pleine de bon sens au premier abord car sa motivation semble de vouloir éviter la redondance en ce qui concerne les jeux d'options possibles en utilisant deux tables distinctes et une clef étrangère. Ceci dit, j'attire ton attention sur le fait qu'avec MySQL le type boolean est en réalité un tiny int et que d'autre part, il est possible de représenter facilement un jeu de boolean avec un simple entier. Exemple:
1 2 3 4 5
| AirBag : True
GPS : False
Correcteur électronique de trajectoire : True
Mini bar : True
Gyrophare : False |
En affectant une puissance de deux précise à chaque option, tu obtiens pour ce set le nombre binaire 01101, soit en décimal: 13 ( = 1x2^0 + 0x2^1 + 1x2^2 + 1x2^3 + 0x2^4).
Conclusion, si tu peux représenter tout un jeu d'options avec un simple entier (et pas un bien gros, avec les 5 options ça fait 31, pas de quoi fouetter un chat), inutile de créer deux tables, il suffit d'ajouter une simple colonne pour représenter toutes les options. En plus, les "bitwise operations" (les opérations sur les binaires) sont très performantes et faciles à utiliser. Par exemple si je veux savoir si un véhicule a le mini bar, je fais en PHP: (8 correspond à 2^3, la quatrième option. Rien n'empêche de définir une constante:define('MINI_BAR', '8'); pour éviter des valeurs magiques dans le code).
Idem avec MySQL:
... WHERE options & 8 ...
C'est ma suggestion, mais si tu cherches des conseils avisés sur le design de bases de données, pose une question sur le forum adéquate pour avoir l'avis d'experts sur le sujet.
Pour ce qui est de récupérer l'état d'une checkbox pour la partie formulaire, je t'invite à consulter un tutoriel.
Partager