Pengkalan data hubungan objek
Pangkalan data hubungan objek (bahasa Inggeris: object-relational database, ORD), atau sistem pengurusan pangkalan data objek (bahasa Inggeris: object-relational database management system, ORDBMS), ialah sistem pengurusan pangkalan data (DBMS) yang serupa dengan pangkalan data hubungan, tetapi dengan model pangkalan data berorientasi objek: objek, kelas dan pewarisan disokong terus di dalam skema pangkalan datanya dan pada bahasa tanyanya. Tambahan lagi, sama seperti sistem-sistem hubungan yang asli, ia menyokong perluasan model data dengan jenis data suaian dan kaedah suaian.
Perbandingan dengan RDBMS
[sunting | sunting sumber]Sesebuah RDBMS mungkin biasanya melibatkan kenyataan SQL seperti berikut:
CREATE TABLE Customers (
Id CHAR(12) NOT NULL PRIMARY KEY,
Surname VARCHAR(32) NOT NULL,
FirstName VARCHAR(32) NOT NULL,
DOB DATE NOT NULL
);
SELECT InitCap(Surname) || ', ' || InitCap(FirstName)
FROM Customers
WHERE Month(DOB) = Month(getdate())
AND Day(DOB) = Day(getdate())
Kebanyakan pangkalan data SQL kini[kemas kini] membenarkan fungsi suaian (custom function) dicipta, lantas membolehkan pertanyaan tadi ditulis sebagai:
SELECT Formal(Id)
FROM Customers
WHERE Birthday(DOB) = Today()
Dalam sesebuah pangkalan data hubungan objek pula, pertanyaan tadi boleh ditulis—dengan jenis data dan sebutan takrifan pengguna seperti BirthDay()
—seperti berikut:
CREATE TABLE Customers (
Id Cust_Id NOT NULL PRIMARY KEY,
Name PersonName NOT NULL,
DOB DATE NOT NULL
);
SELECT Formal( C.Id )
FROM Customers C
WHERE BirthDay ( C.DOB ) = TODAY;
Model hubungan objek dapat menawarkan satu lagi kelebihan di mana pangkalan data boleh menggunakan hubungan antara data untuk mendapatkan rekod-rekod yang berkaitan dengan mudah. Dalam aplikasi buku alamat, satu jadual tambahan boleh ditambah pada yang di atas untuk memegang satu atau lebih alamat untuk setiap pelanggan (jadual Customers
). Jika menggunakan RDBMS, "join" diperlukan untuk mengumpul maklumat pelanggan beserta alamat:
SELECT InitCap(C.Surname) || ', ' || InitCap(C.FirstName), A.city
FROM Customers C join Addresses A ON A.Cust_Id=C.Id -- the join
WHERE A.city="New York"
Tetapi, jika menggunakan pangkalan data hubungan objek, pertanyaannya adalah lebih ringkas seperti berikut:
SELECT Formal( C.Name )
FROM Customers C
WHERE C.address.city="New York" -- kaitan ini di'fahami' oleh ORDB