Содержание
В главе использованы материалы [apex_lab1].
Требования:
Иметь установленное приложение Oracle SQL Developer Data Modeler 3.1
Иметь доступ к Oracle Database 11g или 10g
1. Устанавливаем JDK: см. [MIND], 3.2-3.3.
Для Linux
2. Устанавливаем Oracle SQL Developer Data Modeler: см. [MIND], 3.4-3.5.
datamodeler-3.1.1-703.zip
3. Устанавливаем Oracle SQL Developer: см. [MIND], 3.6-3.7.
sqldeveloper-3.1.07.42.zip
Если выдает ошибку “cannot access nls data files or invalid environment specified” добавляем “AddVMOption -Duser.region=US” во все файлы “sqldeveloper.conf“
4. Устанавливаем Oracle 10g XE: см. [MIND], 3.8.
В этом разделе создадим соединение с HR схемой. Используя это соединение импортируем таблицы EMPLOYEES и DEPARTMENTS в SQL Developer Data Modeler.
1. Запустите Oracle SQL Developer Data Modeler: выберите Пуск > Программы > DataModeler (или откройте каталог С:\datamodeler, выберите datamodeler.exe, М2).
2. Импортируем таблицы из словаря данных, выберите File > Import > Data Dictionary.
3. Окно Data Dictionary Import Wizard открыто. Создадим соединение с БД, выберите Add.
4. Окно New / Update Database Connection открыто. Введите следующие параметры соединения c локальной СУБД или серверной СУБД и выберите Test.
Локальная СУБД |
Серверная СУБД |
Connection Name: hr User Name: hr Password: hr Hostname: localhost SID: xe |
Connection Name: hr252 User Name: hr Password: hr Hostname: 192.168.100.252 SID: xe |
5. Статус должен быть Success. Выберите Connect.
6. В окне Data Dictionary Import Wizard выберите hr соединение и нажмите Next.
7. Импортируйте из HR схемы: выберите HR схема и нажмите Next.
8. Выберите таблицы DEPARTMENTS и EMPLOYEES и нажмите Next.
9. Нажмите Finish для генерация модели.
10. Просмотрите log файл создания и нажмите Close.
11. EMPLOYEES и DEPARTMENTS таблицы удачно импортированы в реляционную модель SQL Developer Data Modeler.
Рисунок 15.1. Таблицы EMPLOYEES и DEPARTMENTS импортированы в реляционную модель SQL Developer Data Modeler
![]() |
В этом разделе просмотрим физичекую модель автоматически созданную при импорте объектов из словаря данных.
13. В Nagivation Browser раскройте Relational Models > Relational_1.
14. Вы видите физическую модель. Раскройте Physical Models > Oracle Database 10g.
15. Раскройте Tables > HR.DEPARTMENTS > Columns. Просмотрите список. Обратите внимание на другие объекты представленные в физической модели.
В этом разделе создадим таблицу PROJECTS. В таблице PROJECTS четыре столбца: PROJECT_ID, PROJECT_NAME, PROJECT_START_DATE, и PROJECT_END_DATE.
16. Выберите New Table в toolbar.
17. Выберите незанятое пространство на диаграмме.
18. Окно Table Properties открыто. Введите PROJECTS для Name и выберите Columns в левом навигаторе.
19. Добавим столбец, выберите Create Column.
20. Введите PROJECT_ID для Name. Выберите Logical для Datatype и NUMERIC для Type.
21. Введите 6 для Precision. Определим PROJECT_ID столбец как первичный ключ. Выберите PK и нажмите Create Column.
22. Введите PROJECT_NAME для Name. Выберите Logical для Datatype иVARCHAR для Type.
23. Введите 100 для Size и нажмите Create Column.
24. Введите PROJECT_START_DATE для Name. Выберите Logical для Datatype и Date для Type. Выберите Create Column.
25. Введите PROJECT_END_DATE для Name. выберите Logical для Datatype и Date для Type. Нажмите OK для создания таблицы.
26. Таблица удачно создана.
В этом разделе создадим внешний ключ между таблицами PROJECTS и DEPARTMENTS.
27. Выберите New FK Relation в toolbar.
28. Создадим внешний ключ в таблице PROJECTS, выберите таблицу DEPARTMENTS и выберите таблицу PROJECTS.
29. Окно Foreign Key Properties открыто. Выберите Associated Columns в левом навигаторе.
30. DEPARTMENTS_DEPARTMENT_ID выберите для Child Column и нажмите OK.
31. Выберите Arrow в toolbar. FK Relation создана. Буква 'F' напротив DEPARTMENTS_DEPARTMENT_ID в таблице PROJECTS определяет этот столбец как внешний ключ.
32. Сделаем FK необязательным, выберите линию соединения двух таблиц, МП, выберите Properties.
33. Отключите Mandatory и нажмите OK.
34. Выберите OK.
35. Нажмите Yes.
36. FK теперь необязателен. Это означает, что можно иметь проект без отдела.
В этом разделе добавим столбец COST_CENTER в таблицу DEPARTMENTS.
37. На диаграмме выберите таблицу DEPARTMENTS. М2.
38. Выберите Columns в левом навигаторе.
39. Создадим новый столбец, выберите Create Column.
40. Введите COST_CENTER для Name, выберите Logical для Datatype, VARCHAR для Type и введите 25 для Size. Нажмите OK для создания столбца.
41. Столбец COST_CENTER создан в таблице DEPARTMENTS.
В этом разделе перепроектируем реляционную модель созданием логической модели.
42. Выберите Engineer to Logical Model в toolbar.
43. Окно Engineer to Logical Model открыто. Раскройте Tables. Просмотрите сущности которые будут созданы в логической модели. Нажмите Engineer.
44. Логическая модель создана. Просмотрите сущности и атрибуты. Диаграмма логической модели называется Entity Relationship Diagram (ERD).
В этом разделе модифицируем логическую модель.
45. Добавим атрибуты в сущность PROJECTS. Выберите сущность PROJECTS, М2.
46. Выберите Attributes в левом навигаторе.
47. Выберите '+' для добавления атрибута.
48. Введите STATUS для Name, выберите Logical для Datatype, выберите VARCHAR для Type, и введите 30 для Size. Выберите атрибут DEPARTMENT_DEPARTMENT_ID из списка.
49. Этот атрибут показывает результат связи между сущностями DEPARTMENTS и PROJECTS. Заметьте, что мы не можем изменить имя этого атрибута. Для этого необходимо изменить параметры настройки. Нажмите OK.
50. Заметьте, что атрибут STATUS добавленный в сущность PROJECTS для связи с DEPARTMENT не показывается на диаграмме. Это происходит так как текущая нотация Barker не показывает такие атрибуты.
51. Изменим значение по умолчанию для атрибутов связи. Выберите Tools > Preferences...
52. Раскройте Data Modeler > Model и выберите Logical. Отключите Keep as the name of the Originating attribute.
53. Нажмите OK.
54. Выберите сущность PROJECTS, М2.
55. Выберите Attributes.
56. Выберите атрибут DEPARTMENT_DEPARTMENT_ID из списка.
57. Заметьте, что теперь можно изменять имя. Измените имя на PROJECT_DEPT и нажмите OK.
58. Изменим нотацию на Bachman. Выберите свободное пространство на диаграмме, МП, выберите Bachman Notation.
59. Нотация изменена. Теперь мы видим атрибуты связи (с буквой 'F') как и первичные атрибуты. Символ '*' перед именем атрибута означает обязательность атрибута.
60. Добавим сущность в логическую модель. Выберите New Entity icon в toolbar.
61. Выберите свободное пространство на диаграмме.
62. Введите TASKS для Name и выберите Attributes.
63. Выберите '+' для добавления атрибута.
64. Введите TASK_ID для Name, выберите Logical для Datatype, выберите NUMERIC для Type, введите 6 для Precision и выберите Primary UID. Выберите '+'.
65. Введите TASK_NAME для Name, выберите Logical для Datatype, выберите VARCHAR для Type и введите 255 для Size. Выберите '+'.
66. Введите COST для Name, выберите Logical для Datatype, выберите NUMERIC для Type и введите 6 для Precision. Выберите '+'.
67. Введите BUDGET для Name, выберите Logical для Datatype, выберите NUMERIC для Type и введите 6 для Precision и нажмите OK для создания сущности и атрибутов.
68. Создадим две связи между EMPLOYEES и TASKS, и между the PROJECTS и TASKS сущностями. Выберите New 1:N Relation в toolbar.
69. Выберите сущность EMPLOYEES и выберите сущность TASKS.
70. Нажмите OK для создания связи.
71. Создадим вторую связь. Выберите сущность PROJECTS и выберите сущность TASKS.
72. Нажмите OK для создани ясвязи.
73. Изменим имя связи в сущности TASKS. Выберите сущность TASKS, М2.
74. Выберите Attributes свойства.
75. выберите атрибут EMPLOYEES_EMPLOYEE_ID из списка.
76. Измените имя на ASSIGNED_TO и выберите атрибут PROJECTS_PROJECT_ID из списка.
77. Изменим имя на PROJECT_ID и нажмите OK.
78. Изменение логической модели закончено.
В этом разделе синхронизируем логическую модель с реляционной моделью.
79. Выберите Engineer to Relational Model.
80. Окно Engineer to Relational Model открыто. Раскройте Entities > PROJECTS > Attributes. Обратите внимание на различия. Нажмите Engineer.
81. Обратите внимание на новый столбец STATUS, измененное имя внешнего ключа PROJECT_DEPT, и новую таблицу TASKS.
Теперь модели готовы и можно синхронизировать словарь данных с моделью и сгенерировать DDL-скрипт.
82. Выберите Synchronize Data Dictionary with Model в toolbar.
83. Окно Compare Models открыто. Узлы где есть изменения
отмечены символом( ). Раскройте Tables узел и увидите новые таблицы PROJECTS и
TASKS. Обратите внимание что таблица DEPARTMENTS изменена.
84. Раскройте DEPARTMENTS > Columns. Столбец COST_CENTER добавлен. Нажмите DDL Preview.
85. Сгенерированный код выведен. Просмотрите команды CREATE и ALTER. Заметьте, что таблицы PROJECTS и TASKS создаются и дополняются первичными ключами.
86. Ниже можно увидить новый столбец внешнего ключа. Нажмите Save.
87. Можно запускать этот скрипт в SQL Developer для обновления БД.
88. Сохраним файл. Нажмите Save.
89. Выберите Close для закрытия окна Compare Models.
90. Сохраним модель. Выберите File > Save.
91. Сохраним файл. Выберите Save.
92. Закройте SQL Developer Data Modeler. Выберите File > Exit.
А разделе изучено:
Импорт таблиц из словаря данных
Просмтр физической модели
Создание новой таблицы и соединение с другой таблицей
Создание нового столбца
Перепроектирование для создания логической модели
Модификация логической модели
Синхронизация логической модели с реляционной
Генерация DDL для обновления БД