Une base de donnée, doit être adaptée à l'usage qu'on doit en faire. (et permettre de suivre les évolutions de cet usage)en pratique oui, tu as soit un mois soit une semaine soit un an
mais en théorie, qu'est-ce qui empeche d'avoir un abonnement d'un mois et 3 jours?
Si tu veux pouvoir avoir des durées d'abonnements "exotiques", rien ne t'empêche d'avoir une table:
- idTypeAbonnement
- Unité (mois, jours, année)
- durée.
Qui permettra de facilement calculé une date de fin.
Un select pour récupérer toutes les durées d'un type d'abonnement, une boucle pour les parcourir, et les ajouter sucessivement pour arriver à la date de fin.
Mais honnêtement, je doute que ce genre de durée puisse exister dans la pratique, et que cela soit nécessaire de se casser la tête la dessus.