Форум Сообщества Аналитиков

Общий раздел => ПО Аналитика => Sparx => Тема начата: vinger4 от 01 Июля 2009, 11:44:53

Название: проектирование БД в Enterprise Architect
Отправлено: vinger4 от 01 Июля 2009, 11:44:53
Всем доброго времени суток!
Возник вопрос по проектированию схемы БД в Enterprise Architect.
В натоящий момент приходится делать так - например, порядок создания двух таблиц, идентификатор одной из которых приходит в другую таблицу (идентифицирующая связь!) будет такой:
- создаём две таблицы
- создаём В КАЖДОЙ ТАБЛИЦЕ два ОДИНАКОВЫХ поля ID_OBJECT
- тянем ассоциацию из одной таблицы в другую
- вызываем меню по правой кнопке и выбираем "Foreign Keys..."
- в появившемся окне устанавливаем соответствие между двумя полями ID_OBJECT в разных таблицах
Но такое создание ключей мелденно и неудобно, нет ли автоматического способа? Как в ERwin или PD - тянешь связь и все ключи сразу создаются.
Название: Re: проектирование БД в Enterprise Architect
Отправлено: Galogen от 01 Июля 2009, 14:23:39
Есть смотрите Project Transformations
Название: Re: проектирование БД в Enterprise Architect
Отправлено: vinger4 от 01 Июля 2009, 14:36:28
Вы имеете ввиду генерацию в DDL-скрипт? но пока об этом рано говорить. Речь идёт просто о том, чтобы "с нуля" нарисовать схему БД в EA
Название: Re: проектирование БД в Enterprise Architect
Отправлено: vinger4 от 01 Июля 2009, 14:49:34
Может, можно написать Java-плагин для реализации такой функциональности, т.е. чтобы все вышеописанные действия делались внутри этого плагина?
Название: Re: проектирование БД в Enterprise Architect
Отправлено: Galogen от 01 Июля 2009, 17:32:06
Вы имеете ввиду генерацию в DDL-скрипт? но пока об этом рано говорить. Речь идёт просто о том, чтобы "с нуля" нарисовать схему БД в EA
нет я говорю не о длл а MDA трансформации
Название: Re: проектирование БД в Enterprise Architect
Отправлено: vinger4 от 01 Июля 2009, 17:51:09
к сожалению, речь идёт не о трансформациях, а о проектировании схемы БД "с нуля". А, как уже описывалось выше, это делается руками очень медленно, что неприемлемо...
Название: Re: проектирование БД в Enterprise Architect
Отправлено: AlexTheRaven от 01 Июля 2009, 18:27:55
Да, медленно. Про приемлемость - нормально, моделировали, привыкнуть к этому можно. Конечно, в Power Designer удобнее. Но есть разница в цене на 2 (!) порядка:
Название: Re: проектирование БД в Enterprise Architect
Отправлено: Galogen от 01 Июля 2009, 19:17:40
к сожалению, речь идёт не о трансформациях, а о проектировании схемы БД "с нуля". А, как уже описывалось выше, это делается руками очень медленно, что неприемлемо...
если честно не понял смысла предложения. если учесть ваш первый пост, то вы задаете вопрос как сделать таблицы без выполнения тех действий, что вам так не нравяться.

я сказал вам, что делаете модель классов и ЕЕ трансформируете в модель данных со всеми первичными вторичными ключами и т.п.

к тому же - а зачем вам ЕА - делайте это в ЕРвине или бесплатных инструментах для DB дизайна
Название: Re: проектирование БД в Enterprise Architect
Отправлено: mario_ от 17 Августа 2009, 10:56:42
Доброго всем времени суток. У меня вопрос по генерации DDL. Сиквенсы для таблиц генерируются с именами *_SEQ. Где я могу изменить формат генерируемых имен для них?
Название: Re: проектирование БД в Enterprise Architect
Отправлено: Galogen от 17 Августа 2009, 13:26:28
Доброго всем времени суток. У меня вопрос по генерации DDL. Сиквенсы для таблиц генерируются с именами *_SEQ. Где я могу изменить формат генерируемых имен для них?
Вероятно в DDL скрипте
Название: Re: проектирование БД в Enterprise Architect
Отправлено: mario_ от 18 Августа 2009, 04:36:33
а если у меня 1000 сиквенсов генерируется? ручками менять каждое имя как-то не хочется) Имена ведь генерируются по какому-то шаблону. Мне бы узнать где этот шаблон можно отредактировать.
Название: Re: проектирование БД в Enterprise Architect
Отправлено: Galogen от 18 Августа 2009, 18:46:49
а если у меня 1000 сиквенсов генерируется? ручками менять каждое имя как-то не хочется) Имена ведь генерируются по какому-то шаблону. Мне бы узнать где этот шаблон можно отредактировать.
Извините, я наверное не понимаю Вашей проблемы. Давайте разберемся в точности.
1. Что Вы подразумеваете под "сиквенсом"?
2. Каким образом Вы определяете что данная таблица "сиквенс" или не "сиквенс"?
3. DDL скрипт - это средство автоматизации трансформации имеющейся модели в SQL код, а Вам что нужно?
4. Сформулируйте Вашу задачу точно, пусть это будет некоторый пример!
Название: Re: проектирование БД в Enterprise Architect
Отправлено: mario_ от 20 Августа 2009, 07:34:11
Да, наверное я и правда не уточнил, что имею в виду)

Под сиквенсом я подразумевал генератор уникальных значений. В моем случае для 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_<имя таблицы>.

Вот теперь вроде бы понятно объяснил)
Название: Re: проектирование БД в Enterprise Architect
Отправлено: Galogen от 20 Августа 2009, 11:34:08
К сожалению мне не удалось найти, где в скрипте DDL можно изменить местоположение приставки-суффикса. Боюсь, это явно невозможно, это зашито где-то на уровне кода. Для уточнения - попробуйте задать вопрос на форуме ЕА.

Однако, Вы описали недостаточные действия. Кроме
Цитировать
ставлю галочку на Generate sequences
, нужно так же установить Create triggers.

Однако решение Вашей проблемы элементарно. Напишите программку, или ручками в том же FAR меняете все вхождения типа Table1_id_SEQ на новые SEQ_Table1_id. Не особо и парясь.

А можно вопрос - почему неприменно нужно чтобы SEQ стоял впереди?
Название: Re: проектирование БД в Enterprise Architect
Отправлено: Водолей от 20 Августа 2009, 17:15:21
Цитата: Galogen
А можно вопрос - почему неприменно нужно чтобы SEQ стоял впереди?

видимо, потому, что у него не только SEQ'и имеются
Название: Re: проектирование БД в Enterprise Architect
Отправлено: mario_ от 21 Августа 2009, 05:32:23
А можно вопрос - почему неприменно нужно чтобы SEQ стоял впереди?
Потому что есть приложение и база данных на стадии разработки. Скелет и того и другого уже построен. И сейчас делаю на нее проект (прошу не бить ногами по лицу) =) Дальнейшие изменения базы хочу делать через генерацию из EA, а нотация по именованию объектов БД уже принята и зашита в коде приложения.

Вопрос конечно не критичный. К тому же сиквенсов не 1000, а всего около 20)  Можно и ручками все поправить. Просто хотелось разобраться. Не хочется использовать примитивные решения.

Возможно решение в Settings - Auto Name Counters. Если разберусь, напишу.
Название: Re: проектирование БД в Enterprise Architect
Отправлено: Galogen от 21 Августа 2009, 14:34:26
Возможно решение в Settings - Auto Name Counters. Если разберусь, напишу.
Маловероятно, вернее невероятно. Думаю тут все сложнее. Попробуйте точно сформулировать запрос на английском языке, прислать мне, а я его задам в поддержку, как лицензированный пользователь
Название: Re: проектирование БД в Enterprise Architect
Отправлено: Дмитрий Калашников от 24 Августа 2009, 15:36:11
Извиняюсь, если не совсем по теме, но...

Почему при попытке открыть уже существующую БД(MS SQL), ЕА выдаёт ошибку:

Microsoft OLE DB Provider for SQL Server [-2147217865]

Invalid object name 'usys_system'.

Название: Re: проектирование БД в Enterprise Architect
Отправлено: Galogen от 24 Августа 2009, 15:54:49
Извиняюсь, если не совсем по теме, но...

Почему при попытке открыть уже существующую БД(MS SQL), ЕА выдаёт ошибку:

Microsoft OLE DB Provider for SQL Server [-2147217865]

Invalid object name 'usys_system'.


Объяснений может быть много. Одно из них: когда Вы устанавливали инстансис, то возможно выбрали вариант с различением регистра букв. В результате в базе может быть объект Usys_system, а в запросе обращается к usys_system. Что для анализатора будет разным объектом. Переустановите инстансис MS SQL и не используйте регистрозависимость. Либо скорректируйте запросы.