Pengkalan data hubungan objek

Daripada Wikipedia, ensiklopedia bebas.

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 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