powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / PowerDesigner/PDM: разделение таблицы на две, с маппингом атрибутов.
1 сообщений из 1, страница 1 из 1
PowerDesigner/PDM: разделение таблицы на две, с маппингом атрибутов.
    #39648282
Dmitry Be
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые коллеги, подскажите пож. по такой ситуации при проектировании БД в PowerDesigner:

Есть 2 физических модели БД, новая и старая. В новой модели таблица Abonent (Abonent_Id; Name; Login; Password) меняет структуру, разбивается на две:
Abonent (Id; Name)
и Logins (Id; Abonent_Id; Login; Password).

С помощью инструмента «Mapping editor» настроен маппинг между атрибутами таблиц:
(Abonent.Abonent_Id -> Abonent.Id; Abonent.Name -> Abonent.Name)
(Abonent.Abonent_Id -> Logins.Abonent_Id; Abonent.Login -> Logins.Login; Abonent.Password-> Logins.Password)

Запускаю «Apply model changes to Database», получаю скрипт на изменение
Но в скрипте есть изменение только первой таблицы, причем не очень корректное. А вторая таблица вообще не тронута.

Что нужно сделать, чтобы таблица Logins также была заполнена, как и Abonent?
Хочется добиться такого примерно текста:

insert into logins (id_abonent, login, password)
select id_abonent, login, password
from tmp_abonent


Скрипт создания:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create table abonent 
(
   abonent_id           integer                        not null,
   name                 varchar(50)                    null,
   "login"              char(20)                       null,
   password             varchar(50)                    null
);

alter table abonent
   add constraint pk_abonent primary key clustered (abonent_id);



Скрипт изменения:
Код: 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.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
if exists(
   select 1 from sys.sysconstraint k
      join sys.systab t on (t.object_id = k.table_object_id and t.table_name='abonent')
   where
      k.constraint_type = 'P'
) then
    alter table abonent
   delete primary key
end if;

drop table if exists tmp_abonent;

alter table abonent rename tmp_abonent;

/*==============================================================*/
/* Table: abonent                                               */
/*==============================================================*/
create table abonent 
(
   id                   integer                        not null,
   name                 varchar(50)                    null,
   constraint pk_abonent primary key clustered (id)
);

--warning: the following insert order will fail because it cannot give value to mandatory columns
insert into abonent (id, name)
select ?, name
from tmp_abonent;

/*==============================================================*/
/* Table: logins                                                */
/*==============================================================*/
create table logins 
(
   id                   integer                        not null,
   "login"              char(20)                       null,
   password             varchar(50)                    null,
   abonent_id           integer                        null,
   login_type           char(2)                        null,
   constraint pk_logins primary key clustered (id)
);

alter table logins
   add constraint fk_logins_reference_abonent foreign key (abonent_id)
      references abonent (id)
      on update restrict
      on delete restrict;
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / PowerDesigner/PDM: разделение таблицы на две, с маппингом атрибутов.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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