در این قسمت از آموزش اوراکل بعد از آشنایی با بروزرسانی رکوردها در جداول با استفاده از دستور UPDATE قصد داریم آموزش یکپارچگی دیتابیس را یاد بگیریم.

زمانی که هر یک از دستورات (DML (Insert,update,delete را اجرا می کنید دیتابیس به شما این اطمینان را می دهد که یکپارچگی دیتابیس حفظ و نگه داری شود به معنی این می باشد که داده ها و محتوی رکوردهایی که تغییر میکند نباید هیچ تاثیری روی primary key کلید اصلی جدول و foreign key کلید خارجی و روابط بین جداول ایجاد شود.

اجرای قوانینی از محدودیت های Primary Key

اجازه دهید با یک مثال توضیح دهیم اجرای قوانینی از محدودیت های Primary Key به چه صورتی اعمال می شود. در جدولی به نام customers می باشد که ستونی به نام customer_id که کلید اصلی Primary Key جدول می باشد به این معنی هر تغییری در داده های حدول customers انجام می شود و دخیره می باشد تمامی مقادیر ستون customer_id باید یکتا unique باشد. اگر شما در زمان ایجاد رکورد در جدول رکوردی با مقدار customer_id تکراری وارد شود اوراکل کد خطای ORA-00001 به کاربر نمایش می دهد و از یکپارچگی دیتابیس و حفظ روابط کمک می کند.

Primary-Key

همچنین اگر شما در دستور UPDATE بخواهید مقدار ستون customer_id را بروز کنید و مقداری قرار دهید که در جدول باشد و داده های آن تکراری شود ، دیتابیس اوراکل به شما خطا زیر را می دهد.

آموزش اوراکل

اجرای قوانینی از محدودیت های Foreign Key

یک کلید خارجی foreign key رابطه ای است که یکی از ستون های جدول اشاره دارد به جدولی دیگر به عنوان primary key می باشد. به عنوان مثال ستون product_type_id در جدول products به عنوان کلید خارجی Foreign Key اشاره دارد به ستونی به نام product_type_id در جدولی به نام product_types به عنوان کلید اصلی primary key می باشد.

جدول product_types اصطلاحا جدول اصلی parent و جدول products را اصطلاحا جدول فرزند child می نامند که هر دو جدول از طریق ستون product_type_id به عنوان primary key در جدول product_types و به عنوان Foreign Key در جدول products وابستگی و ارتباط دارند.

به عنوان مثال اگر شما بخواهید رکورد در جدول products ایجاد insert کنید و مقدار ستون product_type_id خالی بگذارید و مقداری را وارد نکنید دیتابیس اوراکل به شما خطا با کد ORA-02291 می دهد و این خطا به این معنی می باشد که دیتابیس اوراکل نمی تواند مقداری را که به ستون product_type_id داده اید را جدول مادر parent خود یعنی product_types مقداری را پیدا کند که با هم ارتیاط دهد.

آموزش اوراکل

به همین تریتیب اگر در جدول products بخواهید ستون product_type_id را به مقدار خالی کنید یا مقداری ندهید اوراکل به شما خطا زیر را می دهد:

آموزش اوراکل

و در نهایت اگر رکوردی را در جدول مادر parent پاک کنید یکی از ستون های آن به جدول فرزند child وابستگی و ارتباط داشته باشد در جدول فرزند child رکورد داشته باشد دیتابیس اوراکل به شما خطا با کد ORA-02292 می دهد و این به معنی می باشد که تا زمانی که رکوردی در جدول child وجود دارد امکان حذف رکورد در جدول parent نیست و بایستی رکورد ابتدا از جدول فرزند child حذف و سپس از رکورد از جدول parent حذف شود .

آموزش اوراکل

اطلاعات بیشتر در مورد Database Integrity