Каковы плюсы и минусы выделения дополнительных атрибутов 1: 1 в их собственную отдельную модель.
Например, я только что столкнулся с кодом Rails следующим образом:
class Dogs << ActiveRecord::Base
# :id (pk), :breed, :weight, :height, :tail_length
end
class DogSpotsInfo << ActiveRecord::Base
# :dog_id (pk), :spot_color, :avg_spot_size, :num_spots
end
Новот как я бы это сделал (оставив необязательные поля spot пустыми):
class Dogs << ActiveRecord::Base
# :id, :breed, :weight, :height, :tail_length, :spot_color, :avg_spot_size, :num_spots
end
На уровне базы данных, я считаю, единственное отличие состоит в том, что запросы с дополнительными атрибутами потребуют еще одного соединения?
Есть ли еще какие-то минусы в первом подходе?Есть ли плюсы?
РЕДАКТИРОВАТЬ:
Я полагаю, на массивном столе собак, где говорят, что у 20% собак есть пятна, может быть, один за первый подход - это более быстрое последовательное сканирование, но я неНа 100% уверен в этом, и если это единственный профессионал, это кажется преждевременной оптимизацией.
Еще один профессионал, о котором я могу подумать, это то, что он делает модели меньше и аккуратнее.Но если это и есть цель, возможно, вы могли бы сделать это, не затрагивая структуру БД, имея что-то вроде has_spots :spot
?Какова лучшая практика здесь?