0

Dans mon domaine:Modélisation d'une facture de téléphone cellulaire: devrais-je utiliser des associations d'héritage à table unique ou des associations polymorphes?

  • Les utilisateurs ont de nombreux projets de loi
  • Bills ont beaucoup BillItems (et donc les utilisateurs ont beaucoup BillItems par les projets de loi)
  • Chaque BillItem est l'un des:
    • Appel
    • SMS (message texte)
    • MMS (message multimédia)
    • données

Voici les propriétés de chaque BillItem individuel (certains sont communs):

alt text http://dl.dropbox.com/u/2792776/screenshots/2010-04-13_2146-1.png

Ma question est de savoir si je dois modéliser cet arrangement avec l'héritage table unique (c.-à- , une table "bill_items" avec une colonne "type") ou un polymorphisme (tables séparées pour chaque type BillItem), et pourquoi.

Répondre

2

Je voudrais aller avec une association polymorphique car il y a déjà assez de champs qui ne s'appliquent pas à tous/la plupart des éléments. STI gaspille beaucoup d'espace, mais en ignorant l'optimisation, c'est aussi un design très rigide comme la manière la plus naturelle d'étendre cette conception lorsque plus de champs seront nécessaires pour les ajouter à la table. D'autre part, l'association polymorphique ne spécifie qu'un contrat que tous les implémenteurs doivent suivre. Dans ce cas, le contrat stipule simplement qu'un article doit être facturable et permet à chaque type d'article d'évoluer de manière indépendante. S'il y a une logique à partager entre ces différentes classes, il pourrait être préférable de simplement le convertir en un module et l'inclure.

Questions connexes