Que faites-vous avec un morceau unique de données qui doit être persisté?

StackOverflow https://stackoverflow.com/questions/714885

  •  23-08-2019
  •  | 
  •  

Question

Récemment, j'ai demandé d'ajouter quelque chose à l'administrateur d'un site où il peut « caractéristique » quelque chose.

Pour cette discussion disons que c'est un 'article vedette'.

Alors naturellement que nous avons déjà un modèle de base de données des « articles » et il a ~ 20 colonnes comme il est, donc je ne me sens vraiment pas comme les ballonnements il plus qu'il est déjà.

Mes options:

  1. Tack sur un bool 'vedette' (ou int) et se rendre compte qu'une seule chose sera présenté à un moment donné

  2. Créer un nouveau modèle pour tenir cela et tout autre élément caractéristique-fluage qui pourraient apparaître.

  3. Je prends vos suggestions! ;)

Que faites-vous dans ce cas? Je viens à travers ce temps en temps et je déteste avoir à virer de bord sur une autre colonne à quelque chose. Ces informations ne doivent être persisté.

Était-ce utile?

La solution

Si un seul article peut être présenté à un moment où il est un gaspillage d'ajouter une colonne bool. Vous devez monter un niveau et ajouter une colonne pour la FeaturedArticleID. Avez-vous une table Site_Settings?

Autres conseils

Je serais probablement ajouter un simple tableau à deux colonnes qui est essentiellement un magasin clé-valeur. Ensuite, ajoutez une nouvelle colonne avec des valeurs telles que (featured_article_id, 45) ou quel que soit le premier ID est sélectionnée.

Edit: comme indiqué dans les commentaires par rmeador, il convient de noter que ce n'est une bonne solution aussi longtemps que les choses restent relativement simples. Si vous avez besoin de stocker des données plus complexes, envisagez de déterminer une solution plus souple.

Vous pouvez utiliser un modèle extensible comme ayant une table d'attributs, puis une table de liaison pour former un grand nombre à plusieurs entre les articles et les attributs. De cette façon, ces sortes de fonctions ne nécessitent pas le schéma à modifier.

Avoir une sorte de table global_settings avec colonnes parameter_name et PARAMETER_VALUE. Mettez id article en vedette ici.

Pour des trucs rapide et sale comme ça, je préfère inclure une sorte de tableau Paramètres:

CREATE TABLE Settings (
    SettingName NVARCHAR(250) NOT NULL,
    SettingValue NVARCHAR(250)
)

Si vous avez besoin par utilisateur ou les paramètres par client, au lieu de ceux globaux, vous pouvez ajouter une colonne pour identifier à l'utilisateur / client spécifique. Ensuite, vous pouvez simplement ajouter une ligne pour « FeaturedArticle » et analyser l'ID d'une chaîne. Il est pas super optimisé, mais est très flexible plaintext, qui ressemble exactement ce dont vous avez besoin.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top