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

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


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

5-3-3 پرس و جو روی رابطه های جداگانه

   QBEاین امکان را به پرس و جو می دهد که چندین رابطه مختلف را بهم پیوند بزند(مانند ضرب دکارتی یا الحاق طبیعی در جبر رابطه ای). این اتصالات میان رابطه های مختلف از طریق متغیرهایی بدست می آیند که متغییر های خاص را مجبور می کنند که دارای همان مقداری باشند که بر روی صفات خاص است. بعنوان مثال ، فرض کنید می خواهیم تمام نامهای مشتریانی را که از شعبه perryridge وام داشته اند پیدا کنیم. این پرس و جو را می توان چنین نوشت:

Amount

Branch_name

Loan_number

loan

 

 

 

 

 

perryridge

_x

 

 

Loan_number

Customer_name

borrower

 

 

 

_x

P._y

 

 
 
سیستم برای ارزیابی پرس و جوی قبلی، متغییر هایی را در loan با مقدار«Perryidge»  برای صفت branch_name پیدا می کند. برای هریک از متغببر ها، سیستم چندگانه هایی در borrower با همان مقدار برای صفتLoan_number در متغییر Loan را می یابد.
ما می توانیم از تکنیکی مشابه تکنیک قبلی برای نوشتن این پرس وجو استفاده کنیم.« نامهای همه مشتریانی که هم حساب پس انداز و هم وام در بانک دارند بیابید». 

account_number

Customer_name

depositor

 

 

 

 

P._x

 


Loan_number

Customer_name

borrower

 

 

 

 

_x

 

 
اکنون این پرس و جو را بررسی کنید که « نام همه مشتریانی را که در بانک حساب پس انداز دارند اما از بانک وامی نگرفته اند پیدا کنید.» ما پرس و جو هایی را مطرح می کنیم که در QBE با جای دادن نشان منفی (⌐) در زیر نام رابطه و در کنار ردیف مثال، عبارت نفی را در بر دارد.

account_number

Customer_name

Depositor

 

 

 

 

P._x

 

Loan_number

Customer_name

borrower

 

 

 

 

_x

 
پرس و جوی قبلی را با پرس و جوی اخیر ما یعنی « نامهای همه مشتریانی که هم پس انداز و هم وام در بانک دارند بیابید.» مقایسه کنید. تنها تفاوت، علامت ⌐ در کنار ردیف مثال در ستون borrower است. البته این تفاوت تاثیر مهمی بر پردازش پرس و جو دارد.QBE  همه مقادیري را پیدا می کند که برای آنها 
1- در رابطه depositor که customer_name آن قلمرو متغیر x است، متغییری وجود دارد.  
2- هیچ متغییری در رابطه borrower که customer_name آن همانند customer_ name  درون قلمرو متغیرx  است، وجود ندارد. 
علامت ⌐ را می توان چنین خواند« آنجا موجود نیست.»
این واقعیت که ما علامت ⌐ را بجای اینکه زیر نام صفت قرار دهیم زیر نام رابطه می گذاریم، اهمیت دارد. علامت ⌐ در نام یک صفت مختصر علامت ≠ است.بنابراین برای یافتن همه مشتریانی که حداقل دو شماره حساب دارند می نویسیم:

account_number

Customer_name

depositor

 

 

 

_y

⌐_y

P._x

_x

 

در زبان انگلیسی، پرس وجوی قبلی خوانده می شود: « مقدار Customer_name همه مشتریانی که در حداقل 2 متغییر دیده می شوند، که دومی شماره حسابی متفاوت از قبلی دارد را نمایش بده»

5-3-4 جعبه وضعیت
در حال حاضر، هنوز اینکه همه محدودیت های طیف های دامنه جدولهای ساختمان را بیان کنیم، مشکل یا غیر ممکن است. برای حل این مشکل QBE شامل یک جعبه وضعیت است که عبارتهای محدودیت های عمومی روی هر متغیر دامنه را مورد پذیرش قرار می دهد. QBE اجازه می دهد که عبارتهای منطقی در جعبه وضعیت ظاهر شوند. عملگرهای منطقی واژه های and و  or و یا نمادهای  " & " و " | " هستند.
برای مثال پرس و جوی شماره وامهایی از کل وامها را بیابیدکه برای اسمیت، جان (یا هر دوی آنها) ایجاد شده است می تواند بصورت زیر نوشته شود.

loan_number

Customer_name

borrower

 

 

 

P._x

_n

 


conditions

 

_n = Smith or _n= Jones

 
بیان پرس و جوی بالا بدون استفاده از جعبه وضعیت نیز با استفاده از P. در سطرهای متعدد امکانپذیر است. اگر چه پرس و جو با P. در سطرهای متعدد گاهی اوقات مشکل و غیر قابل فهم است و بهترین مانع است.
در مثالی دیگر فرض کنید پرس و جوی نهایی در بخش 5-3-3 را به این صورت تغییر دهیم که       « همه مشتریانی که نام آنها جونز نیست و حداقل 2 شماره حساب دارند را بیابیم » ما می خواهیم محدودیت «  x ≠ jones» را در پرس و جو قرار دهیم. ما این کار را با توسعه دادن جعبه وضعیت و وارد کردن عبارت « x ¬ = jones » انجام می دهیم.

conditions

 

x ¬ = Jones

 
بر می گردیم به مثال دیگر برای یافتن همه شماره حسابهای با تراز بین 1300 دلار و 1500 دلار می نویسیم:

Balance   

Branch_number

Account_number

Account  

-X        

 

P.            

 

 

conditions

 

_x ≥ 1300

_ x ≤ 1500

 
به عنوان مثال دیگر این پرس و جو را ملاحظه کنید: «همه شعبه هایی را بیابید که دارایی آنها بیشتر است از آنهایی که حداقل یک شعبه در بروکلین دارند» این پرس و جو می تواند به این صورت نوشته شود:
 

Assets

Branch_city

branch _name

branch

 

 

 

 

_y

_z

Brooklyn

P._x

 


conditions

 

_y ≥ _z

QBE اجازه میدهد که از عبارات محاسباتی مرکب هم در جعبه وضعیت استفاده کنیم. ما می توانیم پرس و جوی «همه شعباتی را بیابید که دارایی آنها دو برابر بیشتر از دارایی یکی از شعبات واقع در بروکلین است» را با وجود آنکه در پرس و جوی قبلی انجام شد با تغییر جعبه وضعیت بنویسیم.

conditions

 

_y ≥ 2* _z

 
برای یافتن شماره حساب های  با تراز بین 1300 دلار و 2000 دلار ولی نه دقیقا 1500 دلار مینویسیم: 

Balance

Branch_name

account _number

account

 

 

 

 

_x

 

P.

 

 

conditions

 

 

_x = ( ≥1300 and ≤ 2000 and ¬1500)


QBE ازساختار OR با یک روش غیر مرسوم برای مقایسه با یک مجموعه مقادیر ثابت استفاده می کند. برای یافتن تمام شعبه هایی که در بروکلین یا کوئینز واقع اند می نویسیم:

assets

branch_city

Branch_name

branch

 

 

 

 

 

_x

P.

 

 

conditions

 

 

_x = ( Brooklyn or Queens)

 

 


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

HyperLink

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