1. |
PostgreSQL'de temel tiplerden* yola çıkarak kendi tiplerinizi tanımlamak için kullanabileceğiniz deyim.
Diyelim ki veritabanınızda bir çok tabloda telefon numarası alanı olacak. Bu alanlara girilen telefon numaralarının formatının doğru olduğunu garantilemek için bir regular expression constraint kullanmayı düşünüyorsunuz. Bunun için tablolarınızı oluştururken;
CREATE TABLE musteri
(
id INT4,
ad VARCHAR(20),
ev_tel CHAR(14) CHECK (ev_tel ~ '\([0-9]{3}\) [0-9]{3} [0-9]{4}'),
is_tel CHAR(14) CHECK (is_tel ~ '\([0-9]{3}\) [0-9]{3} [0-9]{4}'),
faks CHAR(14) CHECK (faks ~ '\([0-9]{3}\) [0-9]{3} [0-9]{4}')
);
şeklinde check kısıtları kullanırsınız. Fakat pek şık görünmüyor. Aynı CHECK ifadesini tekrar tekrar yazdık. İlerde değiştirmemiz gerekirse hepsini dolaşıp değiştirmemiz gerekecek.
İşte bu problemin çözümü için domain kullanılır. Create domain ifadesi ile bir kere kişisel tipimizi oluşturur, sonra dilediğimiz yerde kullanırız. Şöyle;
CREATE DOMAIN telefon_no AS CHAR(14) CHECK (VALUE ~ '\([0-9]{3}\) [0-9]{3} [0-9]{4}');
Artık telefon_no adında bir tipimiz var. Bu tipi kullanarak yukarıdaki tabloyu baştan oluşturalım:
CREATE TABLE musteri
(
id INT4,
ad VARCHAR(20),
ev_tel telefon_no, -- işte bu!
is_tel telefon_no, -- harika!
faks telefon_no -- çok iyi ya!
);
fizikci
23 Eylül 2005 21:03 ~ 13 Haziran 2006 13:44
#4982
|