Я пересматриваю старую схему Oracle 10g, чтобы попытаться ввести некоторую нормализацию. В одной из больших таблиц есть текстовое поле, которое имеет не более 10-15 возможных значений. На мой взгляд, кажется, что это поле является примером ненужного дублирования данных и должно быть извлечено в отдельную таблицу.Справка по нормализации:
После изучения данных я не могу найти одну важную информацию, которая может быть связана с этим текстовым значением. В принципе, если бы я вытащил это значение и поместил его в свою собственную таблицу, это было бы единственным полем в этой таблице. Он существует сегодня как больше поля «флаг». Должен ли я создать таблицу с двумя столбцами с суррогатным ключом, сохранить ее как есть или сделать что-то совершенно другое? Я делаю больше вреда, чем пользы, пытаясь минимизировать дублирование данных в этой области?
Зависит от многих факторов: * Сколько строк, приблизительно? * делать много запросов, использовать это поле или многое пропустить? * Поле заполняется кем-то, заполняющим текстовое поле (могут ли конечные пользователи испортить его, набрав «офo» вместо «foo»?) * Возможно, клиентские приложения должны быть перезаписаны для изменения схемы? Мое первоначальное влечение - сказать, что у вас, вероятно, есть большая рыба, чтобы жарить, и можно было отключить этот рефакторинг. Тем не менее, это не огромный рефакторинг - вы могли бы профилировать его в обоих направлениях. – Jay
«Я реорганизую старую схему Oracle 10g». С тех пор, когда 10g стали * старыми *? Внезапно я чувствую себя древним. – APC