Нормализация базы данных без доступа к исходным данным?

8

Я начал новую роль, которая имеет дело с большим количеством связанных данных. Наш источник всех этих данных - различные дампы Excel, извлеченные из баз данных, к которым у нас нет доступа. Предыдущий человек, исполнявший эту роль, использовал около десятка файлов Excel, чтобы собирать эти файлы данных, манипулировать ими и создавать отчеты.

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

Есть ли еще преимущества для нормализации данных, где мой единственный источник - дампы Excel со склада?

Как бы я нормализовал данные, если у меня нет возможности изменить формат отправки мне дампов?

Кроме того, мой план (в зависимости от бюджета) состоит в том, чтобы перейти от доступа к базе данных MS SQL.

Педрам
источник
4
Обычно вы НЕ хотите нормализовать данные, которые не являются транзакционными и будут использоваться только для отчетов. Если данные поступают из хранилища данных, они уже сделали тяжелую работу за вас. Просто загрузите его в Access и отправьте запрос.
HardCode
Просто чтобы уточнить, содержат ли дампы Excel необработанные данные или это предварительно агрегированные данные / данные отчета? Является ли источник данных источником экспорта какого-либо поставщика (т. Е. Можете ли вы общаться с тем, кто спроектировал соответствующие структуры данных)?
Джон Зигель
Дампы Excel поступают либо от поставщика, либо из нашего собственного хранилища данных, и поэтому это либо необработанные данные, либо необработанные данные с минимальным количеством преобразований (например, 0/1 изменяется на Да / Нет, или код Acct отображается на Описание учетной записи). Я могу общаться с теми, кто спроектировал структуры данных, но не может сказать, как они спроектированы. Чтобы дать некоторый контекст, я не администратор баз данных, но я пытаюсь найти лучшее решение для нашей команды с учетом бюджетных и политических ограничений.
Педрам

Ответы:

6

Да, у нормализации данных есть существенные преимущества, если вы готовы выполнять работу по ее достижению и поддержанию. Два фундаментальных преимущества для нормализации:

  • Целостность данных
  • Гибкость запроса

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

Доступ является упрощенной СУБД и включает в себя базовый процессор SQL, который позволяет писать запросы и, таким образом, пользоваться преимуществами нормализованных данных. Если вы в конечном итоге собираетесь перейти на SQL Server, который является полнофункциональной СУБД, то нормализация ваших данных теперь облегчит переход и позволит вам воспользоваться всеми возможностями SQL Server и его очень богатой реализацией SQL.

Как я уже упоминал в начале, для достижения этих преимуществ вы должны быть готовы выполнить предварительное программирование, чтобы преобразовать данные, поступающие из ваших различных дампов Excel, и отобразить строки и столбцы в этих таблицах в нормализованные таблицы. Это не тривиальное упражнение, но выполнимое с использованием программирования Access. Один из подходов заключается в создании таблиц, которые копируют данные как в источнике, и загружают в них данные. Они известны как этапстолы. Если у вас есть ненормализованные данные в таблицах Access, вы сможете легче писать код доступа с использованием SQL для извлечения данных из этих таблиц этапов, нормализации их, выявления проблем с качеством данных (скажем, одна и та же характеристика в двух разных дампах Excel, которые должны иметь то же значение, но не), и загрузите его в свои нормализованные таблицы. Это распространенный метод нормализации данных, поступающих из ненормализованного источника, очень распространенный в хранилищах данных на основе предметной области.

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

Я надеюсь, что это поможет объяснить, почему нормализация будет полезна для вас.

Тод эверетт
источник
Большое спасибо! Прекрасный ответ, который я должен убедить приложить искренние усилия, чтобы убрать этот беспорядок. Интересно, есть ли у вас рекомендуемые книги или другие источники для ознакомления с рекомендациями по нормализации баз данных и другими важными концепциями?
Педрам
3
Рад, что мог помочь. Вот хорошая ссылка на проектирование и нормализацию базы данных в целом - sqa.org.uk/e-learning/MDBS01CD/page_01.htm . Это очень хорошо, потому что это упрощает задачу и является самым простым для понимания из многих примеров, которые я видел. Хорошей книгой, особенно с учетом того, что вы можете перейти на SQL Server, является книга Луи Дэвидсона «Проектирование и реализация реляционной базы данных Pro SQL Server 2012». Эта книга содержит рекомендации в дополнение к нормализации и примеры для SQL Server. Для постановки см. «Инструментарий ETL хранилища данных» Ральфа Кимбалла. Удачи!
Тодд Эверетт