Domain
Menyimpan data dalam format yang tepat memastikan integritas data, mencegah kesalahan, mengoptimalkan kinerja, dan mempertahankan konsistensi di seluruh sistem dengan menegakkan aturan validasi dan memungkinkan manajemen data yang efisien. Untuk alasan ini, relasional database tingkat atas seperti PostgreSQL menawarkan berbagai tipe data. Selain itu, PostGresQL memungkinkan pembuatan tipe data khusus melalui pernyataan "CREATE DOMAIN" dan "CREATE TYPE", yang memungkinkan developer untuk memperluas tipe data untuk validasi, integritas, dan konsistensi data spesifik aplikasi yang ditingkatkan. Di blog hari ini, kita akan belajar cara membuat domain khusus untuk database penyewaan DVD gratis menggunakan Navicat Premium 17. Bagian 2 akan mencakup Tipe.
Perbandingan Cepa tantara CREATE DOMAIN dan CREATE TYPE
Meskipun pernyataan CREATE DOMAIN dan CREATE TYPE dapat digunakan untuk membuat tipe data yang ditentukan pengguna, ada beberapa perbedaan utama yang perlu diperhatikan:
- CREATE DOMAIN membuat tipe data yang ditentukan pengguna dengan batasan seperti NOT NULL, CHECK, dll.
- CREATE TYPE membuat tipe komposit yang digunakan dalam prosedur tersimpan sebagai tipe data dari nilai yang dikembalikan.
Membuat Domain Email
Domain memusatkan manajemen kendala yang memungkinkan Anda menentukan aturan validasi yang dapat digunakan kembali di beberapa tabel, seperti membuat kendala standar yang mencegah value NULL dan memangkas spasi untuk tipe field tertentu. Berikut ini contoh yang membuat domain untuk alamat email dengan pemeriksaan validasi:
CREATE DOMAIN email AS VARCHAR(255) CHECK ( VALUE ~ '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}$' ); -- Use in a table definition CREATE TABLE customer_contacts ( customer_id INT, contact_email email );
Navicat Premium 17 dan Navicat for PostgreSQL 17 keduanya menawarkan alat berbasis GUI yang menghasilkan domain dan tipe tanpa harus mengetahui semua syntaxnya. Anda akan menemukan keduanya dibawah “Lainnya” pada toolbar utama. (Kedua menu disorot warna merah dibawah):

Alat domain termasuk empat tab: General, Checks, Comment, dan SQL Preview.
Atribut General
Semua domain didasarkan pada tipe dasar. Dalam kasus ini, tipe tersebut adalah VARCHAR. Setelah kita memilih Kategori Tipe Dasar "Tipe Dasar", kita dapat memilih "pg_catalog" dan "varchar" dari dua menu tarik-turun Tipe Dasar. Kita juga perlu memastikan bahwa VARCHAR kita memiliki Panjang 255. Berikut adalah Tab Umum dengan semua informasi yang diberikan:

Checks
Pada tab berikutnya, kita dapat menentukan satu atau beberapa pemeriksaan yang akan dilakukan saat seseorang mencoba menetapkan nilai ke tipe kita. Pemeriksaan kita akan menguji nilai terhadap RegEx (ekspresi reguler):

SQL Preview
Pada titik ini, kita dapat melanjutkan ke Simpan Domain, yang akan mengeksekusi pernyataan CREATE DOMAIN yang dihasilkan, atau kita dapat mengklik tab SQL Preview untuk melihat pernyataan tersebut sebelum menyimpan:

Perhatikan bahwa Nama Domain adalah "Tanpa Judul" karena kita belum menyimpan definisinya. Ini normal.
Menggunakan Domain email di Tabel
Cara terbaik untuk mengonfirmasi bahwa Domain "email" kita telah dibuat adalah dengan mencobanya dalam sebuah tabel. Tabel "staff" dalam database "dvdrental" menyertakan kolom email. Saat ini, tabel tersebut menyimpan nilai sebagai VARCHAR tanpa pemeriksaan validasi apa pun. Kita dapat mengubah tipe Domain kita dengan memilih opsi "(Domain)" dari menu drop-down Tipe di Desainer Tabel, lalu memilih "public" dan "email" untuk Tipe Objek:

Setelah kita menyimpan tabel, upaya untuk mengubah (atau menambahkan) value yang bukan alamat email yang valid akan mengakibatkan pelanggaran batasan:

Kesimpulan
Dengan membuat Domain khusus untuk basis data dvdrental gratis, kita melihat bagaimana domain membantu memusatkan manajemen kendala dengan memungkinkan kita menentukan aturan validasi yang dapat digunakan kembali. Di bagian 2, kita akan membuat tipe kita sendiri menggunakan alat Tipe Navicat Premium 17.