SQL و جبر رابطهای
جبر رابطهای یک زبان رویهای از عملگرها بر روی روابط است که معناشناسی رسمی مدل رابطهای را فراهم میکند، در حالی که SQL زبان اعلانی استانداردی است که سیستمهای پایگاه داده آن را به برنامههای اجرایی شبیه جبر کامپایل میکنند.
Definition
جبر رابطهای مجموعهای از عملگرها است که روابط را به عنوان ورودی میگیرد و روابط را به عنوان خروجی تولید میکند؛ SQL (زبان پرسوجوی ساختاریافته) زبان اعلانی استاندارد ISO برای تعریف، پرسوجو، و بهروزرسانی پایگاههای داده رابطهای است که معناشناسی پرسوجوی آن به جبر رابطهای گسترشیافته با گروهبندی، تجمیع، و معناشناسی کیسهای (bag semantics) بسیار نزدیک است.
Scope
این موضوع عملگرهای جبر رابطهای — انتخاب، پروجکشن، ضرب دکارتی، پیوند، اجتماع، تفاضل، و تغییر نام — و استفاده از آنها را به عنوان مبنای رسمی برای پرسوجوها و بهینهسازی پرسوجو پوشش میدهد. هسته SQL را پوشش میدهد: پرسوجوهای SELECT-FROM-WHERE، پیوندها، گروهبندی و تجمیع، زیرپرسوجوها، عملیات مجموعهای، و دستورات تعریف داده و دستکاری داده، همراه با معناشناسی چندمجموعهای SQL و منطق سهارزشی برای مقادیر تهی. این موضوع نحوه اجرای فیزیکی و بهینهسازی پرسوجوها را (که در پردازش و بهینهسازی پرسوجو پوشش داده میشود) شامل نمیشود.
Core questions
- عملگرهای اولیه و مشتق شده جبر رابطهای کدامند؟
- چگونه یک پرسوجوی SQL SELECT-FROM-WHERE به عملیات جبر رابطهای نگاشت میشود؟
- چگونه گروهبندی و تجمیع جبر پایه را گسترش میدهند؟
- چگونه مقادیر تهی و منطق سهارزشی بر نتایج پرسوجو تأثیر میگذارند؟
- چرا SQL به جای معناشناسی مجموعهای از معناشناسی چندمجموعهای (کیسهای) استفاده میکند؟
Key concepts
- انتخاب، پروجکشن، پیوند
- اجتماع، تفاضل، ضرب دکارتی
- SELECT-FROM-WHERE
- گروهبندی و تجمیع
- زیرپرسوجوها و همبستگی
- عملیات مجموعهای و چندمجموعهای
- منطق سهارزشی و مقادیر تهی
- زبان تعریف و دستکاری داده
Key theories
- عملگرهای جبر رابطهای
- انتخاب، پروجکشن، اجتماع، تفاضل مجموعهای، ضرب دکارتی، و تغییر نام یک مجموعه کامل را تشکیل میدهند که از آن پیوند، اشتراک، و تقسیم مشتق میشوند؛ هویتهای جبری بین آنها بهینهسازیهای بازنویسی پرسوجو را توجیه میکنند.
- پرسوجوی اعلانی و کامل بودن رابطهای
- SQL به کاربران اجازه میدهد تا بیان کنند چه دادهای را میخواهند نه اینکه چگونه آن را واکشی کنند؛ از آنجا که میتواند هر پرسوجوی جبر رابطهای (و بیشتر) را بیان کند، از نظر رابطهای کامل است، و سیستم آزاد است تا یک استراتژی اجرای کارآمد را انتخاب کند.
- منطق سهارزشی برای مقادیر تهی
- SQL شرایط را بر اساس درست، نادرست، و نامعلوم ارزیابی میکند تا مقادیر تهی را مدیریت کند؛ این امر بر مقایسهها، فیلتر کردن WHERE، و تجمیع تأثیر میگذارد و منبع رایج خطاهای ظریف پرسوجو است.
Clinical relevance
SQL یکی از پرکاربردترین زبانها در محاسبات است: این رابط تقریباً برای هر پایگاه داده رابطهای است که برنامههای تجاری، تحلیلها، و خدمات وب را پشتیبانی میکند، و جبر رابطهای ابزار نظری است که بهینهسازهای پرسوجو برای بازنویسی و برنامهریزی کارآمد آن پرسوجوهای SQL از آن استفاده میکنند.
History
مقاله کاد در سال 1970 جبر و حساب رابطهای را معرفی کرد. در پروژه System R شرکت IBM، چمبرلین و بویس SEQUEL (1974) را طراحی کردند که بعدها به SQL تغییر نام یافت، به عنوان یک زبان اعلانی قابل دسترستر. SQL از سال 1986 توسط ANSI و ISO استاندارد شد و از طریق استانداردهای متوالی گسترش یافته است، در حالی که همچنان بر پایه جبر رابطهای استوار است.
Key figures
- Edgar F. Codd
- Donald D. Chamberlin
- Raymond F. Boyce
Related topics
Seminal works
- codd1970
- chamberlin1974
- garciamolina2008
Frequently asked questions
- آیا SQL دقیقاً همان جبر رابطهای است؟
- خیر. SQL بر اساس جبر و حساب رابطهای است اما در جنبههای کلیدی متفاوت است: از معناشناسی چندمجموعهای (کیسهای) استفاده میکند بنابراین تکرارها میتوانند ظاهر شوند، گروهبندی و تجمیع را اضافه میکند، از مقادیر تهی با منطق سهارزشی پشتیبانی میکند، و شامل ویژگیهای رویهای و تعریف داده است که جبر خالص فاقد آنهاست.
- چرا باید جبر رابطهای را یاد گرفت در حالی که SQL در عمل استفاده میشود؟
- جبر رابطهای مدل رسمی پشت بهینهسازی پرسوجو است: سیستمهای پایگاه داده SQL را به عباراتی شبیه جبر ترجمه میکنند و قوانین همارزی را برای یافتن برنامههای کارآمد اعمال میکنند. درک جبر توضیح میدهد که چرا بازنویسیهای خاص پرسوجو معتبر هستند و به استدلال در مورد همارزی و هزینه پرسوجو کمک میکند.