بخشی از مقاله
خلاصه: در این مقاله چگونگی پیادهسازي مفسري براي جبر رابطهاي نماد گذاري Date توضیح داده شده است. براي قابل حمل بودن این مفسر زبان javascript براي پیادهسازي آن در نظر گرفته شد تا بسادگی بتوان آنرا روي هر نوع سیستم عاملی اجرا نمود. از ویژگیهاي مهم این مفسر در برابر مفسرهاي کنونی ایانِنزب جبرِ رابطهاي میتوان به سادگی کار با آن و محیطکاملاً بصري آن و همچنین امکان دیدن جزییات اجراي آن اشاره نمود.
براي بخش تحلیلگر نحوي این مفسر روش LALR به کار گرفته شد که انعطاف پذیري بیشتري نسبت به روشهاي دیگري تجزیه دارد و به کمک آن به سادگی میتوان اجرا کنندهي این مفسر را نیز پیادهسازي نمود. همچنین بخش تحلیلگر لغوي اینمفسر به صورت کاملاً جداگانه برنامه نویسی شد تا بتوان به سادگی امکانات بیشتري را نیز به آن افزود. این مفسر زیر مجموعهاي مهم از دستورهاي زبان جبر رابطهاي را میتواند اجرا کند و براي سادگی کار با آن برخی از دستورها به شکل سادهتري نوشته شدند و بنابراین همهي دستور زبان جبر رابطهاي از نو دوباره نویسی شد به گونهاي که هر دو ویژگی سازگاري کامل با استاندارد و همچنین سادگی را در برداشته باشد.
- 1 مقدمه
پروفسور کاد - Codd - مدل رابطه اي را بر پایهي نظریه مجموعه ها - از - Georg Cantor پیشنهاد کرد.[1] البته پیش از کاد فردي به نام شیلد - D.L Childs - در 1968 پیشنهادي همانند آن را در گزارشی فنی داده بود که به دلیل چاپ نشدن در یک مجله معتبر، پیشنهاد او نادیده گرفته شد. [2] مدل رابطه اي در آغاز فقط مدلی ریاضی و بدون کارآیی پنداشته میشد. نخستین پیادهسازي به نسبت کامل و کاربردي از مدل رابطه اي را C.J.Date آماده نمود و به این ترتیب کاربردي بودن مدل رابطه اي را به خوبی نشان داد.
پس از آن شرکتهاي گوناگونی این مدل را براي پیادهسازي سامانه هاي مدیریت پایگاه داده - DBMS - برگزیدند و زبان SQL براي کار با این سامانه ها گسترش یافت. C.J.Date هنوز یکی از افراد اثر گذار در مدل رابطهاي و پایگاه داده هاي رابطه اي است که پیشنهادهایی را براي بهبود مدل رابطه اي و سامانه هاي پایگاه داده ارائه میکند. کتاب مقدمه اي بر سامانه هاي پایگاه داده [3] از او یکی از کتاب هاي پایه و مرجع برا ي درس پایگاه دادهها است.
– 2 جبر رابطهاي
جبر رابطه اي مجموعه اي از عملگرهاست که بر روي عملوند هاي رابطه اي اعمال می شوند و یک رابطه برمی گرداند.[4] در حقیقت جبر رابطه اي یک زبان پرس و جو است که عملیات روي پایگاه دادهاي از نوع مدل رابطهاي را به کمک نمادهایی بیان میکند. جبر رابطهاي یکی از زبانهاي پرس و جوي رابطهاي براي مدل رابطهاي است که پروفسور کاد آن را پیشنهاد داده است و به کمک الگوریتم کاهشی اثبات کرده است که این ربان یک زبان کامل رابطهاي است. این زبان برخلاف SQL به طور کامل بر پایهي تئوري رابطهاي است. گرچه این زبان امروزه به صورت کاربردي به کار برده نمیشود ولی براي آموزش مفهوم رابطهها و کار با آنها بسیار سودمند است.
تعدادي از عملگرهاي مهم جبر رابطهاي، گزینش - where - ، پرتو تفاضل - - MINUS، تغییر نام ویژگی - - RENAME، اشتراك - - INTERSECT، تقسیم - DIVIDE BY - پیوند - - JOIN است. جبر رابطهاي به طور کامل در کتابهاي گوناگونی توضیح داده شده است. در برخی مرجعها مانند [5,2-7] نمادگذاري ریاضی براي جبر رابطهاي برگزیده شده است ولی C.J.Date جبر رابطهاي را به کمک کلمههاي کلیدي و همانند یک زبان برنامه نویسی معمولی معرفی میکند.
– 3 گذري بر کارهاي انجام شده
تا کنون براي اجراي جبر رابطهاي مفسرهاي گوناگونی پیادهسازي شده است. همچنین تعدادي از پیادهسازيهایی وجود دارند که دستور جبر رابطهاي را به SQL تبدیل میکنند و آن را بر روي یک DBMS رابطهاي اجرا میکنند و پاسخ را برمیگرداند.[8] در [13-9] تعدادي از مفسرهاي جبر رابطهاي معرفی شده است. فهرستی از پیادهسازيهاي زبان جبر رابطه اي در [14] همراه با توضیح کوتاهی براي هر کدام نوشته شده است. البته فهرست آن کامل و به روز نیست. بیشتر این پیادهسازيها میکوشند تا جبر رابطهاي تعریف شده از سوي Date و Darwen را به طور کامل پوشش دهند. این زبان Tutorial D نامیشده است و شکلِ کاملِ دستور زبان آن و توضیحهاي آن در [15] گذاشته شده است.
برخی از مشکلهاي کلی این ابزارها نیاز به نصب شدن آنها یا نیاز به برنامههاي پایهي دیگري براي اجرا است و مهمترین مشکل آنها سخت بودن کار با آنها براي فردي است که به تازگی در حال آشنایی با جبر رابطهاي است. بنابراین کوشش شد تا پیادهسازي تازهاي از زبان جبر رابطهاي انجام شود که بتوان به سادگی با آن کار کرد و فقط با نصب بودن یک مرورگر پشتیبانی کننده از زبان javascript استاندارد و بدون نیاز به هیچ ابزار اضافی این مفسر بتواند اجرا شود. همچنین کوشش شد رابط گرافیکی ساده و کارآمدي براي آن آماده شود تا بتوان به سادگی نمونههاي گوناگون از جبر رابطهاي را در آن اجرا نمود.
– 4 دستور زبان
براي ساده شدن کار با این ابزار و در اختیار گذاشتن سادهتر ابزار گرافیکی و همچنین کاستن از پیچیدگی برخی از دستورها دستور زبان - - grammar تازهاي براي زبان جبر رابطهاي نوشته شد. این دستور زبان بیشتر بر پایهي کتاب [3] است و با Tutorial D متفاوت است. زیرا جبر رابطهاي توضیح داده شده در Tutorial D و دستور زبان نوشته شده در آن براي جبر رابطهاي پیچیدهتر از دستور زبان درون کتاب[3] است. در دستور زبانی که پیادهسازي شده است، میتوان چند دستور - عبارت - رابطهاي را در یک خط نوشت و در پایان هر کدام یک ; گذاشت و همچنین نتیجهي دستور روي خروجی به صورت جدول نمایش داده میشود. بخشی از دستور زبان در ادامه نوشته شده است.
– 5 پیاده سازي
براي پیاد سازي این مفسر و محیط اجرا، زبان javascriptدرونِ صفحهي xhtml به کار گرفته شد. زبان javascript به این دلیل براي پیادهسازي برگزیده شد که بر روي همهي مرورگرها اجرا میشود و برنامهي نوشته شده به این زبان را به سادگیو بدونِ نیاز به نصب هیچ نرمافزار دیگري میتوان بر روي مرورگر اجرا نمود و از امکانات زبان xhtml به خوبی براي ساخت یک رابط کاربري مناسب کمک گرفت.
امروزه بسیاري از ابزارها به سوي پیادهسازي تحت وب و به کمک javascript پیش میرود و شرکتهاي گوناگونی بر روي برخط کردن نرمافزارهاي خود و به کارگیري فناوري ajax سرمایهگذاري کردهاند.[18-16] هر کدام از مرحلههاي یک مفسر کامل به صورت جداگانه پیادهسازي شده است. روند یاد شده در کتابهايمتداولِ طراحی و پیادهسازي کامپایلر و مفسر همچون [23- 19] در این پیادهسازي در نظر گرفته شدند.