2016-11-23 2 views
0

Supposons que j'ai un domaine Cat comme indiqué ci-dessous.Quelle option est la meilleure pour étendre une fonctionnalité 1) ajouter une propriété ou 2) créer une nouvelle table?

class Cat{ 

    String name 
    Integer age 

    } 

Maintenant je veux ajouter une nouvelle fonctionnalité qui va assigner des étiquettes aux chats.

Maintenant, je vois deux options pour y parvenir.

Option 1

ajouter une propriété au domaine Cat

class Cat{ 

String name 
Integer age 
String tag 

} 

Option 2

Créer une nouvelle table

class CatTagAssignment{ 

Cat cat 
String tag 

static mapping = { 

     id composite: ['cat', 'tag'] 

    } 

} 

Je suis tr ying pour comprendre quelle est une meilleure approche ou laquelle devrais-je préférer quand je veux ajouter une nouvelle fonctionnalité? J'apprécie si vous pouvez offrir des avantages et des inconvénients des deux approches et si une approche est toujours préférable à l'autre. J'apprécie ton aide! Merci!

Répondre

1

Créez un modèle de tag (définissez vos tags) et un modèle cattag (reliez les tags aux chats). Si jamais vous voulez pouvoir "marquer" quelque chose d'autre, c'est une simple table de jointure au nouveau modèle.

Que préférer? Ignorez le code et les frameworks et réfléchissez à ce que vous modélisez.

Les balises en tant qu'entité séparée sont plus réutilisables, et un chat reste un chat (est-ce que l'étiquette est vraiment un attribut d'un chat?). Les bons modèles devraient être transférables à travers la base de données, le cadre, la langue.

1

Utilisez le modèle le plus simple que vous pouvez obtenir. N'utilisez pas les tables supplémentaires uniquement pour l'orientation de l'objet, sauf s'il n'y a pas d'autre option.

je choisirais 1) car il est le plus rapide possible de charger des objets, bien que la recherche de tag peut être un peu difficile (like requête)

+0

un contre je remarque que, à l'avenir en ajoutant de plus en plus de colonnes à un la table rendra la taille de la table vraiment grande. pouvons-nous opter pour l'option 2 dans de tels cas? Merci! – kofhearts