2010-11-17 2 views
1

Мы поддерживаем удаление столбцов из таблицы через слой java. Каковы факторы, которые следует учитывать, прежде чем делать так, как 1.No экземпляров в таблице 2.behavior различных поставщиков баз данных и т.д.Факторы, которые следует учитывать перед удалением столбца из таблицы

+0

Извините, как это сделать – praveen

ответ

1

Ограничения на столбцы. Если у вас есть PK или FKs в столбцах, они могут (или не могут) быть удалены (легко) в зависимости от поставщика db. Хотя cols не могут «использоваться» пользователем, они могут зависеть от других cols/tables. Кроме того, общее согласие с duffymo. ОЧЕНЬ опасно, чтобы пользователи могли выбрасывать колоды. У Oracle есть возможность восстановить выпавшие столбцы, но на самом деле, вы хотите пойти по этому пути? Автогенерированные заявления о высылке всегда были чреваты опасностью.

1

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

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

+0

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

+0

Все еще неправильно. Это то, что должно быть сделано в консоли управления базой данных администратором базы данных, а не с вашим кодом приложения. Я оспариваю идею, что пользователи и ваш код могут «знать», что колонка больше не требуется. Звучит как дизайн, который нужно пересмотреть для меня. – duffymo

2

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

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

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

Это не вопрос Java или JDBC, это вопрос о дизайне базы данных. Вы должны поговорить с вашим администратором базы данных об этом.

Смежные вопросы