У меня небольшая проблема при попытке выбрать схему базы данных для текущего проекта. Я ни в коем случае не администратор баз данных.
Приложение анализирует файл на основе пользовательского ввода и вводит эти данные в базу данных. Количество полей, которые могут быть проанализированы, находится в диапазоне от 1 до 42 в текущий момент.
Текущий дизайн базы данных полностью плоский с 42 столбцами; некоторые имеют повторяющиеся столбцы, такие как адрес1, адрес2, адрес3 и т. д.
Это говорит о том, что я должен нормализовать данные. Тем не менее, целостность данных в данный момент не требуется, и как формируются данные, я смотрю на несколько соединений. Неплохо, но данные все еще находятся в соотношении 1: 1, и я все еще вижу много пустых полей в строке.
Поэтому я обеспокоен тем, что это не позволяет расширять базу данных или приложение. Если они хотят добавить больше полей для анализа (что они и делают), чем мне нужно создать еще одну таблицу и добавить еще один внешний ключ в таблицу ссылок.
Третий вариант - у меня есть таблица, в которой определены поля, и таблица для каждой записи. Итак, я подумал о том, чтобы создать таблицу, в которой будет храниться значение, а затем ссылки на эти две таблицы. Проблема в том, что я могу изобразить размер этой таблицы, увеличивающейся в зависимости от размера ввода. Если кто-то дает мне файл с 300 000 записей, то 300 000 x 40 = 12 миллионов, поэтому у меня есть некоторые оговорки. Тем не менее, я думаю, что если я доберусь до этой точки, я буду счастлив, что ее используют. Эта опция также позволяет более настраиваемое отображение информации, хотя немного больше работы, но немного доработки, даже если вы добавите больше полей.
Итак, проблема сводится к:
1. Текущий дизайн - это плоский файл, который затрудняет его расширение и не нормализуется.
2. Нормализуйте таблицы, хотя на данный момент реальных выгод нет, но требования меняются.
3. Нормализуйте его в пару имя-значение, и размер надежды не помешает.
Существует большое количество вставок, обновлений и выделений для этой таблицы. Так что производительность - это беспокойство, но я считаю, что высказывание - это дизайн сейчас, тестирование производительности позже?
Я, вероятно, просто упускаю что-то практичное, поэтому любые комментарии будут оценены, даже если это быстрая проверка работоспособности.
Спасибо за ваше время.