Správa pohledů

Database Design

Lis Sulmont

Curriculum Manager

Vytváření složitějších pohledů

  • Agregace: SUM(), AVG(), COUNT(), MIN(), MAX(), GROUP BY atd.
  • Spojení: INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN
  • Podmínky: WHERE, HAVING, UNIQUE, NOT NULL, AND, OR, >, < atd.
Database Design

Udělování a odebírání přístupu k pohledu

GRANT privilege(s) nebo REVOKE privilege(s)

ON object

TO role nebo FROM role

  • Oprávnění: SELECT, INSERT, UPDATE, DELETE atd.
  • Objekty: tabulka, pohled, schéma atd.
  • Role: databázový uživatel nebo skupina uživatelů
Database Design

Příklad udělení a odebrání přístupu

$$

GRANT UPDATE ON ratings TO PUBLIC;  

$$

REVOKE INSERT ON films FROM db_user;
Database Design

Aktualizace pohledu

UPDATE films SET kind = 'Dramatic' WHERE kind = 'Drama';

Ne všechny pohledy lze aktualizovat

  • Pohled je tvořen jednou tabulkou
  • Nepoužívá okenní ani agregační funkci
1 https://www.postgresql.org/docs/9.5/sql-update.html
Database Design

Vkládání dat do pohledu

INSERT INTO films (code, title, did, date_prod, kind)
    VALUES ('T_601', 'Yojimbo', 106, '1961-06-16', 'Drama');

Ne všechny pohledy umožňují vkládání

1 https://www.postgresql.org/docs/9.5/sql-insert.html
Database Design

Vkládání dat do pohledu

INSERT INTO films (code, title, did, date_prod, kind)
    VALUES ('T_601', 'Yojimbo', 106, '1961-06-16', 'Drama');

Ne všechny pohledy umožňují vkládání

Doporučení: vyhněte se úpravám dat přes pohledy

1 https://www.postgresql.org/docs/9.5/sql-insert.html
Database Design

Odstranění pohledu

DROP VIEW view_name [ CASCADE | RESTRICT ];
  • RESTRICT (výchozí): vrátí chybu, pokud na pohled závisí jiné objekty
  • CASCADE: odstraní pohled i všechny závislé objekty
Database Design

Předefinování pohledu

CREATE OR REPLACE VIEW view_name AS new_query
  • Pokud pohled s názvem view_name existuje, bude nahrazen
  • new_query musí vracet stejné názvy sloupců, pořadí a datové typy jako původní dotaz
  • Výstupní hodnoty sloupců se mohou lišit
  • Nové sloupce lze přidat na konec

Pokud tato kritéria nelze splnit, odstraňte stávající pohled a vytvořte nový

1 https://www.postgresql.org/docs/9.2/sql-createview.html
Database Design

Úprava pohledu

ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name SET DEFAULT expression
ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name DROP DEFAULT
ALTER VIEW [ IF EXISTS ] name OWNER TO new_owner
ALTER VIEW [ IF EXISTS ] name RENAME TO new_name
ALTER VIEW [ IF EXISTS ] name SET SCHEMA new_schema
ALTER VIEW [ IF EXISTS ] name SET ( view_option_name [= view_option_value] [, ... ] )
ALTER VIEW [ IF EXISTS ] name RESET ( view_option_name [, ... ] )
1 https://www.postgresql.org/docs/9.2/sql-alterview.html
Database Design

Lass uns üben!

Database Design

Preparing Video For Download...