powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Как переименовать таблицу в IbExpert
25 сообщений из 133, страница 2 из 6
Как переименовать таблицу в IbExpert
    #37317034
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потребность в переименовании таблицы - вполне естественна при развитии БД, так же, как переименование полей, функций, исключений, представлений, доменов и всего остального. Для чего это нужно - очень хорошо написано в книгах по рефакторингу (как программного кода, так и баз данных (да, даже такие уже есть)).
В своем проекте я переименовывал ВСЕ таблицы минимум три раза. Первый - переход к префиксам (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. Здесь рассматривалось только теоретическое обоснование, а не вопрос сложности этой операции.
...
Рейтинг: 0 / 0
Как переименовать таблицу в IbExpert
    #37317071
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMaxретий - переход к $ как разделителю (DIR_ADDRESS_STREET -> DIR$ADDRESS$STREET)А где профит от такого финта ушами? Мне правда интересно... зачем?
...
Рейтинг: 0 / 0
Как переименовать таблицу в IbExpert
    #37317083
Oliph_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ivan_PisarevskyCyberMaxретий - переход к $ как разделителю (DIR_ADDRESS_STREET -> DIR$ADDRESS$STREET)А где профит от такого финта ушами? Мне правда интересно... зачем? Уже было
...
Рейтинг: 0 / 0
Как переименовать таблицу в IbExpert
    #37317167
Фотография Exteris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeekdvохрененно частая операция, что-ли?
Операция очень редкая, т.к. практически невозможная. Но очень полезная. Часто хочется переименовать название таблицы в другое, более понятное, более соответствующее тому что в ней находится. Было бы классно если бы можно было переименовывать имена полей, таблиц, триггеров, генераторов, процедур, UDF и пр. без дропания зависимостей. Если в таблице пара сотен триггеров и процедур использующих поле, то его переименование превращается в "очень редкую операцию" :) Переименовывание сущностей с автоматической правкой зависимостей - это идеал, вполне достижимый. Вы только представьте как это удобно. Я бы сказал что пользователь интуитивно ожидает именно такого поведения, дружелюбного к нему, а не формально-программистского (т.е. с массой неудобств, которые в конечном итоге часто не позволяют ему сделать красиво).
Или я в очередной раз хочу странного? :) +1
Надеюсь, в IBExpert-е когда нибудь такая возможность появится. А может это средствами IBEScript можно сделать?
...
Рейтинг: 0 / 0
Как переименовать таблицу в IbExpert
    #37317489
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ExterisНадеюсь, в IBExpert-е когда нибудь такая возможность появится. А может это средствами IBEScript можно сделать?Если ты вникнешь в суть вопроса, то с удивлением узнаешь, что множество функций самого эксперта основаны именно на IBEScript, и их даже можно менять.
Следовательно, ничто не мешает тебе самому написать на скрипте функцию переименования.
За основу можно взять пример работы с метаданными из IBEScript, который есть в поставке.

Ничего сложного (прямо из головы пишу, возможно, можно оптимизировать):
- составлем список всех зависимых от таблицы объектов (триггеры, процедуры, вью)
- создаём копию таблицы с именем, к примеру, *_TEMP и переливаем туда все данные
- у всех зависимых объектов комментируем тела
- удаляем таблицу, создаём новую с нужным именем
- переливаем туда данные из временной, удаляем временную
- восстанавливаем триггеры для новой таблицы
- у всех зависимых объектов раскомментируем что закомментировали, изменив имя таблицы.

С зависимыми вьями могут быть проблемы, возможно, придётся вытаскивать всё дерево зависимостей вьёв друг от друга.
Ну и есть ещё тонкость с подменой имени в процедурах - замену производить только во входных параметрах и теле, но не в выходных параметрах! Это в случае, когда имя таблицы используется и для переменных.
...
Рейтинг: 0 / 0
Как переименовать таблицу в IbExpert
    #37317495
Фотография TPAKTOPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
От такой операции не только нету пользы , но ест и большой вред. А как со всеми обектами/полями/процедурами, которыe пользуют таблицу ? А и в ПО все переделывать ? А если где-то в процедурах не референция к таблице, а изпользуется EXECUTE STATEMENT ? А если внешние модули пользуют ету таблицу, не дай бог и внешних разработчиков ? Переименовали, через неделю - облом, через месяц - опять и т.д и т.д.

Те , кто хотят сменить имя обекту, видно не работали над большими проектами. А те, кто не работали - перезалив делается очень быстро в маленьких проектах.

CyberMaxВ своем проекте я переименовывал ВСЕ таблицы минимум три раза.
В моем проекте 150 таблиц, 200 процедур, 200 тригеров, около 30 експорт/импортов в таблицу, 400 модулей ПО которые пользуются ДБ и несколько проектов с внешними разработчиками. Переименуй таблицу ... все спомниш, где она пользуется ?
Мне от тебя страшно, я тебя к моему проекту на километр не допущу. Думать надо, ДУМАТь, и только потом делать. Из всех 5-ти точек, если что-то надо переименовать - не думал ти перед тем как делал. Только для 4. не ты не думал. Но если что-то унаследовал, и начать переименовать - не ясно где и кто пользуется ресурсом, и когда "всплывет" ета связь. Там еще хуже переименовать.
...
Рейтинг: 0 / 0
Как переименовать таблицу в IbExpert
    #37317553
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TPAKTOPA,

Я с тебя удивляюсь. Ты правда считаешь, что я вот так, взял, переименовал таблицы, поля и сижу довольный, что сломаны отчеты, экспорты, печать извещений и прочее? У тебя проект с гораздо более сложными связями, и основания для переименования метаданных должны быть соответствующими. Мне - проще. Проект один, разработчик - один, поэтому безбоязненно переименовываю метаданные так, как считаю нужным (обычно пачкой, так проще). Программный генератор запросов сделает все за меня, а настроенная подсистема тестирования отчетов, экспортов и прочего сразу же собщат о проблемах. ES нет.
Почитай книгу "Рефакторинг баз данных", там есть методические рекомендации по различным видам рефакторинга БД, в том числе как быть с крупными БД и как с мелкими. Так вот, в случае крупных БД или БД со множественными связями, шаг рефакторинга может длиться годами. То есть создали новую таблицу, перелили данные, настроили прозрачную работу приложений с новой таблицей как со старой, обновили ПО, удалили старую таблицу.
А рефакторинг нужен, так как метаданные, так же, как и исходный код, со временем начинают гнить.
P.S. Не надо переходить на личности.
...
Рейтинг: 0 / 0
Как переименовать таблицу в IbExpert
    #37317624
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, CyberMax!
You wrote on 21 июня 2011 г. 9:02:00:

CyberMaxПочитай книгу "Рефакторинг баз данных", там есть
методические рекомендации по различным видам рефакторинга БД
"рефакторинг баз данных" придуман исключительно для исправления косяков
народного творчества организованных стад дрессированных обезьянок.

--
With best regards, Мимопроходящий.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как переименовать таблицу в IbExpert
    #37317634
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

А рефакторинг ПО?
...
Рейтинг: 0 / 0
Как переименовать таблицу в IbExpert
    #37317644
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как по мне, так рефакторинг это вынужденная мера, когда косяков столько, что просто Жопа, см. пот МП про "обезьян".
Ну еще рефакторинг можно применить если несколько проектов от разных товарисчей сливается в один, чтоб привести все компоненты к единому виду, убрать пересечения и т.п.

У меня есть несколько таблиц названных неудачно, но мне даже представить страшно их переименовать.
...
Рейтинг: 0 / 0
Как переименовать таблицу в IbExpert
    #37317646
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMaxА рефакторинг ПО?
... опиум для неокрепших прогерских умов.
Бо оное потребно лишь при изменении бизнес-задач, кои отражает ПО.
А если новые задачи, то и ПО - new.
Остальное - красивое название латания собственных косяков. :-)
...
Рейтинг: 0 / 0
Как переименовать таблицу в IbExpert
    #37317690
SQL Bigot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Di_LIneCyberMaxА рефакторинг ПО?
Бо оное потребно лишь при изменении бизнес-задач, кои отражает ПО.

Не обязательно. Возросшие лет за 10-15 объемы данных в отдельно взятой базёнке могут привести к необходимости рефакторинга, как базы так и клиентской части, легко и непринужденно.
"Я сам сто раз бросал", есличо.
...
Рейтинг: 0 / 0
Как переименовать таблицу в IbExpert
    #37317734
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL Bigot Возросшие лет за 10-15 объемы данных в отдельно взятой базёнке... И што, за 10-15 лет не изменились бизнес-задачи?!

SQL Bigot Возросшие лет за 10-15 объемы данных в отдельно взятой базёнке могут привести к необходимости рефакторинга, как базы так и клиентской части, легко и непринужденно.
Ну и кто ССЗБ, что на стадии проектирования не учел рост объёма?
если задачи не изменялись за этот срок.
...
Рейтинг: 0 / 0
Как переименовать таблицу в IbExpert
    #37317740
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, SQL Bigot!
You wrote on 21 июня 2011 г. 9:56:45:

SQL BigotВозросшие лет за 10-15 объемы данных в отдельно взятой
базёнке могут привести к необходимости рефакторинга, как базы так и
клиентской части, легко и непринужденно.какой накуй "рефакторинг"!
из программки для овощного ларька не получится слабать ЭРП.
равно как из говна конфетку.

а то поначитаются модных матров от "современных технологов программирования"...

--
With best regards, Мимопроходящий.
...
Рейтинг: 0 / 0
Как переименовать таблицу в IbExpert
    #37317757
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Di_LIneCyberMaxА рефакторинг ПО?
... опиум для неокрепших прогерских умов.
Бо оное потребно лишь при изменении бизнес-задач, кои отражает ПО.
А если новые задачи, то и ПО - new.
Остальное - красивое название латания собственных косяков. :-)
То есть конкретно ты, Диля, закончив вуз и устроившись на работу программистом, тут же начал писать четкий и ясный код, не ошибившись в выборе имени переменной, не изменив впоследствии назначение переменной, класса, не спускал/поднимал поле/метод по классовой иерархии? Не приходилось сливать вместе классы, расщеплять классы? Не приходилось чистить исходники, удаляя остатки кода, устаревшие комментарии, неиспользуемые методы, дублирование функциональности?
...
Рейтинг: 0 / 0
Как переименовать таблицу в IbExpert
    #37317773
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийиз программки для овощного ларька не получится слабать ЭРП.
А из чего получится слабать ERP?
...
Рейтинг: 0 / 0
Как переименовать таблицу в IbExpert
    #37317777
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, CyberMax!
You wrote on 21 июня 2011 г. 10:22:38:

CyberMaxА из чего получится слабать ERP?оставь надежды.

--
With best regards, Мимопроходящий.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как переименовать таблицу в IbExpert
    #37317783
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МимопроходящийCyberMaxА из чего получится слабать ERP?оставь надежды.
Это не ответ.
...
Рейтинг: 0 / 0
Как переименовать таблицу в IbExpert
    #37317818
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMaxТо есть конкретно ты, Диля, закончив вуз и устроившись на работу... ни дня не проработал по специальности.


CyberMaxтут же начал писать четкий и ясный код, не ошибившись в выборе имени переменной, не изменив впоследствии назначение переменной, класса, не спускал/поднимал поле/метод по классовой иерархии? Не приходилось сливать вместе классы, расщеплять классы? Не приходилось чистить исходники, удаляя остатки кода, устаревшие комментарии, неиспользуемые методы, дублирование функциональности?
А я пишу... линейный код.
И это меня спасает постоянно. Так как модернизация клиенской части происходит не реже 1 раз в 3 месяца.
И только по изменению задач.

А если выпускники-прогеры кодят так, как ты написал, то... в дворники. ;)
...
Рейтинг: 0 / 0
Как переименовать таблицу в IbExpert
    #37317838
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryНичего сложного (прямо из головы пишу, возможно, можно оптимизировать):
- составлем список всех зависимых от таблицы объектов (триггеры, процедуры, вью)
- создаём копию таблицы с именем, к примеру, *_TEMP и переливаем туда все данные
- у всех зависимых объектов комментируем тела
- удаляем таблицу, создаём новую с нужным именем
- переливаем туда данные из временной, удаляем временную
- восстанавливаем триггеры для новой таблицы
- у всех зависимых объектов раскомментируем что закомментировали, изменив имя таблицы.

Оптимизировать можно. Следи за руками:
- Создаём вьюху с новым именем как тупой селект всех полей из старой таблицы
- Всё, идём пить пиво.
Все зависимости сохранены, всё старое ПО третьих стран продолжает работать как ни в чём не
бывало.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как переименовать таблицу в IbExpert
    #37317857
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Dimitry Sibiryakov!
You wrote on 21 июня 2011 г. 10:38:13:

Dimitry SibiryakovСоздаём вьюху с новым именем как тупой селект
всех полей из старой таблицывас не слышно!
повторите!

адын-адын-адын...
рас-рас-рас...

алё!

--
With best regards, Мимопроходящий.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как переименовать таблицу в IbExpert
    #37317959
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Di_LIneА если выпускники-прогеры кодят так, как ты написал, то... в дворники. ;)
Не всем же бог дал столько красоты ума и проницательности, сколько тебе. Вот и приходится...
...
Рейтинг: 0 / 0
Как переименовать таблицу в IbExpert
    #37317995
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMaxВот и приходится...
Угу..
Мозг, испорченный ООП, не лечится...
(Р)емейк
портнки Асм-а писали на миллиметровке, которая рулонами продавалась.
...
Рейтинг: 0 / 0
Как переименовать таблицу в IbExpert
    #37318015
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Di_LIne,

Я на асме еще на спектруме писал, потом на PC под досом. И что?
...
Рейтинг: 0 / 0
Как переименовать таблицу в IbExpert
    #37318021
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery...
Ничего сложного (прямо из головы пишу, возможно, можно оптимизировать):
- составлем список всех зависимых от таблицы объектов (триггеры, процедуры, вью)
...
- у всех зависимых объектов раскомментируем что закомментировали, изменив имя таблицы.

С зависимыми вьями могут быть проблемы, возможно, придётся вытаскивать всё дерево зависимостей вьёв друг от друга.
Ну и есть ещё тонкость с подменой имени в процедурах - замену производить только во входных параметрах и теле, но не в выходных параметрах! Это в случае, когда имя таблицы используется и для переменных.
В том то и беда, что слепить алгоритм можно, а вот сделать его качественным нужно время.
Всё вышеописанное можно сделать и вручную, но вот разруливать зависимости... труд неблагодарный. С каждой новой версией FB количество зависимостей только увеличивается (TYPE OF COLUMN в процедурах; процедуры во VIEW) и разобрать весь этот клубок без автоматизации становится тяжело.
Самым адекватным инструментом для рефакторинга БД был InterBase/Firebird Development Studio, но с последними версиями косячит. Часто рефакторинг нужен в случае развития БД и уточнения функционала, а не из-за косяков разработки. Хотя и случай кривизны в процессе проектирования не такой редкий при передаче БД по наследству или ведения разработки без лидера.
Посему поддерживаю CyberMax и остальных, радеющих за появление автоматизированных средств рефакторинга.
...
Рейтинг: 0 / 0
25 сообщений из 133, страница 2 из 6
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Как переименовать таблицу в IbExpert
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]