Quelqu'un at-il des idées sur un bon moyen de modéliser le scénario suivant dans mon domaine/base de données pour une application .NET? Disons que j'ai certaines réductions qui peuvent être appliquées aux transactions de vente, mais les réductions ne doivent être appliquées que certains jours de la semaine à certains moments. Ainsi, par exemple, si une vente a lieu le lundi entre 9 heures et midi, la réduction doit être appliquée, mais si une vente a lieu le mardi entre ces heures, aucune réduction n'est appliquée. J'aimerais pouvoir gérer plusieurs périodes dans la même journée (ie - mercredi de 9h à midi et de 18h à minuit)Restrictions du jour de la semaine/de l'heure pour une application .NET
Répondre
Je l'ai fait quelque chose semblable à ceci
Votre table de SalePrice ressemblerait (tables de démarque damn):
SalePriceId guid, PK
ItemId guid, FK
StartTime Timespan
EndTime Timespan
DaysOfWeek DaysOfWeek (drapeau enum)
Remise à double
(Ceci est à partir de la vue de code; Timespan est une classe .NET qui est mappée dans Sql 2008)
DaysOfWeek est un drapeau enum contenant Sun-Sat.
Donc, pour trouver des ventes pour un élément qui sont en vigueur le mardi, vous feriez quelque chose comme
select *
from SalePrice
where ItemId = @itemGuid
and StartTime <= @time
and EndTime >= @time
and DaysOfWeek & @DOW = @DOW
C'est le modèle de base. Ne vous attendez pas à ce que le travail de copier-coller (je ne suis pas sûr de mes trucs de requête au niveau du bit), mais j'utilise ce modèle avec succès pour suivre les prix actuels.
vous devriez utiliser le type décimal pour Discount ou (money in SQL) – MaLio
J'écrirais simplement une méthode "GetDiscount" qui implémenterait la logique que vous êtes. décrivant. vous pouvez utiliser l'objet DateTime pour déterminer le jour et l'heure.
d'après votre description, il ne voit pas pourquoi cette solution simple habitude fonctionne pour vous. Qu'est-ce exactement ce que vous attendez?
Les jours et les périodes doivent être configurés différemment pour chaque remise. Il y aura donc une interface utilisateur qui permet à l'utilisateur final de spécifier les jours et les périodes pour chaque remise individuelle. Donc, j'ai besoin de persister ceux à la base de données avec la réduction à laquelle ils sont liés. – jnathanking
Je créerais simplement les deux classes suivantes en supposant que vous appliquiez la réduction à un ordre de type "comlete", pas à des éléments individuels.
class Order
{
Guid Id;
DateTime TimeStamp;
Discount Discount;
}
class Discount
{
Guid Id;
DayOfWeek Day;
TimeSpan StartTime;
TimeSpan EndTime;
Decimal Amount;
}
Ensuite, vous pouvez utiliser Order.TimeStamp.DayOfWeek
et Order.TimeStamp.TimeOfDay
et recherche une liste de réductions jusqu'à ce que vous trouviez un Discount
valide pour la commande traitée et stocker une référence sur l'objet Order
. Mapper ceci à une base de données devrait être assez simple - DayofWeek
peut être stocké en tant qu'entier, DateTime
et TimeSpan
sont également disponibles. La partie délicate contraint la relation un-à-plusieurs entre Order
et Discount
. On pourrait essayer d'utiliser des déclencheurs ou des contraintes de vérification, mais je suggérerais d'appliquer cette logique uniquement dans l'application parce que vous ne gagnez pas beaucoup en l'appliquant au niveau de la base de données.
- 1. Restrictions de sécurité pour un plug-in?
- 2. Quels types de restrictions sont en place pour m'empêcher de modifier les types incorporés dans .NET?
- 3. Cibler .NET 2.0 pour une petite application
- 4. C# .Net Obtenir le dernier jour du mois précédent à partir de la date du jour
- 5. Mise à jour du module DotNetNuke depuis une autre application
- 6. Quelle est la meilleure façon pour une application de formulaires Windows .NET de se mettre à jour?
- 7. Application .NET pour BlackBerry?
- 8. Contrôle de substitution dans une application .net
- 9. Restrictions XSD
- 10. Utilisation de 2 noms d'hôte pour la même application .NET
- 11. Types de connexion pour une application Web .net
- 12. Modification des couleurs du système pour une seule application (Windows, .NET)
- 13. Restrictions sur une base de données des journaux de transaction
- 14. Obtenir une application de calendrier PHP OOP pour mettre à jour deux tables à la fois
- 15. Redmon rediriger vers une application .NET Windows.Forms
- 16. Utilisation du compilateur ASP dans NAnt pour créer une application ASP .Net MVC
- 17. Créer un certificat pour une application cliente dans .NET
- 18. Objet du paramètre Restrictions dans le constructeur MetaObject?
- 19. Existe-t-il un contrôle pour une application .Net WinForm qui affichera du code HTML?
- 20. Interface utilisateur pour multiplateforme .net Application
- 21. VS2008 et Crystal Reports - Restrictions de déploiement?
- 22. Quelle est la meilleure base de données sql locale pour une application client .net?
- 23. Application Conseils .Net Spring pour objet HibernateTemplate
- 24. Comment masquer une clé de chiffrement dans une application .NET?
- 25. Quelle est la meilleure façon d'utiliser Response.Redirect pour un pop-up dans une application Web .NET?
- 26. Développer une nouvelle application avec .NET?
- 27. Chargement .net 3.5 wpf-forms dans une application .net 2.0
- 28. Meilleur IPC pour application VB6 et .net
- 29. Comment mettre à jour la date du système et/ou du temps en utilisant .NET
- 30. restrictions et interfaces variables de type générique
Cela ressemble étrangement à des devoirs. – Powerlord
@R.Bemrose: Je ne sais pas pourquoi tu penses ça, mais même si c'est le devoir, ça ne change rien. Il peut toujours demander des conseils sur StackOverflow. –
Je viens de penser que quelqu'un a dû mettre en œuvre quelque chose comme ça dans le passé et j'ai certainement des idées sur la façon dont cela peut être fait. Je voulais juste voir s'il y avait des idées auxquelles je n'avais pas pensé. – jnathanking