Почти или наполовину пустой столб стоит или лучше, чем другой стол? Как быстро написать код или сэкономить место в SQL? - PullRequest
0 голосов
/ 01 октября 2019

Я хотел бы знать, как выбирать между различными решениями для проектирования баз данных?

Полагаю, лучше всего описать мой вопрос, приведя пример.
Допустим, мы хотим создать базу данных для автомобилей. ,Каждый автомобиль имеет ряд свойств, которые мы хотим сохранить. У каждого автомобиля есть множество свойств, таких как:

Производитель,
Модель,
Цвет,
Возраст, ...

Но есть и свойства, которыетолько что найденный в подкатегории или в небольшой группе автомобилей, таких как:
Багажник,
Багажник на крышу,
Багажник,
4-х приводной, ...

Некоторые свойстваможет даже относиться только к менее чем 5% автомобилей. Существуют различные решения для решения этой проблемы.
- Первый - сбросить все в одну таблицу. Конечно нормализовано! (не упомянуто ниже)

- Вторым решением будет создание таблицы со свойствами, которые есть у каждого автомобиля. Добавление таблицы CartoDrawbar ... для установления связи m: m между редкими Свойствами и автомобилями.

- Третья возможность, которую я могу себе представить, - это создание таблиц для групп автомобилей, таких как внедорожники, Notchback, Truck, Compact. Пикап ... для группировки автомобилей с похожими свойствами. (Мои редкие Свойства не были лучшим выбором, чтобы походить на это).

- Последняя идея - создать таблицу со всеми общими свойствами и добавить столбец Char или Text, чтобы заполнить все, что нужно.

Но какое решение является лучшим или подходящим? Я забыл важный? Есть ли различия в скорости, размере файла или ... для рассмотрения? Или какие-то пороги, когда выбирать то или иное решение. У меня есть личный фаворит, но я не хочу на вас влиять, и у меня недостаточно знаний о реляционных базах данных и / или управляющем программном обеспечении, чтобы судить о скорости или размере файла таблицы.

1 Ответ

0 голосов
/ 01 октября 2019

Не существует «лучшего» решения. На самом деле, большинство ваших «редких» колонок больше похоже на флаги - у автомобиля полный привод или нет, у автомобиля есть багажник на крышу или нет.

Мое предложение состоит в том, чтобыпоместите их в одну таблицу с отдельными столбцами соответствующего типа.

Затем, если у вас действительно есть дополнительные функции, такие как, например, число передач в механической коробке передач, вы можете подумать о том, как реализоватьсписок. В настоящее время большинство баз данных поддерживают JSON, и это было бы естественным выбором для таких элементов.

...