2016-11-23 1 views
0

Предположим, у меня есть домен Cat, как показано ниже.Какой вариант лучше расширить функцию 1) добавить свойство или 2) создать новую таблицу?

class Cat{ 

    String name 
    Integer age 

    } 

Теперь я хочу добавить новую функцию, которая присваивает метки котам.

Теперь я вижу два варианта достижения этого.

Вариант 1

добавить свойство к домену Cat

class Cat{ 

String name 
Integer age 
String tag 

} 

Вариант 2

Создать новую таблицу

class CatTagAssignment{ 

Cat cat 
String tag 

static mapping = { 

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

    } 

} 

Я тр ying, чтобы понять, какой подход лучше или какой из них я должен предпочесть, когда хочу добавить новую функцию? Я ценю это, если вы можете предложить плюсы и минусы обоих подходов и один подход всегда предпочтительнее другого. Я ценю вашу помощь! Благодаря!

ответ

1

Создайте модель тега (определите свои теги) и модель cattag (свяжите теги с кошками). Если вы когда-либо захотите «пометить» что-то еще, это простая таблица соединений для новой модели.

Что предпочитает? Игнорируйте код и рамки и подумайте о том, что вы моделируете.

Теги как отдельная сущность более многоразовые, а кошка остается кошкой (является тегом действительно атрибутом кошки?). Хорошие модели должны переноситься через базу данных, структуру, язык.

1

Используйте простейшую модель, которую вы можете получить. Не используйте дополнительные таблицы только для «ориентации объектов», если нет другого варианта.

я бы выбрал 1), как это самый быстрый способ загрузки объектов, хотя поиск тега может получить немного сложнее (like запроса)

+0

один минусов я замечаю, что в будущем добавлять все больше и больше столбцов в таблица сделает размер таблицы действительно большим. можем ли мы выбрать вариант 2 в таких случаях? Благодаря! – kofhearts

Смежные вопросы