Có, PostgreSQL cho phép người dùng tạo các kiểu dữ liệu riêng (custom data types) để đáp ứng nhu cầu cụ thể của ứng dụng. Việc này mang lại sự linh hoạt trong cách lưu trữ và quản lý dữ liệu, giúp cải thiện tính tổ chức và dễ hiểu của cơ sở dữ liệu.
Kiểu dữ liệu phức hợp cho phép bạn kết hợp nhiều trường dữ liệu lại với nhau thành một kiểu duy nhất. Điều này rất hữu ích khi bạn muốn nhóm các thuộc tính liên quan.
Ví dụ:
-- Tạo kiểu dữ liệu phức hợp cho địa chỉ CREATE TYPE full_address AS ( street VARCHAR, -- Tên đường city VARCHAR, -- Thành phố zip_code VARCHAR -- Mã bưu điện );
Kiểu dữ liệu enum cho phép bạn định nghĩa một tập hợp các giá trị cố định mà một trường có thể nhận. Điều này giúp kiểm soát và hạn chế các giá trị đầu vào, đảm bảo tính chính xác của dữ liệu.
Ví dụ:
-- Tạo kiểu dữ liệu enum cho tâm trạng CREATE TYPE mood AS ENUM ('happy', 'sad', 'neutral');
Kiểu dữ liệu khoảng cho phép bạn lưu trữ các khoảng giá trị, như khoảng số hoặc khoảng thời gian. Điều này giúp quản lý dữ liệu theo cách trực quan hơn, ví dụ như lưu trữ các khoảng thời gian cho các sự kiện.
Ví dụ:
-- Tạo kiểu dữ liệu khoảng cho số nguyên CREATE TABLE temperature_readings ( range int4range -- Lưu trữ khoảng giá trị của nhiệt độ );
Bạn có thể định nghĩa các hàm cho kiểu dữ liệu riêng của mình để thực hiện các thao tác hoặc tính toán cụ thể. Điều này cho phép bạn mở rộng khả năng của kiểu dữ liệu một cách linh hoạt.
Ví dụ:
-- Tạo hàm để tính toán độ dài của địa chỉ CREATE FUNCTION get_address_length(address full_address) RETURNS INTEGER AS $$ BEGIN RETURN LENGTH(address.street) + LENGTH(address.city) + LENGTH(address.zip_code); END; $$ LANGUAGE plpgsql;
Dưới đây là ví dụ về cách sử dụng kiểu dữ liệu phức hợp full_address
trong một bảng:
-- Tạo bảng sử dụng kiểu dữ liệu phức hợp CREATE TABLE addresses ( id SERIAL PRIMARY KEY, -- Khóa chính tự động tăng address full_address -- Sử dụng kiểu dữ liệu phức hợp );