PostgreSQL — создание обновляемых представлений с использованием предложения WITH CHECK OPTION

Опубликовано: 4 Октября, 2022

PostgreSQL — самая передовая в мире база данных общего назначения с открытым исходным кодом. pgAdmin — самый популярный инструмент управления или платформа разработки для PostgreSQL. Это также платформа для разработки с открытым исходным кодом. Его можно использовать в любых операционных системах и запускать либо как настольное приложение, либо как веб-приложение в вашем браузере.

В этой статье мы собираемся обсудить:

  • Настройте pgAdmin для вашей ОС.
  • Создание обновляемых представлений с использованием предложения WITH CHECK OPTION.

Настройте пгадмин:

Скачать pgAdmin можно отсюда. Последняя версия — pgAdmin 4 v5.2.

1. Download the PostgreSQL installer fromhere. Choose the proper version and Windows bits of your PC.

2. After downloading, the Setup Wizard will pop up. Specify the directory. You can keep everything as default and click Next.

3. Now comes the most important part. It will ask to enter a Password. The password is really important, please keep a note of it.

4. Now select the Port Number. By default it is “5432”.

5.Click Next and then install the setup. No need to add the Stack Builder, uncheck it and click on Finish.

6. Now install pgAdmin from the link provided above. 

7. After installation finishes, restart your computer to ensure pgAdmin is working.

8. Open the pgAdmin from the Start window and then it will ask for a password. You should use the same password as discussed in Step 3.

9. Now click on Server and you can easily create a database and write a query in the Query Tool.

Для создания базы данных и таблиц, а также для получения дополнительной информации об инструменте запросов в pgAdmin посетите CREATE и Рекурсивный запрос.

Пример ввода:

Рассмотрим приведенную ниже модель ER. ниже, чтобы создать таблицы сведений о сотрудниках и сведениях об отделах для компании.

Создание обновляемых представлений с использованием предложения WITH CHECK OPTION:

Представление обычно создается, когда мы хотим показать подмножество таблицы путем выбора определенных строк или столбцов. Он используется для ограничения доступа к исходной таблице, и пользователи могут видеть подчасть базовой таблицы . Для получения более подробной информации о представлениях и их типах посетитеPostgreSQL — Создание обновляемых представлений .

Подведем итоги создания обновляемых представлений, как обсуждалось в PostgreSQL — Создание обновляемых представлений и проблемы, с которыми пришлось столкнуться:

Входы:

1. Детали отдела

2. Данные о сотруднике

Теперь давайте создадим обновляемое представление для таблицы сотрудников. Сделаем просмотр для всех сотрудников, работающих в «отделе кадров» компании.

CREATE VIEW employees_hr
AS SELECT employee_id,employee_name,department_id
FROM Employee
WHERE department_id=100

Поскольку это обновляемое представление, мы можем вставить значения, и они отразятся в таблице Employee. Если «Department_ID» вновь вставленного значения равен 100 , то оно будет добавлено как в таблицу сотрудников, так и в таблицу представления Employees_HR, иначе оно не будет добавлено в это представление HR, поскольку условие WHERE становится FALSE.

Вставка новых данных в обновляемом представлении

Новая таблица сотрудников

Теперь мы также можем удалить представление и сделать его невидимым, выполнив запрос UPDATE, как показано ниже. Предположим, мы удалим Неху из «представления отдела кадров» и установим какой-нибудь другой отдел, а также изменим ее имя на «Нехаа».

UPDATE employees_hr 
SET
    employee_name="Nehaa",
    department_id=104
WHERE
employee_id=1004

/* Removing view Neha from HR by updating her name and department */

Неха теперь невидима в этом виде

Nehaa обновляется в таблице сотрудников

Это проблема в обновляемом представлении без WITH CHECK OPTION. Пользователь, имеющий доступ к «просмотру HR», может легко изменить данные, и изменение в них отразится обратно в родительской таблице. Это плохой знак для любой организации, потому что они предоставляют пользователям доступ для изменения данных. Люди могут указать неправильные данные, а также изменить назначение сотрудника. Следовательно, данные больше не в безопасности в базе данных.

Итак, чтобы преодолеть это, мы можем использовать предложение WITH CHECK OPTION. Сделаем еще одно представление для сотрудников, работающих в отделе продаж, имеющих идентификатор отдела = 101.

CREATE VIEW employees_Sales AS
SELECT * FROM Employee
WHERE department_id=101 WITH CHECK OPTION

Теперь давайте попробуем вставить данные о сотруднике, который не из отдела продаж, а также попробуем ОБНОВИТЬ запись из этого представления.

ВСТАВЛЯТЬ

ОБНОВИТЬ

Следовательно, поддерживается согласованность, а опция WITH CHECK запрещает пользователю не вставлять или не обновлять любые данные, которые не относятся к созданному представлению.