Minggu, 01 Februari 2009

Basis Data XML

XML merupakan representasi data yang bisa didefinisikan sesuai keinginan pengguna. Karena formatnya yang standar dan fleksibel, XML sering dipergunakan pada berbagai pertukaran informasi. Tentunya ini merupakan suatu keuntungan kalau kita bisa menyimpan XML ke dalam basis data dan memprosesnya.Nah, ada basis data yang memungkinkan kita untuk menyimpan XML dan melakukan query atau operasi lainnya terhadap data XML tersebut, yaitu basis data XML. Salah satu DBMS yang mendukung XML adalah SQL Server.SQL Server mendukung tipe data XML, ada typed XML dan untyped XML. Typed XML berarti data XML tersebut berkaitan dengan sebuah XML schema collection, dan sebaliknya untuk untyped XML. XML schema collection mengandung skema XML yang berguna untuk memvalidasi data XML yang boleh tersimpan di dalam suatu basis data. Dengan demikian, jika ada data XML baru yang formatnya tidak sesuai dengan skema yang telah didefinisikan, maka sistem akan menganggapnya tidak valid.Misalnya, kita buat skema XML untuk data Mahasiswa yang berisi NIM, Nama, Email, IPK.
CREATE XML SCHEMA COLLECTION MahasiswaSchema AS
' CREATE XML SCHEMA COLLECTION MahasiswaSchema AS
'Lalu, buat tabel yang punya kolom bertipe data XML yang valid dengan skema di atas.
CREATE TABLE Biodata (
ID INT IDENTITY PRIMARY KEY,
Mahasiswa XML (MahasiswaSchema) NOT NULL
) CREATE TABLE Biodata (
ID INT IDENTITY PRIMARY KEY,
Mahasiswa XML (MahasiswaSchema) NOT NULL
)Untuk insert data XML, tidak berbeda dengan sintaks SQL biasa.
INSERT INTO Biodata
VALUES ('

13504018
Anggriawan Sugianto
anggriawan.sugianto@gmail.com
3.50

') INSERT INTO Biodata
VALUES ('

13504018
Anggriawan Sugianto
anggriawan.sugianto@gmail.com
3.50

')Perhatikan bahwa format XML yang akan disisipkan di atas harus sama dengan format pada skema XML terkait. Jika tidak (misalnya, kurang 1 elemen), maka DBMS akan menganggapnya tidak valid.Jika untuk melakukan query terhadap basis data relasional kita gunakan SQL, maka untuk melakukan query terhadap XML kita gunakan XQuery.Contoh XQuery untuk menampilkan daftar NIM dan mahasiswa yang IPK minimalnya 3.5.
SELECT Mahasiswa.value('
declare default element namespace "http://localhost/test/mahasiswa";
(/Mahasiswa/NIM)[1]', 'varchar(8)') AS NIM,
Mahasiswa.value('
declare default element namespace "http://localhost/test/mahasiswa";
(/Mahasiswa/Nama)[1]', 'varchar(32)') AS Nama
FROM Biodata
WHERE Mahasiswa.value('
declare default element namespace "http://localhost/test/mahasiswa" ;
(/Mahasiswa/IPK)[1]', 'decimal') >= 3.50 SELECT Mahasiswa.value('
declare default element namespace "http://localhost/test/mahasiswa";
(/Mahasiswa/NIM)[1]', 'varchar(8)') AS NIM,
Mahasiswa.value('
declare default element namespace "http://localhost/test/mahasiswa";
(/Mahasiswa/Nama)[1]', 'varchar(32)') AS Nama
FROM Biodata
WHERE Mahasiswa.value('
declare default element namespace "http://localhost/test/mahasiswa" ;
(/Mahasiswa/IPK)[1]', 'decimal') >= 3.50Contoh XQuery untuk mengubah IPK seorang mahasiswa :)
UPDATE Biodata
SET Mahasiswa.modify('
declare default element namespace "http://localhost/test/mahasiswa" ;
replace value of (/Mahasiswa/IPK)[1] with 4.00')
WHERE Mahasiswa.value('
declare default element namespace "http://localhost/test/mahasiswa" ;
(/Mahasiswa/NIM)[1]', 'varchar(8)') = '13504018'

Tidak ada komentar:

Posting Komentar