Mengelola view

Perancangan Basis Data

Lis Sulmont

Curriculum Manager

Membuat view yang lebih kompleks

  • Agregasi: SUM(), AVG(), COUNT(), MIN(), MAX(), GROUP BY, dll.
  • Join: INNER JOIN, LEFT JOIN. RIGHT JOIN, FULL JOIN
  • Kondisional: WHERE, HAVING, UNIQUE, NOT NULL, AND, OR,>,<, dll.
Perancangan Basis Data

Memberi dan mencabut akses ke view

GRANT privilege(s) atau REVOKE privilege(s)

ON object

TO role atau FROM role

  • Privilege: SELECT, INSERT, UPDATE, DELETE, dll.
  • Objek: tabel, view, skema, dll.
  • Role: pengguna basis data atau grup pengguna basis data
Perancangan Basis Data

Contoh pemberian dan pencabutan akses

$$

GRANT UPDATE ON ratings TO PUBLIC;  

$$

REVOKE INSERT ON films FROM db_user;
Perancangan Basis Data

Memperbarui view

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

Tidak semua view dapat di-update

  • View terdiri dari satu tabel
  • Tidak memakai fungsi jendela atau agregat
1 https://www.postgresql.org/docs/9.5/sql-update.html
Perancangan Basis Data

Insert ke dalam view

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

Tidak semua view dapat di-insert

1 https://www.postgresql.org/docs/9.5/sql-insert.html
Perancangan Basis Data

Insert ke dalam view

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

Tidak semua view dapat di-insert

Inti: hindari mengubah data lewat view

1 https://www.postgresql.org/docs/9.5/sql-insert.html
Perancangan Basis Data

Menghapus view

DROP VIEW view_name [ CASCADE | RESTRICT ];
  • RESTRICT (default): error jika ada objek yang bergantung pada view
  • CASCADE: menghapus view dan semua objek yang bergantung padanya
Perancangan Basis Data

Mendefinisikan ulang view

CREATE OR REPLACE VIEW view_name AS new_query
  • Jika view view_name sudah ada, akan diganti
  • new_query harus menghasilkan nama kolom, urutan, dan tipe data yang sama dengan query lama
  • Output kolom boleh berbeda
  • Kolom baru boleh ditambah di akhir

Jika syarat ini tak terpenuhi, hapus view lama lalu buat baru

1 https://www.postgresql.org/docs/9.2/sql-createview.html
Perancangan Basis Data

Mengubah view

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
Perancangan Basis Data

Ayo berlatih!

Perancangan Basis Data

Preparing Video For Download...