PostgreSQL - XML

İçindekiler

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.facts
Ve 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.

wave wave wave wave wave