شما میتوانید بر روی یک جدول، قواعد جامعیتی(محدودیت) ایجاد نمایید، این قواعد مقابل نام فیلد تعریف میشوند. بدون استفاده از محدودیتها مدیریت دادهها مشکل و گاهی اوقات غیر ممکن خواهدشد.
قواعد جامعیتی پنج نوع میباشند که عبارتند از:
- عدم هیچ مقدار
- کلید یکتا
- کلید اصلی (کلید داخلی)
- ارجاعی (کلید خارجی)
- ارزیابی
قاعده عدم هیچ مقدار (NOT NULL)
در برخی از مواقع، فیلد یا فیلدهایی که تعریف میکنید نباید مقدار هیچ را بپذیرند. برای محدود کردن این قبیل فیلدها، از گزینهای به نام NOT NULL استفاده مینماییم. اگر در ساخت فیلدها، از قاعدهی NOT NULL استفاده نکنید، پایگاه دادهها به طور پیش فرض مقدار NULL را برای آن فیلد، در نظر میگیرد. NULL به معنای آن است که، فیلد میتواند مقداری را در بر نگیرد. NOT NULL عکس NULL عمل میکند و بدان معنی است که هیچگاه نمیتوان آن فیلد را خالی رد کرد، دستور زیر را مشاهده نمایید:
CREATE TABLE TEST(ID NUMBER NOT NULL, TELL NUMBER DEFAULT 22222, ADDRESS VARCHAR2(10));
قاعده کلید یکتا (UNIQUE)
به هر فیلدی که مقدار تکراری را قبول نکند، کلید یکتا گفته میشود. این کلید در مواردی مثل شماره شناسنامه یا کد ملی که هر فردی شمارهای مخصوص به خود دارد، کاربرد فراوان دارد. در یک جدول میتوان بیش از یک فیلد را، به عنوان کلید یکتا برگزید. این قاعده را با عبارت UNIQUE تعریف میکنند. در دستور زیر نحوهی استفاده از دستور UNIQUE را مشاهده میکنید.
CREATE TABLE TEST(ID NUMBER UNIQUE, TELL NUMBER DEFAULT 22222, ADDRESS VARCHAR2(10));
برای نمایش یک پبغام در هنگام وقوع خطا در هر یک از قواعد جامعیتی از دستور CONSTRAINT استفاده میشود. به این صورت که کلمه نوشتهشده بعد از آن، همان پیغامی است که میخواهیم چاپ شود و کلمه بعدی مشخصکننده خطایی است که باید چکشود.
CRAETE TABLE TEST(ID NUMBER CONSTRAINT UQ_TEST_ID UNIQUE, TELL NUMBER DEFAULT 22222, ADDRESS VARCHAR2(10));
قاعده کلید اصلی
این کلید، به عنوان کلید اصلی در جداول استفاده، و به طور طبیعی برای اتصال جدولها و بهینه سازی پرسوجوها بکار میرود. یکی از خصوصیات این کلید یکتا بودن آن است، که این عمل باعث مرتب شدن رکوردها میگردد. در پایگاه دادهها، کلید اصلی، اولین انتخاب به عنوان عامل جستجو میباشد. این قاعده با عبارت PRIMARY KEY تعریف میشود. توجه داشته باشید، در یک جدول باید از یک فیلد، به عنوان کلید اصلی استفاده نمود. فیلدهایی با اندازههای کوچکتر، و مقادیر عددی، ارجعیت دارند. این فیلدها نه تنها نمیتوانند مقدار تکراری داشتهباشند بلکه حتما باید هیچ مقدار ناپذیر باشند به این معنی که مقدار تهی را ثبول نمیکنند. در دستور زیر نحوهی استفاده از PRIMARY KEY را مشاهده میکنید.
CRAETE TABLE TEST(ID NUMBER PRIMARY KEY, TELL NUMBER DEFAULT 22222, ADDRESS VARCHAR2(10));
قاعدهی ارجاعی (کلید خارجی)
فیلدی که به عنوان کلید خارجی تعریف میگردد، به یک فیلد در جدول دیگری اشاره میکند. به جدولی که دارای کلید خارجی باشد، اصطلاحاً جدول فرزند گویند، که به یک فیلد از جدول پدر اشاره میکند. توجه داشته باشید، اگر دادهای از فیلد مربوطه در جدول پدر حذف گردد، باید این داده از جدول فرزند نیز حذف گردد، و یا اگر دادهای به فیلد فرزند اضافه گردد، باید به جدول پدر نیز اضافه شود. این قاعده با عبارت REFERENCES تعریف میشود. در دستور زیر نحوهی ساخت یک کلید خارجی را مشاهده میکنید.
CRAETE TABLE TEST(ID NUMBER PRIMARY KEY, TELL NUMBER CONSTRAINT FK_TEST_TELL REFERENCES TEST2, ADDRESS VARCHAR2(10));
در ساخت جدول فوق، فیلد TELL را به عنوان کلید خارجی در نظر گرفتهایم، که به جدول TEST2 اشاره میکند. توجه داشته باشید، کلید خارجی به صورت پیش فرض به کلید اصلی جدول مرجع، مراجعه میکند. در غیر این صورت میتوانید جلوی نام جدول مرجع، نام فیلد مورد نظر را داخل پرانتز عنوان نمایید. باید متذکر شویم این کلید، دادههای تکراری و مقدار هیچ (NULL) را قبول میکند.
فیلدهای کلید خارجی و مرجع میتوانند هم نام نباشند، ولی باید نوع دادهی آنها یکی باشد. با این تعاریف در هنگام حذف یا تغییر دادههای فیلد مرجع که یک کلید خارجی به آن اشاره کرده است، باید به دو نکته توجه داشته باشید.
- در حد امکان از حذف یا تغییر دادههای فیلد مرجع اجتناب کنید.
- در صورت حذف یا تغییر دادههای فیلد مرجع، دادههای کلید خارجی را حذف یا تغییر دهید. این کار با تایپ جمله ON DELETE CASCADE در تعریف کلید خارجی امکان پذیر است. این دستور در صورت حذف یا تغییر رکورد در جدول مرجع بهطور خودکار دادههای متناظر را در جدول فرزند نیز حذف یا تغییر میدهد. دستور ذیل توجه کنید.
SQL> CREATE TABLE TEST
2 (ID NUMBER PRIMARY KEY,
3 TELL NUMBER CONSTRAINT FK_TEST_TELL REFERENCED TEST2
4 ON DELETE CASCADE,
5 ADDRESS VARCHAR2(10));
قاعده ارزیابی (CHECK CONSTRAINT)
قاعدهی ارزیابی برای کنترل صحت دادههای واردشده به داخل یک فیلد از جدول، مورد استفاده قرار میگیرد. این قاعده با برقراری شرایط روی تعدادی از فیلدهای یک جدول، همانند یک سد محافظ عمل میکند. این قاعده با عبارت CHECK تعریف میشود.
در دستور ذیل با استفاده از CHECK، میتوان تنها دادههایی را وارد جدول کرد که، شمارهی تلفن آنها با 222 آغاز گردد.
SQL> CREATE TABLE NEW_TEST
2 ( ID NUMBER,
3 TELL NUMBER,
4 ADDRESS VARCHAR2(10),
5 CONSTRAINT CH_TEST CHECK (TELL LIKE '222%'));