Глава 15. Лабораторная работа «Разработка web-приложения в среде Oracle Application Express»

Содержание

15.1. Перепроектирование БД используя Oracle SQL Developer Data Modeler 3.1
15.1.1. Установка  Oracle SQL Developer Data Modeler
15.1.2. Импорт таблиц из HR схемы
15.1.3. Просмотр физической модели
15.1.4. Создание таблицы
15.1.5. Соединение новой таблицы с выходной таблицей
15.1.6. Модификация выходной таблицы
15.1.7. Создание логической модели
15.1.8. Модификация логической модели
15.1.9. Синхронизация логической модели с реляционной моделью
15.1.10. Генерация DDL обновления БД
15.1.11. Итого
15.2. Тестирование и отладка процедур с помощью SQL Developer 3.1
15.2.1. Создание соединения БД
15.2.2. Просмотр объектов в HR схеме
15.2.3. Выполнение DDL скрипта
15.2.4. Создание табличных API
15.2.5. Создание, выполнение и отладка процедуры
15.2.6. Создание Unit Test Repository
15.2.7. Создание и запуск Unit Test
15.2.8. Итого
15.3. Настройка APEX
15.3.1. Вступление о APEX
15.3.2. Установка Oracle10g XE
15.3.3. Установка Oracle10g XE (Linux)
15.3.4. Установка Apex
15.3.5. Установка APEX (Linux)
15.3.6. Настройка APEX
15.4. Построение приложения с использованием Oracle Application Express: часть I
15.4.1. Использование Data Workshop для загрузки данных в таблицу
15.4.2. Создание приложения БД с помощью мастера
15.4.3. Модификация интерактивного отчета
15.4.4. Создание и манипуляция данных в календаре
15.4.5. Добавление мастера загрузки данных
15.4.6. Создание и использование списка значений
15.4.7. Создание проверок
15.4.8. Итого
15.5. Построение приложения с использованием Oracle Application Express: часть II
15.5.1. Создание и переключение между разными темами
15.5.2. Создание диаграммы
15.5.3. Включение и отключение Items используя Dynamic Action
15.5.4. Показ и сокрытие Region с использованием Dynamic Action
15.5.5. Вычисление и вывод значений Items используя Dynamic Action
15.5.6. Импорт и использование Plug-In
15.5.7. Создание табличной формы
15.5.8. Добавление проверки табличной формы
15.5.9. Итого
15.6. Контрольная работа оРЕX
15.6.1. Настройка среды
15.6.2. Моделирование логической модели
15.6.3. Моделирование реляционной модели
15.6.4. Моделирование физической модели
15.6.5. Рабочее пространство
15.6.6. Генерация объектов БД
15.6.7. Создание приложения
15.7. Литература

15.1. Перепроектирование БД используя Oracle SQL Developer Data Modeler 3.1

В главе использованы материалы [apex_lab1].

Требования:

Иметь установленное приложение Oracle SQL Developer Data Modeler 3.1

Иметь доступ к Oracle Database 11g или 10g

15.1.1. Установка  Oracle SQL Developer Data Modeler

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.

15.1.2. Импорт таблиц из HR схемы

В этом разделе создадим соединение с 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

Таблицы EMPLOYEES и DEPARTMENTS импортированы в реляционную модель SQL Developer Data Modeler

15.1.3. Просмотр физической модели

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

13. В Nagivation Browser раскройте Relational Models > Relational_1.

14. Вы видите физическую модель. Раскройте Physical Models > Oracle Database 10g.

15. Раскройте Tables > HR.DEPARTMENTS > Columns. Просмотрите список. Обратите внимание на другие объекты представленные в физической модели.

Рисунок 15.2. Физическая модельв SQL Developer Data Modeler

Физическая модельв SQL Developer Data Modeler

15.1.4. Создание таблицы

В этом разделе создадим таблицу 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. Таблица удачно создана.

Рисунок 15.3. Создание таблицы в SQL Developer Data Modeler

Создание таблицы в SQL Developer Data Modeler

15.1.5. Соединение новой таблицы с выходной таблицей

В этом разделе создадим внешний ключ между таблицами 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 теперь необязателен. Это означает, что можно иметь проект без отдела.

Рисунок 15.4. Соединение таблиц в SQL Developer Data Modeler

Соединение таблиц в SQL Developer Data Modeler

15.1.6. Модификация выходной таблицы

В этом разделе добавим столбец 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.

Рисунок 15.5. Создание столбца в SQL Developer Data Modeler

Создание столбца в SQL Developer Data Modeler

15.1.7. Создание логической модели

В этом разделе перепроектируем реляционную модель созданием логической модели.

42. Выберите Engineer to Logical Model в toolbar.

43. Окно Engineer to Logical Model открыто. Раскройте Tables. Просмотрите сущности которые будут созданы в логической модели. Нажмите Engineer.

44. Логическая модель создана. Просмотрите сущности и атрибуты. Диаграмма логической модели называется Entity Relationship Diagram (ERD).

Рисунок 15.6. Создание логической модели в SQL Developer Data Modeler

Создание логической модели в SQL Developer Data Modeler

15.1.8. Модификация логической модели

В этом разделе модифицируем логическую модель.

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. Изменение логической модели закончено.

Рисунок 15.7. Создание логической модели в SQL Developer Data Modeler

Создание логической модели в SQL Developer Data Modeler

15.1.9. Синхронизация логической модели с реляционной моделью

В этом разделе синхронизируем логическую модель с реляционной моделью.

79. Выберите Engineer to Relational Model.

80. Окно Engineer to Relational Model открыто. Раскройте Entities > PROJECTS > Attributes. Обратите внимание на различия. Нажмите Engineer.

81. Обратите внимание на новый столбец STATUS, измененное имя внешнего ключа PROJECT_DEPT, и новую таблицу TASKS.

Рисунок 15.8. Синхронизация логической модели с реляционной моделью в SQL Developer Data Modeler

Синхронизация логической модели с реляционной моделью в SQL Developer Data Modeler

15.1.10. Генерация DDL обновления БД

Теперь модели готовы и можно синхронизировать словарь данных с моделью и сгенерировать 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.

Рисунок 15.9. Выход из SQL Developer Data Modeler

Выход из SQL Developer Data Modeler

15.1.11. Итого

А разделе изучено:

Импорт таблиц из словаря данных

Просмтр физической модели

Создание новой таблицы и соединение с другой таблицей

Создание нового столбца

Перепроектирование для создания логической модели

Модификация логической модели

Синхронизация логической модели с реляционной    

Генерация DDL для обновления БД