upd
This commit is contained in:
Binary file not shown.
@@ -599,99 +599,224 @@ REFERENCES "Countries"."REGIONS" ("REGION_ID");
|
||||
|
||||
===== Задание 5. Создания индекса с помощью графического интерфейса pgadmin.
|
||||
|
||||
В таблице EmployeesDepartments.LOCATIONS, я выбрал раздел меню для создания индекса:
|
||||
В таблице EmployeesDepartments.LOCATIONS, я выбрал раздел меню для создания индекса (Рис. 41):
|
||||
|
||||
#align(center)[#image("part2/assets/22.png")]
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/22.png"),
|
||||
caption: [Меню для создания индекса.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
Я в диалоге создания индекса я передал следующие параметры:
|
||||
Я в диалоге создания индекса я передал следующие параметры (Рис. 42, 43, 44):
|
||||
|
||||
#align(center)[#image("part2/assets/23.png")]
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/23.png"),
|
||||
caption: [Параметры создания индекса. Вкладка General.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
#align(center)[#image("part2/assets/24.png")]
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/24.png"),
|
||||
caption: [Параметры создания индекса. Вкладка Definition.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
#align(center)[#image("part2/assets/25.png")]
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/25.png"),
|
||||
caption: [Параметры создания индекса. Вкладка Columns.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
sql:
|
||||
|
||||
#align(center)[#image("part2/assets/26.png")]
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/26.png"),
|
||||
caption: [SQL скрипт создания индекса.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
===== Задание 6. Построение диаграмм базы данных.
|
||||
|
||||
Для создания диаграммы я нажал ПКМ на узел базы данных и выбрал параметр "ERD For Database":
|
||||
Для создания диаграммы я нажал ПКМ на узел базы данных и выбрал параметр "ERD For Database" (Рис. 46):
|
||||
|
||||
#align(center)[#image("part2/assets/27.png")]
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/27.png"),
|
||||
caption: [Меню создание ERD-диаграммы.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
Затем я скорректировал вид своей диаграммы в соответствии с условием:
|
||||
#align(center)[#image("part2/assets/28.png")]
|
||||
Затем я скорректировал вид своей диаграммы в соответствии с условием (Рис. 47):
|
||||
|
||||
Я экспортировал снимок диаграммы, нажав на соответствующую кнопку. Результат:
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/28.png"),
|
||||
caption: [Вид ERD-диаграммы.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
#align(center)[#image("part2/assets/29.png")]
|
||||
Я экспортировал снимок диаграммы, нажав на соответствующую кнопку. Результат (Рис. 48):
|
||||
|
||||
Сохранил проект диаграммы:
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/29.png"),
|
||||
caption: [Рисунок диаграммы.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
#align(center)[#image("part2/assets/30.png")]
|
||||
Сохранил проект диаграммы (Рис. 49):
|
||||
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/30.png"),
|
||||
caption: [Сохраненный проект диаграммы.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
===== Задание 7. Добавление данных в таблицу.
|
||||
|
||||
Я раскрыл меню для генерирования скрипта по вставке данных в таблицу Countries.CURRENCIES:
|
||||
Я раскрыл меню для генерирования скрипта по вставке данных в таблицу Countries.CURRENCIES (Рис. 50):
|
||||
|
||||
#align(center)[#image("part2/assets/31.png")]
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/31.png"),
|
||||
caption: [Меню для генерирования скрита.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
Затем я добавил следующий код в скрипт:
|
||||
Затем я добавил следующий код в скрипт (Рис. 51):
|
||||
|
||||
```sql
|
||||
INSERT INTO "Countries"."CURRENCIES"("COMMENTS", "CURRENCY_NAME", "CURRENCY_CODE")
|
||||
VALUES('EuroZone', 'Euro', 'EUR');
|
||||
```
|
||||
|
||||
#align(center)[#image("part2/assets/32.png")]
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/32.png"),
|
||||
caption: [Скрипт в query tool.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
После запуска скрипта проверил при помощи:
|
||||
После запуска скрипта проверил при помощи (Рис. 52):
|
||||
|
||||
```sql
|
||||
select * from "Countries"."CURRENCIES";
|
||||
```
|
||||
|
||||
#align(center)[#image("part2/assets/33.png")]
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/33.png"),
|
||||
caption: [Скрипт в query tool.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
В столбце EMPLOYEE_ID я заменил identity с always на by default.
|
||||
В столбце EMPLOYEE_ID я заменил identity с always на by default (Рис. 53).
|
||||
|
||||
#align(center)[#image("part2/assets/34.png")]
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/34.png"),
|
||||
caption: [Изменение параметра identity.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
Затем при помощи графического интерфейса pgadmin, я добавил запись в таблицу "EmployeesDepartments"."EMPLOYEES":
|
||||
|
||||
#align(center)[#image("part2/assets/35.png")]
|
||||
Затем при помощи графического интерфейса pgadmin, я добавил запись в таблицу "EmployeesDepartments"."EMPLOYEES" (Рис. 54, 55):
|
||||
|
||||
#align(center)[#image("part2/assets/36.png")]
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/35.png"),
|
||||
caption: [Просмотр строк таблицы.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
Затем я добавил строку и сохранил данные:
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/36.png"),
|
||||
caption: [Пустые строки таблицы.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
#align(center)[#image("part2/assets/37.png")]
|
||||
#align(center)[#image("part2/assets/38.png")]
|
||||
#align(center)[#image("part2/assets/39.png")]
|
||||
|
||||
Затем, в query tool я ввел следующий код:
|
||||
Затем я добавил строку и сохранил данные (Рис. 56, 57, 58):
|
||||
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/37.png"),
|
||||
caption: [Добавление строки.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/38.png"),
|
||||
caption: [Добавление строки.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/39.png"),
|
||||
caption: [Новая строка сохранена.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
Затем, в query tool я ввел следующий код (Рис. 59):
|
||||
|
||||
```sql
|
||||
INSERT INTO "EmployeesDepartments"."EMPLOYEES"("FIRST_NAME", "LAST_NAME", "EMAIL", "PHONE_NUMBER", "JOB_ID", "SALARY", "COMMISSION_PCT", "MANAGER_ID", "DEPARTMENT_ID")
|
||||
VALUES(2, 'Steven', 'King', 'SKING', '515.123.4567', 'AD_PRES', 24000, null, null, 90);
|
||||
```
|
||||
|
||||
#align(center)[#image("part2/assets/40.png")]
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/40.png"),
|
||||
caption: [Код в query tool.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
Проверим:
|
||||
Проверим (Рис. 60):
|
||||
|
||||
```sql
|
||||
SELECT * FROM "EmployeesDepartments"."EMPLOYEES";
|
||||
```
|
||||
|
||||
#align(center)[#image("part2/assets/41.png")]
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/41.png"),
|
||||
caption: [Скрипт в query tool.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
|
||||
===== Задание 8. Ограничения для столбцов.
|
||||
|
||||
Я добавил ограничения к таблицам "Countries"."SPOKEN_LANGUAGES" и "EmployeesDepartments"."EMPLOYEES" при помощи следующего кода:
|
||||
Я добавил ограничения к таблицам "Countries"."SPOKEN_LANGUAGES" и "EmployeesDepartments"."EMPLOYEES" при помощи следующего кода (Рис. 61, 62):
|
||||
|
||||
```sql
|
||||
ALTER TABLE "Countries"."SPOKEN_LANGUAGES"
|
||||
@@ -699,10 +824,23 @@ ADD CONSTRAINT "CTRY_NUM_FK1" FOREIGN KEY ("COUNTRY_ID")
|
||||
REFERENCES "Countries"."COUNTRIES" ("COUNTRY_ID");
|
||||
```
|
||||
|
||||
#align(center)[#image("part2/assets/42.png")]
|
||||
#align(center)[#image("part2/assets/43.png")]
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/42.png"),
|
||||
caption: [Добавления ограничений через query tool.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
и
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/43.png"),
|
||||
caption: [Ограничения таблицы SPOKEN_LANGUAGES.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
и (Рис. 63, 64)
|
||||
|
||||
```sql
|
||||
ALTER TABLE "EmployeesDepartments"."EMPLOYEES"
|
||||
@@ -710,20 +848,60 @@ ADD CONSTRAINT "EMP_SALARY_MIN"
|
||||
CHECK ("SALARY" > 0);
|
||||
```
|
||||
|
||||
#align(center)[#image("part2/assets/44.png")]
|
||||
#align(center)[#image("part2/assets/45.png")]
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/44.png"),
|
||||
caption: [Добавление ограничения через query tool.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
Затем я добавил еще одно ограничение для таблицы JOB_HISTORY. Для этого в свойствах таблицы в разделе constraints добавил check c условием, что "END_DATE" > "START_DATE":
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/45.png"),
|
||||
caption: [Добавленное ограничение.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
#align(center)[#image("part2/assets/46.png")]
|
||||
#align(center)[#image("part2/assets/47.png")]
|
||||
|
||||
Я включил это ограничение выключив соответствующую опцию:
|
||||
Затем я добавил еще одно ограничение для таблицы JOB_HISTORY. Для этого в свойствах таблицы в разделе constraints добавил check c условием, что "END_DATE" > "START_DATE" (Рис. 65, 66):
|
||||
|
||||
#align(center)[#image("part2/assets/48.png")]
|
||||
#align(center)[#image("part2/assets/49.png")]
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/46.png"),
|
||||
caption: [Добавление ограничения для JOB_HISTORY.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
Также я проверил работоспособность ограничения:
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/47.png"),
|
||||
caption: [Добавленное ограничение.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
Я включил это ограничение выключив соответствующую опцию (Рис. 67, 68):
|
||||
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/48.png"),
|
||||
caption: [Выключенная функция "Don't validate?".],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/49.png"),
|
||||
caption: [Включенное ограничение.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
Также я проверил работоспособность ограничения (Рис. 69, 70):
|
||||
|
||||
```sql
|
||||
INSERT INTO "EmployeesDepartments"."JOB_HISTORY"
|
||||
@@ -731,7 +909,13 @@ INSERT INTO "EmployeesDepartments"."JOB_HISTORY"
|
||||
VALUES(200, '06-17-1993', '09-17-1987', 'AD_ASST', 90);
|
||||
```
|
||||
|
||||
#align(center)[#image("part2/assets/50.png")]
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/50.png"),
|
||||
caption: [Ошибка. Скрипт не отрабатывает.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
и
|
||||
|
||||
@@ -741,25 +925,44 @@ INSERT INTO "EmployeesDepartments"."JOB_HISTORY"
|
||||
VALUES(200, '06-17-1981', '06-17-1993', 'AD_ASST', 90);
|
||||
```
|
||||
|
||||
#align(center)[#image("part2/assets/51.png")]
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/51.png"),
|
||||
caption: [Скрипт отрабатывает без ошибки.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
===== Задание 9. Очистка таблиц и завершение создания БД HR.
|
||||
|
||||
Я произвел очистку таблицы EMPLOYEES с помощью DDL команды `TRUNCATE`:
|
||||
Я произвел очистку таблицы EMPLOYEES с помощью DDL команды `TRUNCATE` (Рис. 71):
|
||||
|
||||
```sql
|
||||
TRUNCATE "EmployeesDepartments"."EMPLOYEES";
|
||||
```
|
||||
|
||||
#align(center)[#image("part2/assets/52.png")]
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/52.png"),
|
||||
caption: [Выполнение команды `TRUNCATE`.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
Также я очистил JOB_HISTORY и CURRENCIES:
|
||||
|
||||
Также я очистил JOB_HISTORY и CURRENCIES (Рис. 72, 73):
|
||||
|
||||
```sql
|
||||
TRUNCATE "EmployeesDepartments"."JOB_HISTORY";
|
||||
```
|
||||
|
||||
#align(center)[#image("part2/assets/53.png")]
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/53.png"),
|
||||
caption: [Выполнение команды `TRUNCATE`.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
и
|
||||
|
||||
@@ -767,19 +970,43 @@ TRUNCATE "EmployeesDepartments"."JOB_HISTORY";
|
||||
TRUNCATE "Countries"."CURRENCIES";
|
||||
```
|
||||
|
||||
#align(center)[#image("part2/assets/54.png")]
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/54.png"),
|
||||
caption: [Исполнение команды `TRUNCATE`.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
После очистки я выполнил код из файла `script2_alter.sql`:
|
||||
После очистки я выполнил код из файла `script2_alter.sql` (Рис. 74):
|
||||
|
||||
#align(center)[#image("part2/assets/55.png")]
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/55.png"),
|
||||
caption: [Исполнение скрипта `script2_alter.sql`.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
И для добавления данных, я выполнил скрипт `script3_insert.sql`:
|
||||
И для добавления данных, я выполнил скрипт `script3_insert.sql` (Рис. 75):
|
||||
|
||||
#align(center)[#image("part2/assets/56.png")]
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/56.png"),
|
||||
caption: [Исполнение скрипта `script3_insert.sql`.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
Результат:
|
||||
Результат (Рис. 76):
|
||||
|
||||
#align(center)[#image("part2/assets/57.png")]
|
||||
#align(center)[
|
||||
#figure(
|
||||
image("part2/assets/57.png"),
|
||||
caption: [Получившаяся ERD-диаграмма.],
|
||||
supplement: [Рис]
|
||||
)
|
||||
]
|
||||
|
||||
=== Выводы.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user