|
Как переименовать таблицу в IbExpert
|
|||
---|---|---|---|
#18+
Потребность в переименовании таблицы - вполне естественна при развитии БД, так же, как переименование полей, функций, исключений, представлений, доменов и всего остального. Для чего это нужно - очень хорошо написано в книгах по рефакторингу (как программного кода, так и баз данных (да, даже такие уже есть)). В своем проекте я переименовывал ВСЕ таблицы минимум три раза. Первый - переход к префиксам (STREET -> DIR_STREET), второй - переход к категориям (DIR_STREET -> DIR_ADDRESS_STREET), третий - переход к $ как разделителю (DIR_ADDRESS_STREET -> DIR$ADDRESS$STREET). Озвучу следующие причины переименования таблицы: 1. Внесения ошибки в имя (человеческий фактор); 2. Изменение назначения таблиц, что должно отразиться на ее имени; 3. Изменение принципов именования метаданных; 4. Переработка унаследованных БД. 5. Расширение функций проекта. Например, был справочник узлов газоснабжения "DIR$GASSUPPLY$UNIT" (ГРУ/ГРП). Там было еще несколько справочников, относящихся к газоснабжению. По прошествии времени выяснилось, что надо добавить справочники: типов узлов, назначения, источников газа, связки услуг и узлов, и еще несколько. В итоге в группе DIR$GASSUPPLY$ образовалась мешанина из справочников различных областей. Путем переименования всё, что относится к ГРУ/ГРП, было выделено в отдельную группу DIR$UNIT$. P.S. Здесь рассматривалось только теоретическое обоснование, а не вопрос сложности этой операции. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 05:08 |
|
Как переименовать таблицу в IbExpert
|
|||
---|---|---|---|
#18+
CyberMaxретий - переход к $ как разделителю (DIR_ADDRESS_STREET -> DIR$ADDRESS$STREET)А где профит от такого финта ушами? Мне правда интересно... зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 07:50 |
|
Как переименовать таблицу в IbExpert
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyCyberMaxретий - переход к $ как разделителю (DIR_ADDRESS_STREET -> DIR$ADDRESS$STREET)А где профит от такого финта ушами? Мне правда интересно... зачем? Уже было ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 08:09 |
|
Как переименовать таблицу в IbExpert
|
|||
---|---|---|---|
#18+
NickDeekdvохрененно частая операция, что-ли? Операция очень редкая, т.к. практически невозможная. Но очень полезная. Часто хочется переименовать название таблицы в другое, более понятное, более соответствующее тому что в ней находится. Было бы классно если бы можно было переименовывать имена полей, таблиц, триггеров, генераторов, процедур, UDF и пр. без дропания зависимостей. Если в таблице пара сотен триггеров и процедур использующих поле, то его переименование превращается в "очень редкую операцию" :) Переименовывание сущностей с автоматической правкой зависимостей - это идеал, вполне достижимый. Вы только представьте как это удобно. Я бы сказал что пользователь интуитивно ожидает именно такого поведения, дружелюбного к нему, а не формально-программистского (т.е. с массой неудобств, которые в конечном итоге часто не позволяют ему сделать красиво). Или я в очередной раз хочу странного? :) +1 Надеюсь, в IBExpert-е когда нибудь такая возможность появится. А может это средствами IBEScript можно сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 09:17 |
|
Как переименовать таблицу в IbExpert
|
|||
---|---|---|---|
#18+
ExterisНадеюсь, в IBExpert-е когда нибудь такая возможность появится. А может это средствами IBEScript можно сделать?Если ты вникнешь в суть вопроса, то с удивлением узнаешь, что множество функций самого эксперта основаны именно на IBEScript, и их даже можно менять. Следовательно, ничто не мешает тебе самому написать на скрипте функцию переименования. За основу можно взять пример работы с метаданными из IBEScript, который есть в поставке. Ничего сложного (прямо из головы пишу, возможно, можно оптимизировать): - составлем список всех зависимых от таблицы объектов (триггеры, процедуры, вью) - создаём копию таблицы с именем, к примеру, *_TEMP и переливаем туда все данные - у всех зависимых объектов комментируем тела - удаляем таблицу, создаём новую с нужным именем - переливаем туда данные из временной, удаляем временную - восстанавливаем триггеры для новой таблицы - у всех зависимых объектов раскомментируем что закомментировали, изменив имя таблицы. С зависимыми вьями могут быть проблемы, возможно, придётся вытаскивать всё дерево зависимостей вьёв друг от друга. Ну и есть ещё тонкость с подменой имени в процедурах - замену производить только во входных параметрах и теле, но не в выходных параметрах! Это в случае, когда имя таблицы используется и для переменных. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 11:33 |
|
Как переименовать таблицу в IbExpert
|
|||
---|---|---|---|
#18+
От такой операции не только нету пользы , но ест и большой вред. А как со всеми обектами/полями/процедурами, которыe пользуют таблицу ? А и в ПО все переделывать ? А если где-то в процедурах не референция к таблице, а изпользуется EXECUTE STATEMENT ? А если внешние модули пользуют ету таблицу, не дай бог и внешних разработчиков ? Переименовали, через неделю - облом, через месяц - опять и т.д и т.д. Те , кто хотят сменить имя обекту, видно не работали над большими проектами. А те, кто не работали - перезалив делается очень быстро в маленьких проектах. CyberMaxВ своем проекте я переименовывал ВСЕ таблицы минимум три раза. В моем проекте 150 таблиц, 200 процедур, 200 тригеров, около 30 експорт/импортов в таблицу, 400 модулей ПО которые пользуются ДБ и несколько проектов с внешними разработчиками. Переименуй таблицу ... все спомниш, где она пользуется ? Мне от тебя страшно, я тебя к моему проекту на километр не допущу. Думать надо, ДУМАТь, и только потом делать. Из всех 5-ти точек, если что-то надо переименовать - не думал ти перед тем как делал. Только для 4. не ты не думал. Но если что-то унаследовал, и начать переименовать - не ясно где и кто пользуется ресурсом, и когда "всплывет" ета связь. Там еще хуже переименовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 11:35 |
|
Как переименовать таблицу в IbExpert
|
|||
---|---|---|---|
#18+
TPAKTOPA, Я с тебя удивляюсь. Ты правда считаешь, что я вот так, взял, переименовал таблицы, поля и сижу довольный, что сломаны отчеты, экспорты, печать извещений и прочее? У тебя проект с гораздо более сложными связями, и основания для переименования метаданных должны быть соответствующими. Мне - проще. Проект один, разработчик - один, поэтому безбоязненно переименовываю метаданные так, как считаю нужным (обычно пачкой, так проще). Программный генератор запросов сделает все за меня, а настроенная подсистема тестирования отчетов, экспортов и прочего сразу же собщат о проблемах. ES нет. Почитай книгу "Рефакторинг баз данных", там есть методические рекомендации по различным видам рефакторинга БД, в том числе как быть с крупными БД и как с мелкими. Так вот, в случае крупных БД или БД со множественными связями, шаг рефакторинга может длиться годами. То есть создали новую таблицу, перелили данные, настроили прозрачную работу приложений с новой таблицей как со старой, обновили ПО, удалили старую таблицу. А рефакторинг нужен, так как метаданные, так же, как и исходный код, со временем начинают гнить. P.S. Не надо переходить на личности. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 12:02 |
|
Как переименовать таблицу в IbExpert
|
|||
---|---|---|---|
#18+
Hello, CyberMax! You wrote on 21 июня 2011 г. 9:02:00: CyberMaxПочитай книгу "Рефакторинг баз данных", там есть методические рекомендации по различным видам рефакторинга БД "рефакторинг баз данных" придуман исключительно для исправления косяков народного творчества организованных стад дрессированных обезьянок. -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 12:30 |
|
Как переименовать таблицу в IbExpert
|
|||
---|---|---|---|
#18+
Мимопроходящий, А рефакторинг ПО? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 12:34 |
|
Как переименовать таблицу в IbExpert
|
|||
---|---|---|---|
#18+
Как по мне, так рефакторинг это вынужденная мера, когда косяков столько, что просто Жопа, см. пот МП про "обезьян". Ну еще рефакторинг можно применить если несколько проектов от разных товарисчей сливается в один, чтоб привести все компоненты к единому виду, убрать пересечения и т.п. У меня есть несколько таблиц названных неудачно, но мне даже представить страшно их переименовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 12:38 |
|
Как переименовать таблицу в IbExpert
|
|||
---|---|---|---|
#18+
CyberMaxА рефакторинг ПО? ... опиум для неокрепших прогерских умов. Бо оное потребно лишь при изменении бизнес-задач, кои отражает ПО. А если новые задачи, то и ПО - new. Остальное - красивое название латания собственных косяков. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 12:38 |
|
Как переименовать таблицу в IbExpert
|
|||
---|---|---|---|
#18+
Di_LIneCyberMaxА рефакторинг ПО? Бо оное потребно лишь при изменении бизнес-задач, кои отражает ПО. Не обязательно. Возросшие лет за 10-15 объемы данных в отдельно взятой базёнке могут привести к необходимости рефакторинга, как базы так и клиентской части, легко и непринужденно. "Я сам сто раз бросал", есличо. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 12:56 |
|
Как переименовать таблицу в IbExpert
|
|||
---|---|---|---|
#18+
SQL Bigot Возросшие лет за 10-15 объемы данных в отдельно взятой базёнке... И што, за 10-15 лет не изменились бизнес-задачи?! SQL Bigot Возросшие лет за 10-15 объемы данных в отдельно взятой базёнке могут привести к необходимости рефакторинга, как базы так и клиентской части, легко и непринужденно. Ну и кто ССЗБ, что на стадии проектирования не учел рост объёма? если задачи не изменялись за этот срок. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 13:13 |
|
Как переименовать таблицу в IbExpert
|
|||
---|---|---|---|
#18+
Hello, SQL Bigot! You wrote on 21 июня 2011 г. 9:56:45: SQL BigotВозросшие лет за 10-15 объемы данных в отдельно взятой базёнке могут привести к необходимости рефакторинга, как базы так и клиентской части, легко и непринужденно.какой накуй "рефакторинг"! из программки для овощного ларька не получится слабать ЭРП. равно как из говна конфетку. а то поначитаются модных матров от "современных технологов программирования"... -- With best regards, Мимопроходящий. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 13:15 |
|
Как переименовать таблицу в IbExpert
|
|||
---|---|---|---|
#18+
Di_LIneCyberMaxА рефакторинг ПО? ... опиум для неокрепших прогерских умов. Бо оное потребно лишь при изменении бизнес-задач, кои отражает ПО. А если новые задачи, то и ПО - new. Остальное - красивое название латания собственных косяков. :-) То есть конкретно ты, Диля, закончив вуз и устроившись на работу программистом, тут же начал писать четкий и ясный код, не ошибившись в выборе имени переменной, не изменив впоследствии назначение переменной, класса, не спускал/поднимал поле/метод по классовой иерархии? Не приходилось сливать вместе классы, расщеплять классы? Не приходилось чистить исходники, удаляя остатки кода, устаревшие комментарии, неиспользуемые методы, дублирование функциональности? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 13:18 |
|
Как переименовать таблицу в IbExpert
|
|||
---|---|---|---|
#18+
Мимопроходящийиз программки для овощного ларька не получится слабать ЭРП. А из чего получится слабать ERP? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 13:22 |
|
Как переименовать таблицу в IbExpert
|
|||
---|---|---|---|
#18+
Hello, CyberMax! You wrote on 21 июня 2011 г. 10:22:38: CyberMaxА из чего получится слабать ERP?оставь надежды. -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 13:23 |
|
Как переименовать таблицу в IbExpert
|
|||
---|---|---|---|
#18+
МимопроходящийCyberMaxА из чего получится слабать ERP?оставь надежды. Это не ответ. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 13:25 |
|
Как переименовать таблицу в IbExpert
|
|||
---|---|---|---|
#18+
CyberMaxТо есть конкретно ты, Диля, закончив вуз и устроившись на работу... ни дня не проработал по специальности. CyberMaxтут же начал писать четкий и ясный код, не ошибившись в выборе имени переменной, не изменив впоследствии назначение переменной, класса, не спускал/поднимал поле/метод по классовой иерархии? Не приходилось сливать вместе классы, расщеплять классы? Не приходилось чистить исходники, удаляя остатки кода, устаревшие комментарии, неиспользуемые методы, дублирование функциональности? А я пишу... линейный код. И это меня спасает постоянно. Так как модернизация клиенской части происходит не реже 1 раз в 3 месяца. И только по изменению задач. А если выпускники-прогеры кодят так, как ты написал, то... в дворники. ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 13:33 |
|
Как переименовать таблицу в IbExpert
|
|||
---|---|---|---|
#18+
WildSeryНичего сложного (прямо из головы пишу, возможно, можно оптимизировать): - составлем список всех зависимых от таблицы объектов (триггеры, процедуры, вью) - создаём копию таблицы с именем, к примеру, *_TEMP и переливаем туда все данные - у всех зависимых объектов комментируем тела - удаляем таблицу, создаём новую с нужным именем - переливаем туда данные из временной, удаляем временную - восстанавливаем триггеры для новой таблицы - у всех зависимых объектов раскомментируем что закомментировали, изменив имя таблицы. Оптимизировать можно. Следи за руками: - Создаём вьюху с новым именем как тупой селект всех полей из старой таблицы - Всё, идём пить пиво. Все зависимости сохранены, всё старое ПО третьих стран продолжает работать как ни в чём не бывало. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 13:38 |
|
Как переименовать таблицу в IbExpert
|
|||
---|---|---|---|
#18+
Hello, Dimitry Sibiryakov! You wrote on 21 июня 2011 г. 10:38:13: Dimitry SibiryakovСоздаём вьюху с новым именем как тупой селект всех полей из старой таблицывас не слышно! повторите! адын-адын-адын... рас-рас-рас... алё! -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 13:44 |
|
Как переименовать таблицу в IbExpert
|
|||
---|---|---|---|
#18+
Di_LIneА если выпускники-прогеры кодят так, как ты написал, то... в дворники. ;) Не всем же бог дал столько красоты ума и проницательности, сколько тебе. Вот и приходится... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 14:20 |
|
Как переименовать таблицу в IbExpert
|
|||
---|---|---|---|
#18+
CyberMaxВот и приходится... Угу.. Мозг, испорченный ООП, не лечится... (Р)емейк портнки Асм-а писали на миллиметровке, которая рулонами продавалась. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 14:30 |
|
Как переименовать таблицу в IbExpert
|
|||
---|---|---|---|
#18+
Di_LIne, Я на асме еще на спектруме писал, потом на PC под досом. И что? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 14:36 |
|
Как переименовать таблицу в IbExpert
|
|||
---|---|---|---|
#18+
WildSery... Ничего сложного (прямо из головы пишу, возможно, можно оптимизировать): - составлем список всех зависимых от таблицы объектов (триггеры, процедуры, вью) ... - у всех зависимых объектов раскомментируем что закомментировали, изменив имя таблицы. С зависимыми вьями могут быть проблемы, возможно, придётся вытаскивать всё дерево зависимостей вьёв друг от друга. Ну и есть ещё тонкость с подменой имени в процедурах - замену производить только во входных параметрах и теле, но не в выходных параметрах! Это в случае, когда имя таблицы используется и для переменных. В том то и беда, что слепить алгоритм можно, а вот сделать его качественным нужно время. Всё вышеописанное можно сделать и вручную, но вот разруливать зависимости... труд неблагодарный. С каждой новой версией FB количество зависимостей только увеличивается (TYPE OF COLUMN в процедурах; процедуры во VIEW) и разобрать весь этот клубок без автоматизации становится тяжело. Самым адекватным инструментом для рефакторинга БД был InterBase/Firebird Development Studio, но с последними версиями косячит. Часто рефакторинг нужен в случае развития БД и уточнения функционала, а не из-за косяков разработки. Хотя и случай кривизны в процессе проектирования не такой редкий при передаче БД по наследству или ведения разработки без лидера. Посему поддерживаю CyberMax и остальных, радеющих за появление автоматизированных средств рефакторинга. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 14:38 |
|
|
start [/forum/topic.php?fid=42&msg=37317690&tid=1599866]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
168ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 290ms |
total: | 557ms |
0 / 0 |