پشتیبانی: 09131253620
ارتباط با ما
تلگرام: 09131253620

برجسته ترین ها
گروه های مقاله ها
HyperLink


پایگاه داده رابطه ای بخش سوم تاریخ درج: ١٣٩۴/٠٩/٢۴

 5-2-3 ایمنی عبارات

یادآور می شویم که در حساب چندگانه رابطه ای (بخش 5-1)، می توان عباراتی نوشت که بی نهایت رابطه تولید کند. این موضوع ما را به تعریف ایمنی برای عبارات حساب چندگانه رابطه ای سوق می دهد. برای قلمروی حساب رابطه ای نیز وضعیت مشابهی رخ می دهد. یک عبارت مانند 
حساب رابطه ای

نا ایمن است. زیرا مقادیری از نتیجه را که در قلمروی عبارت نیستند را پذیرش می کند.
در قلمروی حسابهای رابطه ای نیز باید نگران شکل فرمول در شرطهای "There exist" و "For all" باشیم. به عبارت 
فرمول در شرطهای "There exist" و "For all"
وقتی p شامل بعضی فرمولهای شامل x یا z است توجه نمایید. می توانیم قسمت اول فرمول را         r)  y (< x,y >   فقط با مقدار داخل r مورد ارزیابی قرار دهیم. اگرچه برای تست کردن قسمت دوم فرمول،
قسمت دوم فرمول
باید مقادیری برای z که در r ظاهر نشده اند را مورد توجه قرار  دهیم. بنابراین در حالت کلی تست کردن قسمت دوم فرمول بدون ملاحظه کردن تعداد نامتناهی از مقادیر بالقوه برای z ، امکانپذیر نیست. در عوض برای ممنوع کردن عبارات مانند آنچه قبلاً ذکر شد، محدودیتهایی را اضافه کردیم.
در حساب چندگانه رابطه ای، هر متغیر وجودی تعیین شده را به یک دامنه مشخص رابطه محدود می کنیم. چون در قلمروی حساب اینکار را نمی کنیم،  برای کار با موارد مشابه مثالمان، قواعدی را به تعریف ایمنی اضافه می کنیم. عبارت:
{ < x1 ,x2 ,….,xn > | P(x1 ,x2 ,….,xn) }
را ایمن گوییم هرگاه همه موارد زیر را داشته باشیم:

هدف از قواعد اضافی  این است که مطمئن شویم که می توانیم  "There exist" و "For all" را تست کنیم بدون آنکه مجبور باشیم بینهایت حالت ممکن را تست کنیم. به قاعده دوم در تعریف ایمنی توجه کنید. برای آنکه x (P1(x))  برقرار باشد، نیاز به این داریم که فقط یک x پیدا کنیم که P1(x) برقرار باشد. در حالت کلی،  باید تعداد خیلی زیاد از مقادیر برای تست وجود داشته باشد. اگرچه اگر عبارت ایمن باشد، می توانیم توجه مان را به مقادیری از dam(P1) محدود کنیم. این محدودیت چندگانه هایی که باید مورد توجه قرار دهیم را به تعداد محدودی کاهش می دهد.



5-2-4 قدرت بیانی زبان 
زمانی که قلمرو حساب رابطه ای برای عبارات ایمن محدود شود، با قدرت بیانی برای حساب چندگانه رابطه ای که برای عبارات ایمن محدود شده اند برابر ند. از آنجا که ما قبلاٌ به این نکته توجه داشته ایم که حساب رابطه ای متغییربا جبر رابطه برابر است ؛نتیجه می گیریم که هر سه مورد زیر با هم برابرند: 
جبر رابطه پایه (بدون عملکردهای جبری رابطه ای بسط یافته ) 
حساب رابطه ای چندگانه که برای عبارات ایمن محدود شده اند. 
قلمرو حساب رابطه ای که برای عبارات ایمن شده اند. 
ضمناٌ ما به این نکته توجه کرده ایم که قلمرو حساب رابطه ای دارای هیچ هم ارزعملیات تجمعی نیست، اما می تواند برای پشتیبانی از تجمع توسعه یابد، و توسعه آن برای بکار بردن عبارات حسابی نیز آسان است.


5-3 پرس وجو از طریق مثال
پرس و جو از طریق مثال QBE  نام هردو مورد زبان دستکاری داده ها و یک سیستم پایگاه داده های قدیمی است که شامل این زبان است.
زبان دستکاری داده ها QBE دو قالب مشخص دارد:
1. QBE بر خلاف اکثر زبانهای پرس وجو و زبانهای برنامه نویسی، دو ترکیب ابعادی دارد. پرس و جوها شبیه جدول به نظر میرسند. پرس وجوهای درون زبان تک-بعدی (برای مثال SQL) را می توان در یک خط احتمالاً طولانی نوشت. زبان دوبعدی برای بیان خود به دو بعد نیاز دارد. (نسخه تک-بعدی QBE وجود دارد اما ما در این بحث به آن نمی پردازیم)
2. پرس و جویی QBE را «با مثال» بیان می کنند. و به جای اینکه برای رسیدن به پاسخ مطلوب، دستور کاری ارائه شود، کاربر مثالی از آنچه که مطلوب است می آورد. این سیستم این مثال را تعمیم می دهد که پاسخ پرس وجو را محاسبه کند.

علیرغم این ترکیب های غیر معمول، تطابق نزدیکی میان QBE و قلمرو حساب رابطه ای وجود دارد.
دو نوع از QBE وجود دارد: نسخه اصلی مبتنی بر متن و نسخه گرافیکی که بعدها ایجاد شد و سیستم پایگاه داده مایکروسافت اکسس، آنرا پشتیبانی می کند. در این بخش  از کتاب، از بازنگری مختصر ترکیب های دستکاری داده های هر دو نسخه پرهیز می کنیم. و در ابتدا ویژگی های مبتنی بر متن QBE را که با SQL که از آن انتخاب می کنیم مطابقت دارند بدون هیچ گونه تراکم یا به روز کردن پوشش میدهیم. نکات یادداشت شده در فهرست منابع را ملاحظه کنید تا بتوانید اطلاعات بیشتری در این مورد بدست آورید که چگونه نسخه مبتنی بر متن QBE طبقه بندی خروجی، تراکم و بروز رسانی را اداره می کند. بعداً در بخش 5-3-6 بصورت خلاصه به بررسی مشخصه های نسخه گرافیکی QBE می پردازیم.

5-3-1 جدول های ساختمان
ما پرس و جوهای درون QBE را بوسیله جدول های ساختمان نمایش می دهیم. این جدولها همانند تصویر5-2 الگوی رابطه را نشان می دهند. کاربر به جای آنکه نمایشی در هم و بر هم از همه ساختمان داشته باشد، آن طرح ساختمانهایی را انتخاب می کند که برای یک پرس وجوی معین لازم است، و با استفاده از سطرهای مثال، ساختمان ها را پر می کند. یک سطر مثال شامل ثابتها و عناصر مثال می شودکه متغیرهای قلمرو اند. برای پرهیز از سردر گمی بین این دو،QBE ، از یک کاراکتری که زیرش خط کشیده شده است ( _ ) قبل از متغیر های قلمرو استفاده می کند، شبیه x_، و به ثابتها اجازه می دهد که بدون هیچ علامتی بیایند.این مساله قراردادی در اکثر زبانهای دیگر معکوس است و در آنها ثابت ها نشان نقل قول می گیرند و متغیر ها بی هیچ علامتی ظاهر می شوند.

5-3-2 پرس و جو هایی روی یک رابطه
با بازگشت به مثال خودمان که از بانک در حال پیشرفت داشتیم، برای یافتن همه ارقام وام شعبه Perryridge ،ساختمان را تا رابطه وام ارتقا  می دهیم و آن را مطابق زیر پر می کنیم.

amount

Branch_name

Loan_number

loan

 

 

 

 

 

 

 

 

Perryridge

p._x

 

 
 
این پرس و جو به سیستم می گوید که متغییرهایی را در loan بجوید که دارای «Perryridge» به عنوان مقدار مربوط به صفت branch-name  است. برای هر یک از متغییرهای این چنین، سیستم مقدار صفت loan_number  را برای متغیر x قرار می دهد. وآن مقدار متغیر x را «چاپ می کند» (در واقع نمایش می دهد). ملاحظه کنید که این نتیجه مشابه با آن چیزی خواهد بود که برای پاسخ به پرس و جوی قلمرو حساب رابطه ای می خواستیم انجام می شود.
 
جدولهای ساختما ن برای مثال بانک
 
شکل 5-2 جدولهای ساختما ن برای مثال بانک
   
درQBE  فرض برآنست که مکان خالی در سطر دارای متغیر منحصر به فرد است. در نتیجه اگر متغیری بیش از یکبار در پرس و جو ظاهرنشود، ممکن است حذف شود. بنا بر این پرس و جوی قبلی ما را می توان چنین نوشت :

amount

Branch_name

Loan_number

loan

 

 

 

 

 

Perryridge

p.

 


 
QBE  (بر خلاف SQL)، عملیات حذف دونسخه ای را بطور خودکار انجام می دهد. ما برای منع حذف دو نسخه ای فرمان ALL. را بعد از فرمان .P درج می کنیم.

amount

Branch_name

Loan_number

loan

 

 

 

 

 

Perryridge

P.ALL.

 


ما برای نمایش کلی رابطهloan، می توانیم سطر مجزایی ایجاد کنیم که هر فیلد شامل.P باشد. متناوباً می توانیم با جای دادن یکP. تنها، در ستونی که بوسیله نام رابطه سرعنوان گذاری شده است، از نشانه گذاری مختصر نویسی استفاده کنیم.

amount

Branch_name

Loan_number

loan

 

 

 

 

 

 

 

p.

QBE به پرس وجوها اجازه می دهد که شامل اعمال محاسباتی مقایسه ای (بطور مثال >) و بلکه اعمال مقایسه ای تساوی باشند؛ مثل این «ارقام وام همه وامها را با مبلغ وام بیش از 700 $ بیابید»:

Amount

Branch_name

Loan_number

loan

 

 

 

 

>700

 

p.

 

عبارات مقایسه ای میتوانند در سمت راست عملیات محاسبه (برای مثال، >(-x+-y-20))) فقط شامل یک عبارت محاسباتی باشند. این عبارت می تواند هم شامل متغیر ها و هم شامل ثابت ها باشد. این فاصله بر روی طرف سمت چپ عملیات مقایسه باید خالی باشد. عملیاتهای محاسباتی ای که QBE پشتیبانی می کندعبارتند از = ، > ،≥ ، < ، ≤ و⌐.
توجه داشته باشید که لزوم خالی بودن طرف سمت چپ, دال بر آنست که ما نمی توانیم دو متغیری را که بصورت مجزا نامگذاری شده اند را با هم مقایسه کنیم. ما بزودی باید به این مشکل رسیدگی کنیم.
مثال دیگر اینکه این پرس و جو را بررسی کنید « نامهای همه شعبه هایی را که در Brooklyn واقع نشده اند بیابید.» این پرس وجو را می توان بدین شکل نوشت:

Assets

Branch_city

Branch_name

branch

 

 

 

 

 

⌐Brooklyn

p.

 

 
در QBE هدف اصلی از متغیرها آنست که مقادیر متغییرهای خاص را مجبور کنند که دارای همان مقادیری باشند که در روی صفت های خاص است. این پرس و جو را بررسی کنید. « شماره وامهای همه وامهای را که مشترکاً توسط اسمیت و جونز ایجاد شده اند پیدا کنید»:

Loan_number

Customer_name

borrower

 

 

 

p._x

_x

Smith

Jones

 


برای اجرای این پرس وجو، سیستم همه جفت های متغییر های  درون borrower را که با صفت loan number مطابقت دارد در حالی که مقدار صفت  customer name برای یک متغییر ،«اسمیت» و برای دیگری « جونز» است می یابد. سپس این سیستم مقدار صفت loan_number را نشان می دهد. در قلمرو حساب رابطه ای، این پرس وجو را می توان چنین نوشت:

به عنوان مثالی دیگر، پرس و جوی « همه مشتریانی را که در همان شهر جونز زندگی می کنند بیابید» را مورد بررسی قرار می دهیم.

Customer _city

Customer _street

Customer_name

custumer

 

 

 

 

-y

-y

 

p._x

jones

 

 

 


تگها: پایگاه داده   پایگاه داده رابطه ای   جبر رابطه ای   حساب چندگانه رابطه ای   حساب رابطه اي چندتايي   حساب رابطه ای   زبان های رابطه ای   
 

HyperLink

ارسال نظر در مورد این مطلب
نام :  
آدرس ایمیل :  
متن پیام :  
کد امنیتی :  
   
   
نظری برای نمایش وجود ندارد
 
این مطلب را به اشتراک بگذارید: