Я не думаю, что присоединения должны быть вашей причиной для беспокойства - вы, вероятно, обнаружите, что компрометация проекта для сокращения издержек JOIN, скорее всего, будет напрасной тратой усилий.Задержка вашей сети в БД может быть выше, чем издержки JOIN.
Способ обработки дополнительных значений, введенных пользователем, зависит от того, как вы хотите, чтобы они обрабатывались:
Рассматривайте их как истинные дополнительные значения.Они добавляются в VEHICLE_TYPE в базе данных и после добавления доступны для выбора всем пользователям.
Рассматривать их как пользовательские значения для этого конкретного поля.Т.е. VEHICLE_TYPE включает в себя тип «Other», и пользователь может вводить дополнительные данные в отдельном поле.Они не предоставляются другим пользователям и не отображаются в раскрывающемся списке.
Чтобы получить проверку на уровне объекта, выполните проверку на соответствие VEHICLE_TYPE.Это может быть сделано автоматически с современными OIM и ORM.Они позволяют вам определять правила проверки для модели, которые затем передаются вперед в пользовательский интерфейс для раннего обнаружения ошибок проверки и обратно в базу данных для обеспечения согласованности хранилища данных.
Вы можете хранить идентификатор транспортного средства как обычный ключили сама строка типа (RW, FW и т. д.).При использовании самой строки типа вам не нужно присоединяться к таблице VEHICLE_TYPE.Вы можете представить строку напрямую или выбрать строки представления из комплектов ресурсов, если требуется локализация.
РЕДАКТИРОВАТЬ: чтобы увидеть, как ORM и OIM могут переносить метаданные проверки модели обратно в БД и в пользовательский интерфейс.см. DZone: Проверка подлинности Hibernate 4 и Метавиджет .С помощью JSR 303 вы можете проверять свои объекты в пользовательском интерфейсе, бизнес-уровне и серверной части.