PostgreSQL veri türü desteği var XMLBu bizim için çok yararlı olsa da, çoğu zaman eleştiriler vardır, çünkü bu, normalleştirme gibi ilişkisel veritabanlarının birçok kuralının çiğnenmesine yol açabilir, ancak bu, High-end veritabanlarından gelen tüm sürücüleri ve motorları engellememiş olsa da, bu tür için destek sağlar veri.
XML'de veri yükleme
Teorik bir bakış açısıyla nasıl çalıştığını görmeden önce, bu tür verilerle bir alanı nasıl yükleyebileceğimize bir örnek görelim.
INSERT INTO web_sessions (session_id, session_state) DEĞERLER ('robe', 'colorredbackgroundsnoopy' :: xml);Eklediğimiz ikinci alan gördüğümüz gibi alandır XML yerleştirerek gösterdiğimiz :: xml Eklemek istediğimiz bilgilerin sonunda.
XML sorgulama
Konuyla ilgili sorgulama yapmak için XML fonksiyonu kullanabiliriz xpath () Bu amaç için oldukça kullanışlı olduğundan, aldığı ilk argüman XPath türünde bir sorgu, ikincisi ise XML'i içeren bir dizedir, yanıt XPath sorgusunun koşullarını karşılayan bir XML nesneleri dizisidir. Bunu fonksiyonla birleştirerek nasıl yapılacağına dair bir örnek görelim. yerleştirmek () sonuçları bir tablonun satırları gibi göstermek için.
BÜYÜT
Listelenen noktaları parçalayalım:
1. Diziye abone oluyoruz, çünkü XPath sorguya yanıt olarak gelen tek bir öğe olsa bile her zaman bir dizi döndürür.
2. Elemanı elde ederiz Metin her bir prop öğesinin hem adı hem de değeri olarak.
3. XML'in,,,,, etiketlerini inceliyoruz.
Gördüğümüz gibi XML veri türü ile alanların değerlerini elde etmek için sorgulama yapmak oldukça kolaydır.
Bileşik ve özel veri türleri
Bileşik nesnenin türü bileşik özel bir türüdür PostgreSQL çünkü genellikle bir nesne oluşturmak için kullanılır ve daha sonra özel bir türle veya birden çok sütun döndürmesi gereken bir işlevin dönüşü olarak ilişkilendirilir.
PostgreSQL tüm tablolar için otomatik olarak özel bir tür oluşturur, herhangi bir amaç için PostgreSQL'de varsayılan olarak tanımlananlar gibi özel türleri kullanabiliriz, hatta bu türlerin bir dizisini bile yapabiliriz.
Bununla ilgili küçük bir kod görelim:
CREATE TABLE user_facts (user_id varchar (30) BİRİNCİL ANAHTAR, gerçekler census.facts []);Ardından bir kayıt oluşturuyoruz:
SATIR (86, '25001010206', 2012, 123, NULL) :: census.factsVe son olarak, onu özel tablomuza ekliyoruz:
INSERT INTO user_facts (user_id, fact) VALUES ('robe', ARRAY [ROW (86, '25001010206', 2012, 123, NULL) :: census.facts]);Birleştirmeyi kullanarak türümüze daha fazla veri dahil edebiliriz:
GÜNCELLEME user_facts SET gerçekler = gerçekler || dizi (FROM census.facts F WHERE fact_type_id = 86 OLARAK SEÇİN) WHERE user_id = 'robe';Ardından sorguyu yaparken aşağıdaki resimdeki gibi her şeyin ne kadar mantıklı olduğunu görüyoruz:
BÜYÜT
Bununla, XML veri türleri ve özel veri türleri hakkındaki bu öğreticiyi bitiriyoruz, her zaman olduğu gibi, bu bilgiyi uygulamanız için olabildiğince taze tutmak için burada görülen konuları bu şekilde uygulamanızı tavsiye etmeye değer.