Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / PowerDesigner. PDM. Генерация SQL-кода внешнего ключа на не выбранную таблиц / 9 сообщений из 9, страница 1 из 1
12.07.2013, 09:46
    #38328822
Олегон
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PowerDesigner. PDM. Генерация SQL-кода внешнего ключа на не выбранную таблиц
PowerDesigner 16.5
Physical Data Model
DBMS: Microsoft SQL Server 2012

Если на диаграмме выбрать таблицу, открыть свойства, и перейти на вкладку "Preview", то получаю весь необходимый сгенерированный код для создания таблицы, всех внешних ключей, индексов и т.п.
Но, если для этой таблицы сгенерировать код из меню Database - Generate database (на вкладке Selection выбрать только 1 таблицу), то получаю сгенерированный код для создания таблицы, но без создания внешних ключей. В настройках все необходимые выбрано.
Если дополнительно еще выбрать таблицу, на которую ссылаются внешний ключ, то тогда в сгенерированном коде будут инструкции по созданию внешних ключей.

Это какая-то недоработка или все же можно как-то настроить? Чтоб при генерации через меню, по выбранным таблицам, создание кода работало точно так же, как при просмотре кода для выбранной на диаграмме таблицы.
...
Рейтинг: 0 / 0
12.07.2013, 09:58
    #38328837
Infernal V. Raven
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PowerDesigner. PDM. Генерация SQL-кода внешнего ключа на не выбранную таблиц
ОлегонВ настройках все необходимые выбрано.Это ты как определил?
Судя по тому что ты написал - нужно внимательно смотреть Database Generation - Options
...
Рейтинг: 0 / 0
12.07.2013, 12:29
    #38329154
Олегон
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PowerDesigner. PDM. Генерация SQL-кода внешнего ключа на не выбранную таблиц
Infernal V. Raven,

Тем, что когда генерируешь только по одной таблице - внешние ключи не создаются. Добавляешь в выбор ту таблицу, на которую ссылаются внешние ключи - они создаются.
Вроде как, что для просмотра сгенериррованного кода в свойствах таблицы, что вызов через меню, и то и другое используют общие настройки для генерации. Или я не прав? Я имею в виду те, что задаются на вкладке Database Generation - Options.
Если говорить о настройках, то пункт Foreign key имеет включенную галку Create foreign key - Outside. Можно было бы подумать на него, как отвечающего за генерацию инструкции по созданию constraint.

Что-то упустил? Чего-то не знаю (недопонимаю)?
Еще раз напомню: просмотр кода выбранной на диаграмме таблицы - претензий нет, есть все, что ожидается; генерация кода по всей модели (всем таблицам) - претензий нет, есть все, что ожидается; генерация по одной или нескольким выбранным таблицам - нет внешних ключей, на таблицы, которые не выбраны.
...
Рейтинг: 0 / 0
12.07.2013, 14:21
    #38329408
Infernal V. Raven
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PowerDesigner. PDM. Генерация SQL-кода внешнего ключа на не выбранную таблиц
Олегон,

если есть возможность - выложи или пришли модель. Так быстрее получится разобраться.
...
Рейтинг: 0 / 0
12.07.2013, 14:35
    #38329434
Олегон
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PowerDesigner. PDM. Генерация SQL-кода внешнего ключа на не выбранную таблиц
Infernal V. Raven,

Для примера сделал отдельную модель - 2 таблицы. Модель по настройкам полностью идентична оригинальной - не ней все так же воспроизводится. Если генерировать, когда обе таблицы Accounts и AccountsTypes выбраны, то внешний ключ будет создан - в сгенерированном код присутствует инструкция

Код: sql
1.
2.
3.
alter table Accounts
   add constraint FK_Accounts_AccountsTypes foreign key (account_type_id)
      references AccountsTypes (account_type_id)



Если же выбрать для генерации только таблицу Accounts, то инструкции по созданию внешнего ключа не будет.

Для генерации у меня используется доработанные настройки DBMS. Если понадобиться, вот этот файл с настройками на dropbox .
...
Рейтинг: 0 / 0
12.07.2013, 19:25
    #38329898
Infernal V. Raven
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PowerDesigner. PDM. Генерация SQL-кода внешнего ключа на не выбранную таблиц
Олегон,

У меня версия более старая, но все же смог открыть в РО.

Скрипт на всю базу, через Generate:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('Accounts') and o.name = 'FK_Accounts_AccountsTypes')
alter table Accounts
   drop constraint FK_Accounts_AccountsTypes
go

...

/*==============================================================*/
/* Table: Accounts                                              */
/*==============================================================*/
...

/*==============================================================*/
/* Table: AccountsTypes                                         */
/*==============================================================*/
...

alter table Accounts
   add constraint FK_Accounts_AccountsTypes foreign key (account_type_id)
      references AccountsTypes (account_type_id)
go

По отдельности - Generate - Selection по одной таблице:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('Accounts') and o.name = 'FK_Accounts_AccountsTypes')
alter table Accounts
   drop constraint FK_Accounts_AccountsTypes
go

if object_id('AccountsTypes', 'u') is not null
  drop table AccountsTypes
go

/*==============================================================*/
/* Table: AccountsTypes                                         */
/*==============================================================*/
create table AccountsTypes
(
  account_type_id      int                  not null,
  account_type_name    nvarchar(200)        not null,
  constraint PK_AccountsTypes primary key (account_type_id),
  constraint AK_KEY_1_ACCOUNTS unique (account_type_id)
)
go

И вторая
Код: sql
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.
if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('Accounts') and o.name = 'FK_Accounts_AccountsTypes')
alter table Accounts
   drop constraint FK_Accounts_AccountsTypes
go

if object_id('Accounts', 'u') is not null
  drop table Accounts
go

/*==============================================================*/
/* Table: Accounts                                              */
/*==============================================================*/
create table Accounts
(
  account_id           int                  not null,
  account_name         nvarchar(200)        not null,
  account_type_id      int                  not null,
  constraint PK_Accounts primary key (account_id)
)
go

alter table Accounts
   add constraint FK_Accounts_AccountsTypes foreign key (account_type_id)
      references AccountsTypes (account_type_id)
go


Вроде все верно, FK во втором случае есть.
...
Рейтинг: 0 / 0
15.07.2013, 07:00
    #38330768
Олегон
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PowerDesigner. PDM. Генерация SQL-кода внешнего ключа на не выбранную таблиц
Infernal V. Raven, спасибо, что попробовал.

Еще бы понять причину. Может всё же это недоработка моей версии. У тебя какая версия?
...
Рейтинг: 0 / 0
15.07.2013, 10:57
    #38330980
Infernal V. Raven
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PowerDesigner. PDM. Генерация SQL-кода внешнего ключа на не выбранную таблиц
ОлегонЕще бы понять причину. Может всё же это недоработка моей версии. У тебя какая версия?
15.3
Но думаю дело не в этом.
Т.к. я применял твой файл ресурсов генерации, то дело скорее всего не в нем. Посмотри все же внимательней Database generation - options
...
Рейтинг: 0 / 0
16.07.2013, 15:00
    #38332907
Олегон
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PowerDesigner. PDM. Генерация SQL-кода внешнего ключа на не выбранную таблиц
Infernal V. Raven,

Database generation - options - я понимаю, если бы во всех случаях не создавались внешние ключи. Но там ведь в опциях все просто. Что там может влиять на это, ума не приложу.
Можешь сделать и выложить скриншоты со своих настроек? Хотя, ведь они сохраняются с моделью, т.е. при открытии моей модели у тебя будут те же самые опции, что и у меня. Но все же, может каких-то опций в модели не сохранены и используются дефолтные.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / PowerDesigner. PDM. Генерация SQL-кода внешнего ключа на не выбранную таблиц / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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