Что важнее, нормализация или простота кодирования? - PullRequest
0 голосов
/ 06 мая 2011

У меня есть таблица Excel, которую я собираюсь превратить в БД для сбора данных и создания интерактивного приложения.Есть около 20 столбцов и 80 000 записей.Практически все записи имеют около половины своих данных столбца как нулевые, но в каком столбце есть данные, случайные для каждой записи.

Возможны следующие варианты:

  1. Создатьболее нормализованная БД с таблицей для каждого столбца и использование 20 объединений для просмотра всех данных.Я думаю, что преимуществами будет БД без значений NULL, поэтому размер будет меньше.Одним из основных минусов было бы больше кода для обновления каждой таблицы со стороны приложения.

  2. Создайте плоский файл с одной таблицей, содержащей все столбцы.Я полагаю, что со стороны приложения будет проще делать обновления, но в результате получится таблица, в которую будет загружена пустая область данных.

Ответы [ 5 ]

2 голосов
/ 06 мая 2011

Я не понимаю, почему вы думаете, что обновление нормализованной базы данных на сложнее , чем на плоском столе. Скорее наоборот.

Подумайте о вставке связи между клиентом и продуктом (в основном, заказом). Вы должны:

  1. выберите строку, которая описывает остальные данные, но содержит пустые значения или что-то в столбцах продукта
  2. Вы должны обновить столбцы продукта
  3. Вы должны вставить ОГРОМНУЮ строку в БД

А как насчет первого раза? Что вы делаете с начальными нулями? Вы изменяете свои выборы, чтобы игнорировать их? Что делать, если вы хотите нули?

Что если вы удалите последний продукт? Вы изменяете это в обновлении и устанавливаете нулевые значения только для нескольких столбцов?


Объединяет в сторону, работа с нормализованной таблицей тривиальна по конструкции. Вы платите за его тривиальность с производительностью, это фактический компромисс.

1 голос
/ 06 мая 2011

Нормализация не должна выполняться для всех столбцов, поэтому между двумя представленными вами вариантами есть середина.Хорошее практическое правило заключается в том, что если у вас есть столбцы, значения которых часто повторяются в записях, они могут быть хорошими кандидатами для нормализации в одну или несколько отдельных таблиц.Помещение каждого столбца в отдельную таблицу и объединение между ними почти наверняка переусердствует.

1 голос
/ 06 мая 2011

Как правило, нормализованные базы данных будут легче писать код, так как код SQl разработан с учетом нормализованных таблиц.

1 голос
/ 06 мая 2011

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

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

0 голосов
/ 06 мая 2011

Не слишком нормализуй.По мере роста вашего приложения сложно поддерживать каноническую модель.Хранение дешево.Не дайте себя одурачить, потому что проблемы, которые были действительны 20 лет назад.Не нужно идти nosql, если вам это не нужно.

...