پایگاه داده شی گرا در اوراکل
سلام . مدتی بود که دنبال طراحی پایگاه داده شی گرا در سایت های فارسی بودن که به سایت jnpgroup.ir رسیدم .
مدیر این گروه یک سری آموزش بیست قسمتی از پایگاه داده شی گرا قرار داده بود که بررسی کامل از این نوع از پایگاه داده ها می پرداخت .
من فقط به 3 قسمت اول این سری آموزش دسترسی داشتم و واقعا عالی بود . برای نمونه این مطالب از سایت jnpgroup.ir برداشتم :
"
حال برای اینکه نوعی از شی کتاب را در پایگاه داده اوراکل داشته باشیم به صورت زیر عمل می کنیم :
CREATE TYPE book_typ AS OBJECT (
idno NUMBER,
title VARCHAR2(200),
isbn VARCHAR2(25),
author VARCHAR2(100),
publisher VARCHAR2(70),
MAP MEMBER FUNCTION get_idno RETURN NUMBER,
MEMBER PROCEDURE display_details ( SELF IN OUT NOCOPY book_typ ));
/
CREATE TYPE BODY person_typ AS
MAP MEMBER FUNCTION get_idno RETURN NUMBER IS
BEGIN
RETURN idno;
END;
MEMBER PROCEDURE display_details ( SELF IN OUT NOCOPY book_typ ) IS
BEGIN
-- use the PUT_LINE procedure of the DBMS_OUTPUT package to display details
DBMS_OUTPUT.PUT_LINE(TO_CHAR(idno) || ' ' || title || ' ' || isbn);
DBMS_OUTPUT.PUT_LINE(author || ' ' || publisher );
END;
END;
به همین راحتی ( نوشتن متدها اختیاری می باشد ) .
خب به بررسی این نوع OBJECT می پردازیم . همان طور که یک فیلد را از نوع int یا varchar تعریف می کنید می توانید نوع فیلد را OBJECT تعریف کنیم و مقدار این فیلد ها یک شی ای از type مورد نظر خواهد بود .
نوع object مثل شی های زبان برنامه نویسی جاوا دارای دو مولفه است :
- attribute ها : که یک مقدار را از یک نوع خاص درون آن نگهداری می کنیم .
- method ها : که یا function است یا procedure . که function برای متدی که مقداری را برگشت می دهد , procedure برای تعریف متد هایی که خروجی خاصی ندارند .
ساخت جدول کتاب به صورت زیر است :
CREATE TABLE book_tbl( book book_typ, contact_date DATE ); INSERT INTO book_tbl VALUES ( book_typ (1, 'java','1-650-555-0125', 'amiry2', 'jnpgroup.ir'), '24 Jun 2013' );
نمونه ای از به کار گیری متد ها :
SELECT b.book.get_idno() FROM book_tbl b;
نحوه ذخیره سازی object در یک جدول به صورت های زیر ممکن است :
- جداول رابطه ای : که شی را با دیگر داده های جدول ذخیره خواهد کرد . مثل نمونه بالا . که در این مورد شی ها در ستونی از جدول ذخیره می شوند .
- جداول شی : که در انها فقط شی ذخیره خواهد شد . هر سر از این نوع جداول را row object گویند . برای روشن شدن موضوع به مثال زیر توجه کنید :
CREATE TABLE book_obj_table OF book_typ;
INSERT INTO book_obj_table VALUES (book_typ (1, 'java','1-650-555-0125', 'amiry2', 'jnpgroup.ir') );
SELECT VALUE(b) FROM book_obj_table b WHERE b.author = 'Smith';
"
برای مطالعه این سری مقالات به سایت jnpgroup.ir بخش آخرین اخبار یا از آموزش های جدید می تونید به این مقالات دسترسی پیدا کنید .