|
|
|
PowerDesigner - копирование индексов и ключей с эталона
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Есть несколько таблиц, которые имеют одинаковый набор системных полей. Есть эталонная таблица, в корой созданы все необходимые индексы и ключи по этим системным полям - они имеют нужные наименования и описания. Как можно автоматизированно разнести набор ключей и индексов с этой эталонной таблицы на все остальные таблицы? Наверняка это можно сделать с помощью скрипта, но я к сожалению, совсем мало понимаю в VB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2010, 00:28 |
|
||
|
PowerDesigner - копирование индексов и ключей с эталона
|
|||
|---|---|---|---|
|
#18+
ты в своем уме? в ДРУГИХ таблицах немыслимо копировать поля уже существующих таблиц это нарушает первое правило нормализации данных - данные хранятся с ОДНОМ месте в СУБД - никаких дублей в принципе быть не может в других таблах ставят ССЫЛКУ (контрейнс) на существующую таблу с данными сдедовательно постановка задачи по КОПИРОВАНИЮ контренсов и наименований полей ВНУТРИ одной базы ИЗНАЧАЛЬНО ПОРОЧНА Второе - в функционально убогих СУБД - типа MS SQL - если конечно дублирование полей не противоречит нормализации данных - надо понимать, что имена контрейнсов (в пределах базы) - должны быть уникальные Третье - если тебе надо клонировать СУБД (например из девелоперской среды в боевую) - воспользуйся например PowerArchitect и, наконец, четвертое - все зависит от того, в какой СУБД ты работаешь такие помыслы о дублировании могли возникнуть ну разве что в самых функционально УБОГИХ СУБД- например MS SQL или MySQL в более ли менее развитых СУБД, например Postgresql есть операция НАСЛЕДОВАНИЯ одной таблицы от другой - те при содании таблицы A ты указываешь, что она наследуется от B - что и подразумевает, что все поля таблицы A окажутся в таблице B ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2010, 00:57 |
|
||
|
PowerDesigner - копирование индексов и ключей с эталона
|
|||
|---|---|---|---|
|
#18+
Microsoft-GLEAM, сказок мне не надо, пожалуйста, рассказывать. Во-первых, я говорю по PowerDesigner и даже мельком не упоминаю про копирование полей. Даже если мне надо было бы скопировать поля, то ничего НЕМЫСЛИМОГО я в этом не вижу. Во-вторых, мне надо скопировать определения ИНДЕКСОВ и КЛЮЧЕЙ, так как ВСЕ мои таблицы имеют одинаковый набор системных полей, где указывается такая информация, как код пользователя, код записи, код группы записей и период действия записи с набором правил и разрешений и все эти поля имеют одинаковые наименование от таблицы к таблице, то и определения индексов и ключей так же будут одинаковыми. В-третьих, ручное копирование индексов и ключей, через кнопки копировать и вставить в PowerDesigner'е меня уже порядком заколебало - при копировании не переносятся наборы полей, составляющие индекс или ключ и их приходится снова добавлять вручную, а это достаточно долго, учитывая, что таблиц более сотни. Исходя из третьего пункта, хотелось бы как-то автоматизировать процесс. Я точно знаю, что с помощью скрипта это сделать можно, но я мало работал с VB, что бы сделать это самому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2010, 11:32 |
|
||
|
PowerDesigner - копирование индексов и ключей с эталона
|
|||
|---|---|---|---|
|
#18+
AlkatrazВо-вторых, мне надо скопировать определения ИНДЕКСОВ и КЛЮЧЕЙ, так как ВСЕ мои таблицы имеют одинаковый набор системных полей, где указывается такая информация, как код пользователя, код записи, код группы записей и период действия записи с набором правил и разрешений и все эти поля имеют одинаковые наименование от таблицы к таблице, то и определения индексов и ключей так же будут одинаковыми. В-третьих, ручное копирование индексов и ключей, через кнопки копировать и вставить в PowerDesigner'е меня уже порядком заколебало - при копировании не переносятся наборы полей, составляющие индекс или ключ и их приходится снова добавлять вручную, а это достаточно долго, учитывая, что таблиц более сотни. Исходя из третьего пункта, хотелось бы как-то автоматизировать процесс. Я точно знаю, что с помощью скрипта это сделать можно, но я мало работал с VB, что бы сделать это самому. мде, 100 таблиц довольно много, можно и не досмотреть где-нить за VB в PD не знаю, как вариант, можно нарисовать таблицы без набора "одинаковых системных полей", а в СУБД, написать скрипт, который циклом пробежится по таблицам, и доделает нужные поля, индексы и связи через dynamic sql потом сделать "update model from database", и работать с базой дальше. можно и клиента на VB(C#,Delphi,Java...) написать, который аналогичную операцию сделает конечно, если СУБД поддерживает наследование, как например PostgreSQL, то эта задача во много упрощается СУБД то какая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2010, 12:27 |
|
||
|
PowerDesigner - копирование индексов и ключей с эталона
|
|||
|---|---|---|---|
|
#18+
Кифирчик, SQL Server... Можно и так, но база уже готова и работает - я оптимизировал индексы и ключи вместе с запросами, не трогая саму структуру - потребовалось убрать все существующие индексы и ключи (что сделать элементарно, ломать не сроить) и добавить новые. Два ключа (основной и альтернативный) и три индекса на таблицу. Пересоздавать базу будет гораздо дольше - надо ведь перепрописать все отношения, комментарии к ним и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2010, 13:05 |
|
||
|
PowerDesigner - копирование индексов и ключей с эталона
|
|||
|---|---|---|---|
|
#18+
off-top/Для будущих поколений. Используйте для проектирования ConceptualDataModel c типизированием, а затем PDM. "Subtypes – lists the subtypes that inherit from the entity". P. S. Освоить надо не VB, а объектную модель PD и PhysicalDataModel. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2010, 09:08 |
|
||
|
PowerDesigner - копирование индексов и ключей с эталона
|
|||
|---|---|---|---|
|
#18+
Kasper, забавно, когда я спрашивал, делать ли мне концептуальную модель или ограничиться физической, то мне однозначно советовали остаться на физической модели. Спасибо за совет, впрочем. А по существу проблеммы есть предложения? Что такого в физической модели я еще не освоил, что помогло бы мне справиться с задачей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2010, 10:13 |
|
||
|
PowerDesigner - копирование индексов и ключей с эталона
|
|||
|---|---|---|---|
|
#18+
On 18.07.2010 01:28, Alkatraz wrote: > Есть несколько таблиц, которые имеют одинаковый набор системных полей. Есть эталонная таблица, в корой созданы все > необходимые индексы и ключи по этим системным полям - они имеют нужные наименования и описания. > > Как можно автоматизированно разнести набор ключей и индексов с этой эталонной таблицы на все остальные таблицы? > > Наверняка это можно сделать с помощью скрипта, но я к сожалению, совсем мало понимаю в VB. По-моему действительно это проще всего сделать черех VBScript, но, к сожалению, его придется изучить:) Начни может с поиска по слову CreateNew: http://www.sql.ru/forum/actualtopics.aspx?search=createNew&bid=36 Еще стоит поискать по этому слову в документации но PowerDesigner: http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.powerdesigner.15.2/doc/html/title.html Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2010, 11:00 |
|
||
|
PowerDesigner - копирование индексов и ключей с эталона
|
|||
|---|---|---|---|
|
#18+
Не надо никакие VBскрипты. Пишешь (хранимую или) селект из системных таблиц, котоый выбирает название индексов, констрэйнов и т.д по исходной таблице и формирует SQL скрипт по созданию индексов, констрэйнов и т.д. Потом запускаешь селект (набор селектов), ны выходе получаешь SQL скрипт по созданию индексов, констрэйнов и т.д, и затем запускаешь его... и наступает счастье. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2010, 15:29 |
|
||
|
PowerDesigner - копирование индексов и ключей с эталона
|
|||
|---|---|---|---|
|
#18+
Denis Popov, да, уже начал читать, спасибо. параллельно делаю все ручками, так как надо все сделать быстро. ) rmka, не выход, к сожалению - надо что бы все в модели данных было - она далее используется как референсное пособие... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2010, 17:46 |
|
||
|
PowerDesigner - копирование индексов и ключей с эталона
|
|||
|---|---|---|---|
|
#18+
AlkatrazЗдравствуйте! Есть несколько таблиц, которые имеют одинаковый набор системных полей. Есть эталонная таблица, в корой созданы все необходимые индексы и ключи по этим системным полям - они имеют нужные наименования и описания. Как можно автоматизированно разнести набор ключей и индексов с этой эталонной таблицы на все остальные таблицы? Наверняка это можно сделать с помощью скрипта, но я к сожалению, совсем мало понимаю в VB. Вот пример скрипта, который для каждой таблицы в модели добавляет Unique constraint для каждого столбца с именем NAME (предполагается, что каждая таблица содержит такой столбец). Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2010, 17:51 |
|
||
|
PowerDesigner - копирование индексов и ключей с эталона
|
|||
|---|---|---|---|
|
#18+
Flying Dutchman, вау! Спасибо! Так оно пойдет гораздо быстрее! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2010, 10:28 |
|
||
|
PowerDesigner - копирование индексов и ключей с эталона
|
|||
|---|---|---|---|
|
#18+
Замечание насчет концептуальной модели: 1. Вам сейчас ничего не мешает сгенерировать концептуальную модель из вашей физической, сделать нужную типизацию а потом сделать обратную генерацию - все связи сохранятся. 2. В концептуальной модели можно указать только идентификаторы (аналог ключа в физической модели), ключей в концептуальной модели нет. 3. При генерации физической модели из концептуальной идентификаторы превратятся в ключи (первичный, альтернативный) и по ним будут автоматически сгенерированы индексы. P.S. если у вас кроме типовых задаются еще какие-то ваши специфические индексы, то это уже только в физической модели ручками или через скрипт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2010, 15:47 |
|
||
|
|

start [/forum/topic.php?fid=32&gotonew=1&tid=1542593]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
159ms |
get topic data: |
9ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 502ms |

| 0 / 0 |
