Полиморфные отношения 1 к 1 против ни одного - Ruby on Rails - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь оптимизировать дизайн моей базы данных для простоты использования и быстрых запросов.Что считается лучшим дизайном базы данных и более эффективным?Я хочу хорошо масштабироваться и не допускать замедления по мере увеличения базы данных.Я использую Postgres.Все эти отношения будут отношениями от 1 до 1.

Модели / таблицы:

Cars 
Trucks 
Boats 
Planes

Вариант использования A:

Форма поиска, которая запрашивает все записи в пределах определенного радиусаместоположения по всем 4 типам таблиц (автомобили, грузовики, лодки и самолеты).

вариант использования B:

Форма поиска, которая запрашивает все записи в пределах определенного радиуса местоположения в1 таблица (автомобили, грузовики, лодки или самолеты), но также имеет конкретные параметры запроса для этой таблицы / модели.

Вопрос о конструкции:

Какой дизайн рекомендуется?Рекомендуются какие-либо альтернативные схемы?

Схема 1:

4 таблицы с 7 общими полями, относящимися к адресу, включая поля широты и долготы и 50 полей полей, уникальных для каждой таблицы.Каждая таблица также имеет другое общее поле, «Обзор», которое является текстовым полем.

Поля адреса и обзора всегда обязательны.

Дизайн 2:

1 Таблица адресов (7 полей) - 1 к 1 Полиморфная ассоциация с автомобилями, грузовиками, лодками и самолетами

4 Таблицы (автомобили, грузовики, лодки, самолеты), с 50 полями, специфичными для каждой таблицы, включают текстовое поле Обзоробщие для всех таблиц.

Всегда требуются поля адреса и обзора.

Конструкция 3:

1 Таблица адресов (7 полей) - от 1 до 1 Полиморфное сопоставление с автомобилями,Грузовые автомобили, лодки и самолеты

4 таблицы (автомобили, грузовики, лодки, самолеты), с 50 полями, специфичными для каждой таблицы.Грузовики, лодки и самолеты

Адресные и обзорные поля обязательны для заполнения.

Конструкция 4

1 Таблица транспортных средств с (7 адресных полей и одно поле JSONB).Поле JSONB будет хранить все пользовательские поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...