Supposons que nous ayons un CMS multi-site et que chaque site web de ce CMS ait 2 options: preview_width et preview_height. Nous savons que chaque option devrait avoir une valeur par défaut si elle n'est pas définie par l'utilisateur. Nous savons également que la liste des options sera étendue dans un proche avenir. Quelle est la meilleure pratique pour stocker ces options dans la table MySQL?Enregistrer la liste des options extensible dans la table MySQL? Meilleur entrainement?
Je sais que trois pratiques et les deux ont ne dispose pas (ou peut-être je ne sais pas comment utiliser correctement ces pratiques) ...
pratique n ° 1: Chaque option est représentée comme colonne dans
options
tableau.Inconvénient: Nous devons modifier
options
la table à chaque fois que nous l'ajout d'une nouvelle option. Pratique n ° 2: Toutes les options sont stockées comme objet/tableau sérialisé dans la colonne options de la table des sites.Inconvénients: Pour ajouter une nouvelle option avec une valeur par défaut - nous avons besoin de boucler toutes les lignes et modifier les options un numéro de série; ou nous pouvons ajouter cette option quand elle est demandée et trouvée absente. Pratique n ° 3: Toutes les options sont stockées dans la table des options avec la structure: id, site_id, option_name, option_value. Inconvénients: Lors de l'ajout d'une nouvelle option, nous devrions mettre à jour cette table avec des options par défaut pour chaque site Web.
Quel est votre choix? Quelle pratique choisir quand de nouvelles options sont ajoutées très souvent? Y a-t-il d'autres pratiques?
Merci.
Btw .. une autre variante de la pratique # 3 est de placer les valeurs par défaut dans des lignes avec 'site_id = 0'. Donc nous pouvons toujours obtenir les options en cours par 'array_merge (get_options (site_id = 0), get_options (site_id = 12345))' Que pensez-vous? – Kirzilla
Je pensais juste à utiliser 'site_id = null' comme valeur par défaut. – klew