2008-10-02 11 views
1

Prenons le cas d'une application web simple article de nouvelles qui a une colonne de table de DB de "statut" qui est accessible par un bouton radio en série de:Meilleures pratiques - Les métadonnées et les données de définition fonctionnelle doivent-elles être mélangées?

Statut - [x] Publier [] projet [] Archive

... où "Publier" affiche un article publiquement et "Brouillon" et "Archiver" non. Fonctionnellement, "Draft" et "Archive" font la même chose mais portent des significations de méta-données supplémentaires. Les deux états fonctionnels de "show" et "hide" avec les méta-données de "publish", "draft" et "archive" sont entremêlés dans la même colonne de "status".

Est-ce une bonne pratique? Bien que ce soit un cas très simple, des cas plus importants peuvent révéler des failles avec une telle pratique (ou pas ...).

Répondre

2

Les états fonctionnels concernent le comportement - ils n'ont pas besoin d'être modélisés dans votre base de données. Si votre logique d'entreprise ne se préoccupe que d'afficher des articles ayant le statut "Publié", il n'y a aucune raison de doubler la complexité de vos données avec une colonne Afficher. Au moment où vous décidez que votre logique métier a besoin de données supplémentaires pour prendre la décision d'afficher ou de masquer un article (c'est-à-dire un indicateur IsApproved), vous pouvez stocker ces données. En regardant cela sous un angle différent - si vous deviez ajouter une autre colonne de "Show", alors que ferait un article avec un statut de "Draft" et "Show" = 1? Selon vos règles métier, c'est un état invalide.

0

Dans ce cas, je dirais que c'est la fonctionnalité appropriée.

Nous avons tous vu des WTF dans les médias où quelqu'un a frappé accidentellement [0] et le projet [x] en même temps.

De la façon dont il est maintenant, il est impossible d'afficher accidentellement un brouillon. Ceci est important dans les journaux comme les journalistes sont connus pour des choses comme:

John Doe, de StackOverflow a dit, "--- Je ne me souviens pas de ce que ce moche f * cker dit - Vérifiez la bande et remplissez plus tard"

Ce qui ne devrait probablement pas être imprimé.