« مقدمه »
سیستم رابطه ای پرس و جوی QBE توسط زلوف در یکی از مراکز تحقیقاتی IBM طراحی و ایجاد شد.
اصطلاح QBE هم به خود سیستم بانک رابطه ای اطاق می شود و هم به زنانی که در این سیستم وجود دارد. این سیستم، مثل SQL، رابطه ای است و تفاوت ایندو اینست که QBE فقط برای استفاده کاربران پایانه ای طراحی شده، یعنی نه تنها نتایج مورد نظر کاربر بصورت جدولهایی در صفحه نمایش، دیده می شود، بلکه تمام در خواستهای کاربر، در کادر جدولهایی مشخص شده و به سیستم عرضه می شوند.
ابتدا با فشار دادن یک دگمه روی پایانه، چارچوب یک جدول در صفحه نمایش ظاهر می شود، سپس کاربر، با علم به اینکه جواب مورد نظرش از جدول خاصی است نام آن جدول را وارد می کند و QBE اسامی ستونهای جدول را نمایش می دهد. به این ترتیب کاربر می تواند شرط یا شروط پرس و جو شیر را در ستونهای مربوط از جدول، وارد کند.
علامت"P0 " " بجای دستور " چاپ کن" است . این علامت مشخص می کند که جواب مورد نظر در چه ستونی از جدول باید ظاهر شود. صفت مورد نظر در این دستور را " عنصر مثال " می گوییم. زیر عنصر مثال خط کشیده می شود.
( در نمونه پیاده سازی IBM به صورت " عنصر مثال " وارد می شود).
" عنصر ثابت" در واقع نوعی آرگومال جستجو در شرط یا شرایط پرس و جو می باشد.
انتخاب عنصر مثال، کاملاً اختیاری است و می تواند هر مقداری باشد و مقدارش اصلاً تأثیری در مفهوم پرس و جوی کاربر ندارد.
از عناصر مثال، برای برقراری پیوند بین سطرها، در پرس و جوهای پیچیده تر استفاده می شود و اگر نیاز به پیوند نباشد، این عنصر را کاملاً می توان حذف نمود ولی معمولاً برای وضوح بیشتر، عنصر مثال را وارد می کنیم.
اینک عمده ترین جنبه های QBE را، به کمک مثالهایی، مورد مطالعه قرار می دهیم. ابتدا عملیاتDML را مطرح می کنیم و سپس عملیاتDDL را، زیرا عملیات DDL ، اساساً حالات خاصی از عملیات DMLهستند ولی قبل از این کار دیکشنری سیستم QBE را مختصراً توضیح می دهیم.
« دیکشنری سیستم QBE »
در سیستم QBE یک دیکشنری وجود دارد که از نظر کاربر، از تعدادی جدول تشکیل شده است. در این دیکشنری جدولهایی وجود دارند از جمله جدول TABIE و جدول DOMAIN حاوی اطلاعاتی در مورد تمام جدولها و تمام میدانهای جاری شناخته شده برای سیستم، می توان به کمک عملگرهای متعارف DML، دیکشنری را به منظور بازیابی اطلاعات مورد پرس و جو قرار داد. عملگرهای پرس و جو و بهنگام سازی دیکشنری، جزء خود زبان هستند به گونه ای که با سایر عملگرها سازگاری دارند. بویژه درQBE ، احکام خاصDDL، وجود ندارد، در عوض به کمک فرمهای خاصی از عملکرهای بهنگام سازی برای تعریف داده ها استفاده می شود. اینک مثالهایی از امکانات کار با دیکشنری ذکر می کنیم.
1 بازیابی اسامی جدولها:
مثال: اسامی تمام جدولهای شناخته شده برای سیستم را بدهید:
در اینجا، برای ایجاد یک چارچوب برای جدول TABLE و وارد کردن P0 در ستون NAME جدول چارچوب، کاربر می تواند تنها با وارد کردن "P0" در محل اسم جدول یک جدول خالی، این پرس و جو را تنظیم کند.
2 بازیابی اسامی ستونهای یک جدول:
مثال: اسامی تمام ستونهای جدولS را بیابید.
برای تنظیم این پرس و جو، کاربر اسم جدول اسم مورد نظر مثلاً S و در پی آن "P0" را در همان سطر خالی اسامی ستونهای جدول وارد می کند، سیستمQBE، با پر کردن ستونهای خالی، به پرس و جو پاسخ می دهد. غالباً از این امکان برای ایجاد پرس و جوهای حقیقی استفاده می شود. اگر جدول جواب، حاوی اسامی ستونهایی باشد که برای تنظیم پرس و جوی حقیقی لازم نیستند با فشردن کلیدی از پایانه، می توان آنها را حذف کرد.
حال ببینیم برای تعریف داده ها در این سیستم چه امکاناتی وجود دارد.
3 ایجاد یک جدول جدید: جدول S را ایجاد کنید. ( فرض می کنیم چنین جدولی وجود ندارد):
اولین علامت "I0 " مدخلی را برای جدول S در دیکشنری ایجاد می کند. دومین "I0 " مدخلهایی را برای چهار ستون S در دیکشنری ایجاد می کند پس در اولین محل جدول می نویسیم (I.S.I.) .
برای هر ستون اطلاعات دیگری نیز باید مشخص کرد که عبارتند از : اسم میدان هر ستون، سنخ داده هر میدان اگر میدان برای سیستم شناخته شده نباشد، نشانگری به این معنا که آیا ستون جزیی از کلیه اصلی هست یا نه و نیز نشانگر دیگری به این معنا که آیا روی ستون، شاخص ایجاد می شود یا نه، از نظر سیستم QBE هر ستونی جزیی است از کلیه اصلی و روی هر ستونی باید شاخص ایجاد شود، مگر اینکه عکس آن تصریح شود.
(جداول در فایل اصلی موجود است)