Удаление столбца из таблицы в производстве


8

У нас есть ситуация, когда нам нужно изменить отношение между двумя таблицами с m: 1 на m: n .

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

После переноса всех существующих данных из «дочерней» таблицы в таблицу перекрестных ссылок, было бы плохой идеей удалить исходный столбец внешнего ключа в дочерней таблице?

Если мы оставим это там, у нас будет технический долг. Но я не администратор базы данных и плохо понимаю последствия удаления столбца из таблицы. (Я знаю, что это возможно, но разве это плохая идея? Будет ли моя база данных ненавидеть меня за это?)

Спасибо

Ответы:


5

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

  1. Вы по-прежнему используете ключ базы данных для сопоставления ваших измерений.
  2. Ваши новые индексы в этой новой таблице измерений правильно покрывают индексы, когда они должны быть.
  3. Вы управляете этим количеством индексов, чтобы не перегружать Вставка / Обновления

Ваш новый дизайн имеет две таблицы измерений и таблицу фактов

  • Вот почему он перешел от m: 1 к m: n с таблицей «перекрестных ссылок». Мы называем это другим измерением.

Дизайн фактически реализовал нормализацию для достижения этой цели

  • Удалив зависимость, ваша команда будет лучше подготовлена ​​к тому, чтобы получать факты, которые могут изменить способ обработки ваших данных более осмысленным образом.

Примечание о размерах и фактах

  • Размеры для описательного контекста

Измерения обеспечивают контекст «кто, что, где, когда, почему и как», окружающий событие бизнес-процесса. Таблицы измерений содержат описательные атрибуты, используемые приложениями BI для фильтрации и группировки фактов. С учетом фактической таблицы фактов можно определить все возможные измерения.

Когда это возможно, измерение должно быть однозначным, если оно связано с данной строкой факта . Таблицы измерений иногда называют «душой» хранилища данных, поскольку они содержат точки входа и описательные метки, которые позволяют использовать систему DW / BI для бизнес-анализа. Непропорциональный объем усилий вкладывается в управление данными и разработку таблиц измерений, потому что они являются движущей силой пользовательского процесса BI.

  • Факты для измерений

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

Техники трехмерного моделирования Кимбалла

Мое предложение состоит в том, чтобы команда разработчиков знала, что применение правил в базе данных лучше, если это не влияет на производительность. Я не знаю размер или количественную оценку ваших заявлений DDL, чтобы полностью ответить на это, хотя.

Но будьте уверены, это должно быть позитивным изменением в вашей системе, поскольку теперь SQL Server не нужно будет проходить через все эти дополнительные данные, чтобы получить то, что действительно имело значение.


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

5

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

Я не могу говорить за вашу базу данных, но я бы вас за это ненавидел :-)

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

Мне трудно придумать причину, по которой не следует удалять устаревшую колонку и отношения. Это также обеспечит правильное изменение всего зависимого кода.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.