تتمثل قيود Oracle بشكل أساسي في الحفاظ على تكامل البيانات على مستوى منطق الأعمال. بشكل أساسي بواسطة المبرمجين لتحديد القيود في التطبيق أو عن طريق تحديد المشغلات للحفاظ على تكامل البيانات، وأخيرًا باستخدام قيود Oracle الخاصة للحفاظ على تكامل البيانات. إذا كان بإمكانك استخدام قيود Oracle الخاصة لتلبية المتطلبات، فحاول استخدام قيود Oracle الخاصة، لأن استخدام القيود المحددة من قبل المستخدم مثل المشغلات سيؤثر على أداء قاعدة البيانات. على سبيل المثال: عند استخدام المشغلات، سيتم قفل الجدول وسيتم إجراء عمليات فحص الجدول أو عمليات فحص الفهرس، مما سيؤدي إلى تقليل أداء قاعدة البيانات وتزامنها.
تنقسم قيود أوراكل بشكل أساسي إلى الأنواع التالية:
ليس قيدًا غير فارغ، قيد فريد فريد، مفتاح أساسي، قيد مفتاح أساسي، مفتاح خارجي، قيد مفتاح خارجي، تحقق من القيد.
القيد غير الفارغ غير الفارغ:
طريقة الإنشاء: 1. التحديد على مستوى العمود عند إنشاء الجدول (أي، يمكنك فقط كتابة تعريف القيد بعد العمود عند تحديد الجدول)، طريقتان. يستخدم أحدهما أسماء قيود مخصصة، بينما يستخدم الآخر الأسماء الافتراضية للنظام.
عرض نسخة عادية إلى الحافظة؟
إنشاء جدول ر
(
رقم الدار (8) القيد NK_t1 ليس فارغًا،
tname varchar2(10) ليس فارغًا
)
إنشاء جدول ر
(
رقم الدار (8) القيد NK_t1 ليس فارغًا،
tname varchar2(10) ليس فارغًا
)
عرض نسخة عادية إلى الحافظة؟
SQL> حدد t.constraint_name، t.table_name، t.status، t.deferrable من user_constraints t؛
حالة CONSTRAINT_NAME TABLE_NAME مؤجلة
-------------------------------------------------- ------ ----------------
NK_T1 T ممكّن وغير مؤجل
SYS_C003735 T ممكّن وغير قابل للإلغاء
SQL>
SQL> حدد t.constraint_name، t.table_name، t.status، t.deferrable من user_constraints t؛
حالة CONSTRAINT_NAME TABLE_NAME مؤجلة
-------------------------------------------------- ------ ----------------
NK_T1 T ممكّن وغير مؤجل
SYS_C003735 T ممكّن وغير قابل للإلغاء
SQL>
2. قم بتعديل الجدول بعد إنشائه، ولكن تأكد من أن البيانات الموجودة في الجدول لا تنتهك القيود.
عرض نسخة عادية إلى الحافظة؟
SQL> تعديل الجدول t وتعديل tid وليس فارغًا؛
تم تغيير الجدول
SQL> حدد t.constraint_name، t.table_name، t.status، t.deferrable من user_constraints t؛
حالة CONSTRAINT_NAME TABLE_NAME مؤجلة
-------------------------------------------------- ------ ----------------
SYS_C003736 T ممكّن وغير قابل للإلغاء
SQL>
SQL> تعديل الجدول t وتعديل tid وليس فارغًا؛
تم تغيير الجدول
SQL> حدد t.constraint_name، t.table_name، t.status، t.deferrable من user_constraints t؛
حالة CONSTRAINT_NAME TABLE_NAME مؤجلة
-------------------------------------------------- ------ ----------------
SYS_C003736 T ممكّن وغير قابل للإلغاء
SQL>
تحقق من القيود
طريقة الإنشاء: يمكن تعريفها على مستوى الجدول ومستوى العمود (يمكن تعريفها بعد العمود أو بعد تعريف العمود). هناك أيضًا طريقتان للتعريف.
عرض نسخة عادية إلى الحافظة؟
SQL> إنشاء جدول t
2 (
3 تيد رقم(8) ,
4 اسم varchar2(10)،
5 قيد CK_T1 تحقق ((tid ليس فارغًا) و (tid > 0))
6)
7/
تم إنشاء الجدول
SQL> تغيير الجدول لإضافة قيد CK_T2 check(tname ليس فارغًا);
تم تغيير الجدول
SQL> حدد t.constraint_name، t.table_name، t.status، t.deferrable من user_constraints t؛
حالة CONSTRAINT_NAME TABLE_NAME مؤجلة
-------------------------------------------------- ------ ----------------
CK_T1 T ممكّن وغير مؤجل
تم تمكين CK_T2 T وليس تأجيله
SQL>
SQL> إنشاء جدول t
2 (
3 تيد رقم(8) ,
4 اسم varchar2(10)،
5 قيد CK_T1 تحقق ((tid ليس فارغًا) و (tid > 0))
6)
7/
تم إنشاء الجدول
SQL> تغيير الجدول لإضافة قيد CK_T2 check(tname ليس فارغًا);
تم تغيير الجدول
SQL> حدد t.constraint_name، t.table_name، t.status، t.deferrable من user_constraints t؛
حالة CONSTRAINT_NAME TABLE_NAME مؤجلة
-------------------------------------------------- ------ ----------------
CK_T1 T ممكّن وغير مؤجل
تم تمكين CK_T2 T وليس تأجيله
SQL>
يضمن القيد CK_T1 أن عمود tid لا يمكن أن يكون فارغًا وأن يكون أكبر من 0، ويضمن CK_T2 أن iname لا يمكن أن يكون فارغًا. يمكن أن تكون قيود التحقق أيضًا قواعد بين أعمدة مختلفة من نفس الصف.
القيد الفريد
طريقة الإنشاء: إذا كان العمود الفريد يحتوي على عمود واحد فقط، فيمكن تعريفه على مستوى العمود. إذا كان العمود الفريد يحتوي على عدة أعمدة، فلا يمكن تعريفه إلا على مستوى الجدول.
عرض نسخة عادية إلى الحافظة؟
SQL> إنشاء جدول t2
2 (
3 قيد رقم الفيديو VK_T1 فريد،
4 فنام فارشار2(10)،
5 فيسيكس فارشار2(10)،
6 قيد VK_T2 فريد (vname، vsex)
7)
8/
تم إنشاء الجدول
SQL> حدد t.constraint_name، t.table_name، t.status، t.validated، t.deferrable from user_constraints t؛
CONSTRAINT_NAME TABLE_NAME حالة تم التحقق منها ومؤجلة
--------------- ---------- -------- ---------- ------- -------
تم تمكين VK_T1 T2 وتم التحقق من صحته وغير قابل للإلغاء
تم تفعيل VK_T2 T2 وتم التحقق من عدم إمكانية تأجيله
SQL>
SQL> إنشاء جدول t2
2 (
3 قيد رقم الفيديو VK_T1 فريد،
4 فنام فارشار2(10)،
5 فيسيكس فارشار2(10)،
6 قيد VK_T2 فريد (vname، vsex)
7)
8/
تم إنشاء الجدول
SQL> حدد t.constraint_name، t.table_name، t.status، t.validated، t.deferrable from user_constraints t؛
CONSTRAINT_NAME TABLE_NAME حالة تم التحقق منها ومؤجلة
--------------- ---------- -------- ---------- ------- -------
تم تمكين VK_T1 T2 وتم التحقق من صحته وغير قابل للإلغاء
تم تفعيل VK_T2 T2 وتم التحقق من عدم إمكانية تأجيله
SQL>
عندما يتم إنشاء القيد الفريد، سيتم إنشاء فهرس (قد يكون فهرسًا فريدًا، لذلك قد يكون أيضًا فهرسًا غير فريد، اعتمادًا على ما إذا كان الجدول محددًا عند إنشاء الجدول للتحقق من قيود البيانات فورًا عندما يكون تم إدخال البيانات):
عرض نسخة عادية إلى الحافظة؟
SQL> حدد t.index_name، t.table_name، t.uniqueness من user_indexes t؛
INDEX_NAME TABLE_NAME فريد من نوعه
---------- ---------- ---------- ----------
VK_T1 T2 فريد من نوعه
VK_T2 T2 فريد من نوعه
SQL> حدد t.index_name، t.table_name، t.uniqueness من user_indexes t؛
INDEX_NAME TABLE_NAME فريد من نوعه
---------- ---------- ---------- ----------
VK_T1 T2 فريد من نوعه
VK_T2 T2 فريد من نوعه
نظرًا لوجود فهرس، يمكنك تحديد موقع تخزين الفهرس وبعض معلمات التخزين عند إنشاء الجدول.
عرض نسخة عادية إلى الحافظة؟
SQL> إنشاء جدول t2
2 (
3 قيد رقم الفيديو VK_T1 فريد،
4 فنام فارشار2(10)،
5 فيسيكس فارشار2(10)،
6 قيد VK_T2 فريد (vname، vsex) باستخدام مؤشر مساحة جدول الفهرس
7 تخزين (الأولي 100 ألف التالي 100 ألف pctinزيادة 0)
8 تسجيل
9)
10/
تم إنشاء الجدول
SQL> إنشاء جدول t2
2 (
3 قيد رقم الفيديو VK_T1 فريد،
4 فنام فارشار2(10)،
5 فيسيكس فارشار2(10)،
6 قيد VK_T2 فريد (vname، vsex) باستخدام مؤشر مساحة جدول الفهرس
7 تخزين (الأولي 100 ألف التالي 100 ألف pctinزيادة 0)
8 تسجيل
9)
10/
تم إنشاء الجدول
مساحة الجدول حيث يتم تخزين الفهرس المقيد هي مساحة جدول indx، وحجم الكتلة الأولي هو 100 كيلو، ولا يتم إنشاء سجلات لعمليات dml (ولكن يتم إنشاء السجلات أيضًا لأسباب أخرى، ولكن هناك سجلات أقل من التسجيل الافتراضي)
المفتاح الأساسي قيد المفتاح الأساسي
طريقة الإنشاء: يتكون المفتاح الأساسي بشكل أساسي من التفرد وغير الفارغ. يمكن أن يحتوي الجدول على مفتاح أساسي واحد فقط، ولكن يمكن أن يحتوي المفتاح الأساسي على عدة أعمدة.
عرض نسخة عادية إلى الحافظة؟
SQL> إنشاء جدول t2
2 (
3 قيد رقم الفيديو VK_T1 فريد،
4 فنام فارشار2(10)،
5 فيسيكس فارشار2(10)،
6 قيد المفتاح الأساسي VK_T2 (vname، vsex) باستخدام مؤشر مساحة جدول الفهرس
7 تخزين (الأولي 100 ألف التالي 100 ألف pctinزيادة 0)
8 تسجيل
9)
10/
تم إنشاء الجدول
SQL> إنشاء جدول t2
2 (
3 قيد رقم الفيديو VK_T1 فريد،
4 فنام فارشار2(10)،
5 فيسيكس فارشار2(10)،
6 قيد المفتاح الأساسي VK_T2 (vname، vsex) باستخدام مؤشر مساحة جدول الفهرس
7 تخزين (الأولي 100 ألف التالي 100 ألف pctinزيادة 0)
8 تسجيل
9)
10/
تم إنشاء الجدول
المفتاح الخارجي المفتاح الخارجي
طريقة الإنشاء: يمكن أن تحتوي الجداول المشاركة في المفتاح الخارجي على جدولين أو جدول واحد. في حالة وجود جدولين، يجب أن يكون المفتاح المشار إليه بواسطة حقل في جدول فرعي هو المفتاح الأساسي في الجدول الأكبر. تم إنشاء القيد في الجدول التابع، مما يشير إلى أن القيمة الموجودة في الحقل في الجدول يجب أن تكون موجودة في الجدول الأصل أو أن تكون قيمة فارغة.
عرض نسخة عادية إلى الحافظة؟
SQL> إنشاء قسم الجدول
2 (
3 فعل رقم (8)،
4 اسم الاسم varchar2(20)،
5 القيد PK_DEPT المفتاح الأساسي (فعل)
6)
7/
تم إنشاء الجدول
SQL>
SQL> إنشاء جدول emp
2 (
3 رقم العيد (8) مفتاح أساسي،
4 اسم varchar2(20)،
5 فعل رقم (8) /*قسم المراجع(فعل)*/,
6 اسم الاسم varchar2(20)،
7 قيد FK_EMP2 المفتاح الخارجي (فعل) مراجع قسم (فعل)
8)
9/
تم إنشاء الجدول
SQL> إنشاء قسم الجدول
2 (
3 فعل رقم (8)،
4 اسم الاسم varchar2(20)،
5 القيد PK_DEPT المفتاح الأساسي (فعل)
6)
7/
تم إنشاء الجدول
SQL>
SQL> إنشاء جدول emp
2 (
3 رقم العيد (8) مفتاح أساسي،
4 اسم varchar2(20)،
5 فعل رقم (8) /*قسم المراجع(فعل)*/,
6 اسم الاسم varchar2(20)،
7 قيد FK_EMP2 المفتاح الخارجي (فعل) مراجع قسم (فعل)
8)
9/
تم إنشاء الجدول
نظرًا لأنه يتم تحديد المفتاح الخارجي (المفتاح الخارجي) بواسطة المفتاح المرجعي (المفتاح المرجعي)، فستكون هناك قيود عند إجراء التحديث والإسقاط والحذف والعمليات الأخرى على الجدول الأساسي. على وجه التحديد، يتم تحديده حسب حالة قيود المفتاح الخارجي.
حذف عند الإجراء، وحذف التتالي، وحذف المجموعة الخالية
يعد الحذف عند الإجراء هو الإعداد الافتراضي إذا قمت بحذف البيانات الموجودة في الجدول الأكبر، فستقوم Oracle بقفل جدول الكلمات ثم مسح الجدول (إذا كان هناك عمود مفتاح خارجي، فقم بمسح الفهرس) ثم لن تكون البيانات موجودة فيه. يسمح بحذف عمود المفتاح الخارجي في الجدول الفرعي.
يؤدي حذف التتالي أيضًا إلى حذف الصف المقابل في جدول الكلمات.
بعد حذف المجموعة الخالية، تصبح البيانات المقابلة لعمود المفتاح الخارجي في الجدول الشريطي فارغة.
عرض نسخة عادية إلى الحافظة؟
إنشاء جدول emp
(
رقم العيد (8) مفتاح أساسي،
اسم varchar2 (20)،
رقم (8) /*قسم المراجع(فعل)*/,
اسم النطاق varchar2 (20)،
القيد FK_EMP2 يشير المفتاح الخارجي (did) إلى قسم (did) عند حذف مجموعة فارغة
)
إنشاء جدول emp
(
رقم العيد (8) مفتاح أساسي،
اسم varchar2 (20)،
رقم (8) /*قسم المراجع(فعل)*/,
اسم النطاق varchar2 (20)،
القيد FK_EMP2 يشير المفتاح الخارجي (did) إلى قسم (did) عند حذف مجموعة فارغة
)