الانتقال إلى المحتوى

شرح موضوع Oracle Database Objects


omar-alreyati

Recommended Posts

# أولاً : بناء الـObject Types:-
إليك المثال الآتي الذي يستعمل جملة CREATE TYPE لبناء Object Type إسمها address_typ والتي تستعمل لتمثيل العنوان (address) تتكون من أربع خواص هي street, city, state,zip . وكما في الشكل الآتــــــي:-

CREATE TYPE address_typ AS OBJECT (
 street VARCHAR2(15),
 city   VARCHAR2(15),
 state  CHAR(2),
 zip	VARCHAR2(5)
);
/


والآن دعنا ننظر الى المثال التالي الذي يمثل الشخص(person ) كـObject واسمها person_typ والتي تستعمل الـObject التي اسمها address_typ والتي تم بناء ها في المثال السابق:-

CREATE TYPE person_typ AS OBJECT (
 id		 NUMBER,
 first_name VARCHAR2(10),
 last_name  VARCHAR2(10),
 dob		DATE,
 phone	  VARCHAR2(12),
 address	address_typ
);
/


والآن لكي تتضح الصورة أكثر لنرى هذا المثال المنتج (products) واسمه product_typ مع ملاحظة ان هذه الtype تستخدم فانكشن اسمها get_sall_by_date لتحديد صلاحية المنتج بالاعتماد على المتغير days_valid ، واليك المثال :-\

CREATE TYPE product_typ AS OBJECT (
 id		  NUMBER,
 name		VARCHAR2(15),
 description VARCHAR2(22),
 price	   NUMBER(5, 2),
 days_valid  NUMBER,

 -- declare the get_sell_by_date() member function,
 -- get_sell_by_date() returns the date by which the
 -- product must be sold
 MEMBER FUNCTION get_sell_by_date RETURN DATE
);
/


الmember function تستخدم الإعلانget_sell_by_date مع ملاحظة انه يمكن استخدام procdure بدل الfunction باختلاف ان البروسجير لا يرجع قيمة كما في الفانكشن

الآن نعمل الbody الخاص بالproduct_typ وهذه الbody سوف تحوي على تعريف الفانكشن get_sell_by_date وهي كما يلي :

CREATE TYPE BODY product_typ AS
 -- define the get_sell_by_date() member function,
 -- get_sell_by_date() returns the date by which the
 -- product must be sold
 MEMBER FUNCTION get_sell_by_date RETURN DATE IS
v_sell_by_date DATE;
 BEGIN
-- calculate the sell by date by adding the days_valid attribute
-- to the current date (SYSDATE)
SELECT days_valid + SYSDATE
INTO v_sell_by_date
FROM dual;

-- return the sell by date 
RETURN v_sell_by_date;
 END;
END;
/


كما ترى ان الget_sell_by_date تم حسابها بجمع المتغير days_valid مع التاريخ الحالي (sysdate)

في النهاية من الممكن عمل synonym وكما يلي :-

CREATE PUBLIC SYNONYM pub_product_typ FOR product_typ;


إنتهى الدرس وسوف اكمل الموضوع في المرات اللاحقة

رابط هذا التعليق
شارك

رائع جدا وبدايه موفقه لشرح هذا المبدء الهام
في انتظار شرح مفصل و كامل
مع تحياتي

رابط هذا التعليق
شارك

تكملة للموضوع السابق:
اذا اردت معرفة هيكلية الobject type ما عليك سوى عمل ايعاز describe للobject وكما في الشكل الآتي:

DESCRIBE address_typ
 Name									  Null?	Type
----------------------------------------- -------- ------------
STREET											 VARCHAR2(15)
CITY											   VARCHAR2(15)
STATE											  CHAR(2)
ZIP												VARCHAR2(5)



وايضاً

DESCRIBE person_typ
 Name									  Null?	Type
----------------------------------------- -------- ------------
ID												 NUMBER
FIRST_NAME										 VARCHAR2(10)
LAST_NAME										  VARCHAR2(10)
DOB												DATE
PHONE											  VARCHAR2(12)
ADDRESS											ADDRESS_TYP



وايضاً يمكن وضع عمق للايعاز describe كما في الشكل الاتي :

SET DESCRIBE DEPTH 2
DESCRIBE person_typ
Name									  Null?	Type
----------------------------------------- -------- ------------
ID												 NUMBER
FIRST_NAME										 VARCHAR2(10)
LAST_NAME										  VARCHAR2(10)
DOB												DATE
PHONE											  VARCHAR2(12)
ADDRESS											ADDRESS_TYP
  STREET										   VARCHAR2(15)
  CITY											 VARCHAR2(15)
  STATE											CHAR(2)
  ZIP											  VARCHAR2(



انتهى الدرس اليوم أتوقع انه بسيط ولا تنسونا سوف اكمل الموضوع في المرات اللاحقه.

رابط هذا التعليق
شارك

موضوعنا لهذا اليوم هو : كيفية استخدام oject types مع الأعمدة والجدوال في قواعد البيانات:-
يمكن استخدام الobject types الأعمدة وتسمى (column object) ومع الجدوال (object table) ، ولكي يتضح الموضوع أكثر اليكم الأمثلة على ذلك :-

CREATE TABLE products (
 product		   product_typ,
 quantity_in_stock NUMBER
);


هذا المثال يعمل على بناء جدول اسمه products يحوي على column object اسمه product_typ

وأيضاً يمكن استخدام الobject types مع الجدوال وكما في المثال الأتي :-

CREATE TABLE object_products OF product_typ;
CREATE TABLE object_customers OF person_typ;


هذان الجدولين (object_products & object_customers) تم بناءهما باستخدام الobject type

هذا ما لدي اليوم اتمنى أن اكون قد أوصلت الفكرة ، وسوف نكمل في المرات السابقة .

رابط هذا التعليق
شارك

سوف نتطرق اليوم الى كيفية معالجة عمليات DML (الاستعلام ، الاضافة ، التعديل ، الحذف) على جدول معين .
أولاً نقوم ببناء جدول جديد لكي نجري عليه عمليات DML وليكن products وسوف يحوي هذا الجدول على column object وكما يلي :

CREATE TABLE products (
 product		   product_typ,
 quantity_in_stock NUMBER
);


الproduct_typ تم بناءه سابقاً (شو بلشنا ننسى)

1- الاضافة على جدول الproducts :-

INSERT INTO products (
 product,
 quantity_in_stock
) VALUES (
 product_typ(1, 'Pasta', '20 oz bag of pasta', 3.95, 10),
 50
);


تم أضافة صفين على الجدول وقد تم تمرير البيانات أيضاً الى product_typ

2- الأستعلام من جدول الproducts:-

SELECT *
FROM products;

PRODUCT(ID, NAME, DESCRIPTION, PRICE, DAYS_VALID)
------------------------------------------------------------
QUANTITY_IN_STOCK
-----------------
PRODUCT_TYP(1, 'Pasta', '20 oz bag of pasta', 3.95, 10)
		   50

PRODUCT_TYP(2, 'Sardines', '12 oz box of sardines', 2.99, 5)
		   25


لاحظ هنا يم اظهار الصفين اللذان تم أضافتهما سابقاً ، ويمكن أيضاً الاستعلام فردياً (اي بشرط معين) وذلك باستخدام الalias وكما في الشكل الأتي :-

SELECT p.product
FROM products p
WHERE p.product.id = 1;

PRODUCT(ID, NAME, DESCRIPTION, PRICE, DAYS_VALID)
-------------------------------------------------------
PRODUCT_TYP(1, 'Pasta', '20 oz bag of pasta', 3.95, 10)



أنظر الى المثال التالي بتركيز

SELECT p.product.get_sell_by_date()
FROM products p;

P.PRODUCT
---------
12-OCT-03
07-OCT-03


في هذا المثال تم الاعتماد على object type التي اسمها product_typ والتي تحوي الفانشكن get_sell_by_date() والتي تقوم بارجاع تاريخ صلاحية المنتج .(راجع الموضوع السابق)

3- التعديل على جدول الproducts:-
عندما تريد أن تعديل على البيانات يجب أستخدام الalias وكما في الشكل الأتي:-

UPDATE products p
SET p.product.description = '30 oz bag of pasta'
WHERE p.product.id = 1;


أتوقع أن المثال واضح

4- الحذف من جدول الproducts :
وايضاً هنا لكي نحذف يجب وضع alias وكما في الشكل الآتي:

DELETE FROM products p
WHERE p.product.id = 2;


في النهاية أعمل أيعاز rollback حتى تبقى البيانات كما هي ، لاننا سوف نستخدم هذه البيانات في الدروس التالية.
أنتهى الدرس متمنياً أن أكون عند حسن الظن وما توفيقي الا بالله

رابط هذا التعليق
شارك

  • بعد 2 شهور...

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية