Форум Сообщества Аналитиков
Общий раздел => ПО Аналитика => Sparx => Тема начата: vinger4 от 01 Июля 2009, 11:44:53
-
Всем доброго времени суток!
Возник вопрос по проектированию схемы БД в Enterprise Architect.
В натоящий момент приходится делать так - например, порядок создания двух таблиц, идентификатор одной из которых приходит в другую таблицу (идентифицирующая связь!) будет такой:
- создаём две таблицы
- создаём В КАЖДОЙ ТАБЛИЦЕ два ОДИНАКОВЫХ поля ID_OBJECT
- тянем ассоциацию из одной таблицы в другую
- вызываем меню по правой кнопке и выбираем "Foreign Keys..."
- в появившемся окне устанавливаем соответствие между двумя полями ID_OBJECT в разных таблицах
Но такое создание ключей мелденно и неудобно, нет ли автоматического способа? Как в ERwin или PD - тянешь связь и все ключи сразу создаются.
-
Есть смотрите Project Transformations
-
Вы имеете ввиду генерацию в DDL-скрипт? но пока об этом рано говорить. Речь идёт просто о том, чтобы "с нуля" нарисовать схему БД в EA
-
Может, можно написать Java-плагин для реализации такой функциональности, т.е. чтобы все вышеописанные действия делались внутри этого плагина?
-
Вы имеете ввиду генерацию в DDL-скрипт? но пока об этом рано говорить. Речь идёт просто о том, чтобы "с нуля" нарисовать схему БД в EA
нет я говорю не о длл а MDA трансформации
-
к сожалению, речь идёт не о трансформациях, а о проектировании схемы БД "с нуля". А, как уже описывалось выше, это делается руками очень медленно, что неприемлемо...
-
Да, медленно. Про приемлемость - нормально, моделировали, привыкнуть к этому можно. Конечно, в Power Designer удобнее. Но есть разница в цене на 2 (!) порядка:
- Sparx Systems Enterprise Architect - 4-5 тыс. руб. за рабочее место
- Sybase PowerDesigner Studio - 220-450 тыс. руб. за рабочее место
-
к сожалению, речь идёт не о трансформациях, а о проектировании схемы БД "с нуля". А, как уже описывалось выше, это делается руками очень медленно, что неприемлемо...
если честно не понял смысла предложения. если учесть ваш первый пост, то вы задаете вопрос как сделать таблицы без выполнения тех действий, что вам так не нравяться.
я сказал вам, что делаете модель классов и ЕЕ трансформируете в модель данных со всеми первичными вторичными ключами и т.п.
к тому же - а зачем вам ЕА - делайте это в ЕРвине или бесплатных инструментах для DB дизайна
-
Доброго всем времени суток. У меня вопрос по генерации DDL. Сиквенсы для таблиц генерируются с именами *_SEQ. Где я могу изменить формат генерируемых имен для них?
-
Доброго всем времени суток. У меня вопрос по генерации DDL. Сиквенсы для таблиц генерируются с именами *_SEQ. Где я могу изменить формат генерируемых имен для них?
Вероятно в DDL скрипте
-
а если у меня 1000 сиквенсов генерируется? ручками менять каждое имя как-то не хочется) Имена ведь генерируются по какому-то шаблону. Мне бы узнать где этот шаблон можно отредактировать.
-
а если у меня 1000 сиквенсов генерируется? ручками менять каждое имя как-то не хочется) Имена ведь генерируются по какому-то шаблону. Мне бы узнать где этот шаблон можно отредактировать.
Извините, я наверное не понимаю Вашей проблемы. Давайте разберемся в точности.
1. Что Вы подразумеваете под "сиквенсом"?
2. Каким образом Вы определяете что данная таблица "сиквенс" или не "сиквенс"?
3. DDL скрипт - это средство автоматизации трансформации имеющейся модели в SQL код, а Вам что нужно?
4. Сформулируйте Вашу задачу точно, пусть это будет некоторый пример!
-
Да, наверное я и правда не уточнил, что имею в виду)
Под сиквенсом я подразумевал генератор уникальных значений. В моем случае для Oracle.
Пример:
допустим у меня есть таблица Table со столбцами ID, Name. Для столбца ID я устанавливаю Auto Number в Column Properties. Также выбираю database: Oracle.
Далее запускаю генерацию DDL: Project - Database Engineering - Generate Package DDL. В открывшемся окне ставлю галочку на Generate sequences и запускаю генерацию. У меня получается скрипт создания таблицы с именем Table и сиквенса с именем Table_SEQ. Так вот. Мне нужно чтобы имена сиквенсов были не <имя таблицы>_SEQ, а SEQ_<имя таблицы>.
Вот теперь вроде бы понятно объяснил)
-
К сожалению мне не удалось найти, где в скрипте DDL можно изменить местоположение приставки-суффикса. Боюсь, это явно невозможно, это зашито где-то на уровне кода. Для уточнения - попробуйте задать вопрос на форуме ЕА.
Однако, Вы описали недостаточные действия. Кроме ставлю галочку на Generate sequences
, нужно так же установить Create triggers.
Однако решение Вашей проблемы элементарно. Напишите программку, или ручками в том же FAR меняете все вхождения типа Table1_id_SEQ на новые SEQ_Table1_id. Не особо и парясь.
А можно вопрос - почему неприменно нужно чтобы SEQ стоял впереди?
-
А можно вопрос - почему неприменно нужно чтобы SEQ стоял впереди?
видимо, потому, что у него не только SEQ'и имеются
-
А можно вопрос - почему неприменно нужно чтобы SEQ стоял впереди?
Потому что есть приложение и база данных на стадии разработки. Скелет и того и другого уже построен. И сейчас делаю на нее проект (прошу не бить ногами по лицу) =) Дальнейшие изменения базы хочу делать через генерацию из EA, а нотация по именованию объектов БД уже принята и зашита в коде приложения.
Вопрос конечно не критичный. К тому же сиквенсов не 1000, а всего около 20) Можно и ручками все поправить. Просто хотелось разобраться. Не хочется использовать примитивные решения.
Возможно решение в Settings - Auto Name Counters. Если разберусь, напишу.
-
Возможно решение в Settings - Auto Name Counters. Если разберусь, напишу.
Маловероятно, вернее невероятно. Думаю тут все сложнее. Попробуйте точно сформулировать запрос на английском языке, прислать мне, а я его задам в поддержку, как лицензированный пользователь
-
Извиняюсь, если не совсем по теме, но...
Почему при попытке открыть уже существующую БД(MS SQL), ЕА выдаёт ошибку:
Microsoft OLE DB Provider for SQL Server [-2147217865]
Invalid object name 'usys_system'.
-
Извиняюсь, если не совсем по теме, но...
Почему при попытке открыть уже существующую БД(MS SQL), ЕА выдаёт ошибку:
Microsoft OLE DB Provider for SQL Server [-2147217865]
Invalid object name 'usys_system'.
Объяснений может быть много. Одно из них: когда Вы устанавливали инстансис, то возможно выбрали вариант с различением регистра букв. В результате в базе может быть объект Usys_system, а в запросе обращается к usys_system. Что для анализатора будет разным объектом. Переустановите инстансис MS SQL и не используйте регистрозависимость. Либо скорректируйте запросы.