powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Reverse Engineering UMLа с Entity Attribute Value базы данных. Как?
4 сообщений из 4, страница 1 из 1
Reverse Engineering UMLа с Entity Attribute Value базы данных. Как?
    #36650307
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Есть база данных, которая хранит данные об объектах в таблицах вида Entity Attribute Value. Это когда объекты раскиданы не по таблицам Клиент, Поставщик, Продукт и т.д., а по таблицам Classes, Objects, Attributes, AttributeValues, где каждой таблице стандартной реляционной модели соответствует запись(и) в таблице Classes, каждой строке стандартной модели соответствует Objects со связанными значениями из AttributeValues. Пример смотрите на скриншоте.

Так вот. Есть необходимость автоматизировать построение UML диаграмм по базе, хранящую данные в EAV-виде. То-есть, чтобы некая программа разобрала Classes, поняла, какие UML-сущности рисовать, и простроила их, создав атрибуты по таблице Attributes, вместе с зависимостями классов между собой (зависимости хранятся в полях таблицы Classes).

Скорей всего, готово инструментария нет (или есть?). В таком случае мне нужно просто средство построения UML-диаграмм, которое можно автоматизировать. Есть ли такое средство? Я тогда смог бы написать для него скрипт, который залезет в базу, разберет ее структуру, и сгенерит UML. Или напишу программу, которая сгенерирует, например, UML-диаграмму в виде xml или еще каким-нибудь, чтобы это средство могло импортировать.

Вобщем, вопрос. Подскажите, пожалуйста, оптимальный способ (и средства), как можно автоматизировать построение UML-диграммы в графическом виде?
...
Рейтинг: 0 / 0
Reverse Engineering UMLа с Entity Attribute Value базы данных. Как?
    #36651924
Kasper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например PD.

Вот кусок скрипта - может поможет:
Код: 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.
'-----------------------------------------------------------------------------
' Initialization
'-----------------------------------------------------------------------------
Const CONNECTION = "Provider=SQLOLEDB.1;Password=yurakasp;Persist Security Info=True;" &_
"User ID=okr;Initial Catalog=CTD_DB;Data Source=SQL01-SRV;Use Procedure for Prepare=1;" &_
"Auto Translate=True;Packet Size=4096;Workstation ID=ABK-511C-PC;" &_
"Use Encryption for Data=False;Tag with column collation when possible=False"

Dim cnx ' connection object
set cnx = CreateObject("ADODB.Connection")
cnx.Open CONNECTION

Dim rs ' recordset


'-----------------------------------------------------------------------------
' Main function
'-----------------------------------------------------------------------------
Dim mdl ' the current model
Set mdl = ActiveModel
If (mdl Is Nothing) Then
   MsgBox "There is no current model"
ElseIf Not mdl.IsKindOf(PdOOM.cls_Model) Then
   MsgBox "The current model is not an OOM model."
   
end  if
' тут ваша выборка - сообразите сами
set rs = cnx.Execute("SELECT ad.SIGNATURE, ad.COPRORATION_NAME, ad.CORPORATION_DESIGN,	a.SIGNATURE as ROOT" &_
" FROM  dbo.INFO_CORPORATION ad, dbo.INFO_CORPORATION a WHERE  (a.ID = ad.ID_PARENT) ")


   '
   Dim Map 'Для поиска исвязи объектов после загрузки
  
   Set Map = CreateObject("Scripting.Dictionary")


Do Until rs.EOF 
   '
... далее, что вам нужно загрузить
...

 Map.add ou, rs("SIGNATURE") 'Fill map 
 rs.MoveNext
  
Loop
...
Рейтинг: 0 / 0
Reverse Engineering UMLа с Entity Attribute Value базы данных. Как?
    #36651943
Kasper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Создание объекта в PD:
Код: 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.
 Dim ou 'Object
 set ou=mdl.{ClassObject}.createnew
 ' далее присвоить свойства - типа
 AddObjectProperties  rs , ou


' Вот простой вариант - исправте, что Вам надо
Private Sub AddObjectProperties (S, T)

         on error resume next
         T.Code = S("Code")
         
         if err.number <>  0  then
            err.number= 0 
            T.Delete()
            exit sub
         end if
         T.Name = S("Name")
         
         if err.number <>  0  then
            err.number= 0 
            T.Delete()
            exit sub
         end if
         T.Description = S("Descriptio") 
         T.Annotation = S("Annotation")      
         T.Comment = S("Descriptio")
         T.Stereotype = S("ExtendedObject")'"role"
         on error goto  0        
End Sub
...
Рейтинг: 0 / 0
Reverse Engineering UMLа с Entity Attribute Value базы данных. Как?
    #36653263
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ух ты! Класс! Спасибо!

А еще есть какие интересные варианты?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Reverse Engineering UMLа с Entity Attribute Value базы данных. Как?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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