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

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

الدرس التاسع :الConstraints وكيف يمكن التعامل معها


7 رد (ردود) على هذا الموضوع

#1 أسامة موسى

أسامة موسى

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 2,381 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 16 April 2006 - 10:23 AM

السلام عليكم ورحمة الله وبركاته

الدرس التاسع

تحدثنا في الدرس الثانـــــــــــــــــــــــي عن المحددات ال Constraint ولقد تعرضنا لنوعين منها وهي
Primary key و ال Foreign Key وسوف نستعرض في هذا الدرس عن كيفية التعامل مع الانواع الاخرى من المحددات وكيفية استعراض هذه المحددات وكيفية حذفها وتفعيلها وعدم تفعيلها

النوع الأول
unique constraint
ماهو ال unique constraint ؟
هو عبارة عن حقل وحيد او مجموعة حقول وحيدة بالجدول لاتتكرر ويعرفان استثنائيا في سجل ممكن ان يحتوي على قيم فارغة ولكن هذه القيم تكون فريدة اي لاتتكرر اي قيمة واحدة فريدة

ماهو الفرق بين ال Primary Key و UNIQUE ؟
بالواقع لايوجد فرق كبير فكلاهما لايقبل قيم مكررة ولكن الذي يميز ال UNIQUE عن PRIMARY KEY انه يقبل قيمة فارغة NULL VALUE ولكن غير مكررة.

والاوراكل لاتسمح لك بتعيين Primary key و unique لنفس العمود
ولكن لنفرض انك عينت رقم الموظف ورقم هاتفه ورقم منزله على انه Primary key ولا تريد ان يتكرر رقم الموظف لاحظوا انه لو ورضعنا رقم الموظف E01 ورقم هاتفه 2222 ورقم منزله w01
في هذه الحالة لو اضفنا سجل اخر برقم الموظف E01 ورقم هاتفه 3333 ورقم منزله w02
هل سوق يقبل اوراكل الجواب نعم لأن البيان هنا لايعتبره اوراكل مكرر لأننا حددنا بالبداية ان الprimary Key انه يتكون من ثلاثة حقول واذا اردنا ان لايتكرر رقم الموظف نعينه unique لهذا الحقل ةولكن البعض سوف يقول انني قلت الاوراكل لاتقبل ان يعين الprimary key و unique لنفس الحقول اقول نعم ولكن قلت لنفس الحقل وليست لمجموعة حقول فلو عيننا رقم الموظف على انه primary key لوحده بهذه الحالة لايمكننا تعينه unique

قاعدة انشاء ال unique
هناك حالتين لانشاء ال unique وهي
اما انشائه لال انشاء الجدول او بعد انشاء الجدول
CREATE TABLE table_name
(column1 datatype null/not null,
column2 datatype null/not null,
...
CONSTRAINT constraint_name UNIQUE (column1, column2, . column_n)
);

ومثال عليها
CREATE TABLE supplier 
( supplier_id numeric(10) not null, 
 supplier_name varchar2(50) not null, 
 contact_name varchar2(50),  
 CONSTRAINT supplier_unique UNIQUE (supplier_id) 
);

وممكن تعيين اكثر من unique واحد
مثال
CREATE TABLE supplier 
( supplier_id numeric(10) not null, 
 supplier_name varchar2(50) not null, 
 contact_name varchar2(50),  
 CONSTRAINT supplier_unique UNIQUE (supplier_id, supplier_name) 
);

اما بعد انشاء الجدول فبهذه الطريقة
ALTER TABLE table_name
add CONSTRAINT constraint_name UNIQUE (column1, column2, ... column_n);

مثال
ALTER TABLE supplier
add CONSTRAINT supplier_unique UNIQUE (supplier_id);
وممكن تعيين اكثر من unique واحد
مثال
ALTER TABLE supplier
add CONSTRAINT supplier_unique UNIQUE (supplier_id, supplier_name);


نأتي للنوع الثاني
وهو
Check Constraints


وتعريفه بأنه يسمح لك بوضع شرط على كل حقل بالجدول يعني لايمكنك الاضافة الا بعد التشييك هل هو ضمن الصلاحيات ام لا .
مع ملاحظة
1- ان check لايمكن انشائه بال View
2-ان check يجب ان ينتمي او يرجع لحقول ضمن الجدول وليست ان تكون ضمن جداول اخرى
3-ان check لايمكن انشائه في SubQuery او الاستعلام المتداخل


قاعدة انشائه
اثناء انشاء الجدول
CREATE TABLE table_name
(column1 datatype null/not null,
column2 datatype null/not null,
...
CONSTRAINT constraint_name CHECK (column_name condition) [DISABLE]
);

مثال
CREATE TABLE suppliers 
( supplier_id numeric(4),  
 supplier_name varchar2(50),  
 CONSTRAINT check_supplier_id 
 CHECK (supplier_id BETWEEN 100 and 9999) 
);
في المثال السابق حددنا ان رقم المورد يجب ان يكون بين 100 و 999
مثال آخر
CREATE TABLE suppliers 
( supplier_id numeric(4),  
 supplier_name varchar2(50),  
 CONSTRAINT check_supplier_name 
 CHECK (supplier_name = upper(supplier_name)) 
);
وفي هذا المثال حددنا ان اسم المورد يجب ان يساوي الاسم ال capital او حروفه تكون Capital

قاعدة انشائه :او بطريقة اخرى وهي استخدام ال ALTER
ALTER TABLE table_name
add CONSTRAINT constraint_name CHECK (column_name condition)


مثال على ذلك
ALTER TABLE suppliers
add CONSTRAINT check_supplier_name
   CHECK (supplier_name IN ('IBM', 'Microsoft', 'Nvidia'));

كيف نقوم بحذف ال CONSTRAINTS
ALTER TABLE table_name
drop CONSTRAINT constraint_name;

ومثال
ALTER TABLE suppliers
drop CONSTRAINT check_supplier_id;


كيف نقوم بتفعيل ال CONSTRAINT
ALTER TABLE table_name
enable CONSTRAINT constraint_name;
مثال على ذلك
ALTER TABLE suppliers
enable CONSTRAINT check_supplier_id;

كيف نقوم بايقاف ال CONSTRAINT
ALTER TABLE table_name
disable CONSTRAINT constraint_name;

مثال على ذلك
ALTER TABLE suppliers
disable CONSTRAINT check_supplier_id;


الجدول المعتمد من اوراكل والذي يخزن فيه ال CONSTRAINT يسمى بجدول
USER_CONSTRAINTS
ولمعرفة اسماء الCONSTRAINT التابعة لجدول معين فقط
CONNECT SYSTEM/UR_PASSWORD
SELECT CONSTRAINT_NAME,CONSTRAINT_TYPE FROM USER_CONSTRAINTS 
WHERE TABLE_NAME='SUPLLIERS';

نستطيع اثناء انشاء المحددات ال CONSTRAINT على جداول تحتوي على بيانات نستطيع انشائها والتحكم اما بغض النظر عن البيانات القديمة ويبدأ من لحظة انشاء الCONSTRAINT نستخدم
ال NOVALIDATE اما اذا اردنا ان يشييك على البيانات القديمة فنستخدم معه VALIDATE
مثال على NOVALIDATE
ALTER TABLE uclass MODIFY CONSTRAINT pk_uclass
DISABLE VALIDATE;

ومثال على VALIDATE
ALTER TABLE uclass ENABLE NOVALIDATE PRIMARY KEY;
وبهذا نكون قد اسدلنا الستار عن اهم المحدداتCONSTRAINTS وكيفية التعامل معها

الاسئلة
1-ماهو الفرق بين ال PRIMARY KEY و UNIQUE
2-لنفرض ان لدينا جدول توجد به بيانات مكررة واردنا ان ننشئ PRIMARY KEY على هذا العمود الذي يحتوي على البيانات المكررة ماهي الخطوات اللازمة لتطبيق ذلك
3-كيف نقوم بتفعيل الCONSTRAINT

انتهت الاسئلة

وانتهى الدرس

الدرس الثامن ..... القائمة الرئيسية .... الدرس العاشر
۩ اللهـــــــــــــــــــــــم صلي على سيدنا محمد وعلـى آله وصحبه أجمـعين ۩
۩ سبحـــــــــــــــــان الله وبحمده ....... سبحــــــــــــــــــــــــان الله العظيم ۩



يمكنك زيارتي على صفحتي الخاصة بالفيس بوك على الرابط AskOsama

يمكنك زيارتي على مدونتي الجديدة على الرابط http://askossama.blogspot.com

#2 waleed21112001

waleed21112001

    عضو

  • الأعضــاء
  • 45 مشاركة

تاريخ المشاركة 16 April 2006 - 10:25 PM

الله يجزيك عناااااا خير الجزاء
على هذا الجهد العظيم .... المبذول من شخصك العزيز

اسال الله ان يسهل امرك ... وينور دربك

#3 mdsalah

mdsalah

    عضو نشط

  • الأعضــاء
  • 398 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 03 June 2006 - 02:39 AM

مشكور اخى الفاضل واتمنى منك مزيد العطاء وجازاك الله خيرا وشكرا لهذا الموقع الاكثر من رائع ومزيد من التقدم
MDSALAH
اهم مواضيعى

فيديو شرح كامل لتنصيب Oracle Database 10g & Developer 10g , 6i, التعليم من منظور
جديد مرئى وصوت



MY 4 shared -1
MY 4 shared -2
ستجد بهما الكثير ( سى دى اوراكل _ برامج - dba- developer)

*عظَمة عقلك تخلق لك الحساد .. وعظَمة قلبك تخلق لك الأصدقاء

#4 أم نايف

أم نايف

    عضو

  • الأعضــاء
  • 4 مشاركة

تاريخ المشاركة 10 July 2006 - 12:57 PM

بارك الله في علمك وعملك وجعله طريق لك إلى الجنة من غير حساب

#5 medohadido

medohadido

    عضو

  • الأعضــاء
  • 9 مشاركة

تاريخ المشاركة 01 September 2006 - 03:05 PM

شكرا على مجهودك الرائع يا اخى وننتظر منك المزيد

#6 osama80

osama80

    مشترك

  • الأعضــاء
  • 84 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 29 November 2006 - 02:09 PM

بارك الله فيك اخي الفاضل أسامة و اتمنى من الله ان يتم عليكم بثمرة هذا العمل و تحمل أمانة العلم

#7 wlahmad

wlahmad

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 252 مشاركة

تاريخ المشاركة 13 January 2007 - 12:14 AM

الله يعطيك العافية جهد جبار
لاحرمت اجره استاذي الفاضل

#8 جلال شواقفه

جلال شواقفه

    عضو مميز

  • الأعضــاء
  • 2,559 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 31 October 2007 - 07:38 PM

شكرا جزيلا لك
ارجو من يستفيد من مشاركاتي الدعاء لوالدي ولاموات المسلمين بالمغفره والرحمه......

جلال محمود شواقفه
مدير دائرة الحاسوب
بلدية المفرق الكبرى
المملكه الاردنيه الهاشميه.