معرفی بخش T-SQL Challenges
 
   T-SQL Challenges
   ۱۸۹۳۷
   این مقاله حاوی فایل ضمیمه نمی باشد
   محمد سلیم آبادی
   ۱۳۹۰/۲/۲۹
ارسال لینک صفحه برای دوستان ارسال لینک صفحه برای دوستان  اضافه کردن به علاقه مندیها اضافه کردن به علاقه مندیها   نسخه قابل چاپ نسخه قابل چاپ

 

مقدمه

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

چالش مساله ای است که مهارت ها و دانش فرد را به چالش کشیده و باعث رشد فرد می شود. چالش را می توان نسبی برداشت کرد. مثلا حل مساله ای خاص برای یک فرد تازه کار ممکن است چالش باشد و برای یک فرد حرفه ای یک مساله بسیار پیش پا افتاده. برای همین من سعی میکنم مسائلی را که به عنوان چالش مطرح می کنم دارای شدت های سختی متفاوتی باشد که مخاطب های بیشتری را جذب کند.

طریق طرح چالش

سعی شده است برای فهماندن هر چه بهتر مساله به مخاطب از نمودار، توضیح کامل سناریو، کدهای DDL برای شرح ساختار جدول و کدهای DML برای درج داده های آزمایشی و خروجی به عنوان نتیجه مورد نظر ارائه شود.

راه حل ها

راه حل هایی پذیرفته خواهد شد که دارای محدودیت های ذکر شده در چالش طرح شده باشند.
جواب ها باید کاملا مجموعه گرا باشند. استفاده از حلقه و کرسر پذیرفته نیست.

افرادی که علاقه مند هستند در حل مساله مشارکت کنند و سهمی داشته باشند میتوانند راه حلهای خودشان را یا سوالات و ابهاماتی که در حل مساله و بدست آوردن نتیجه مواجه شدن رو از طریق ایمیل زیر به بنده انتقال دهند:
mohammad_salimabadi@yahoo.com

از تمام پاسخها استقبال به عمل خواهد آمد

ارزیابی راه حل ها

برای ارزیابی راه حل ها از چندین پارامتر متفاوت استفاده می شود:

1. خوانایی (readability)
به این معنا که با خواندن کد متوجه این شویم که هدف از خلق این کوئری چه بوده و کوئری چه نتیجه ای را تولید می کند. و همچنین براحتی بتوانیم کد را عیب یابی کنیم و توسعه ی آن نیز ساده باشد.

2. ساده بودن (simplification)
کدی که ارسال می شود باید تا حد امکان ساده شده باشد. بطور مثال شما وقتی می توانید بنویسید
:
 
MIN(col1) < MAX(col2)
 هیچ الزامی وجود ندارد که بنویسی:
MIN(col1) <> MAX(col2)

3. قابل حمل بودن (portability)
اگر کد قابل اجرا در تمام نسخه های
SQL Server باشد قابل حمل بودنش در این نرم افزار کامل است و اگر کد کاملا استاندارد باشد خب حداکثر قابلیت حمل بودن را داراست.

4. عملکرد، سرعت و هزینه (performance)
سرعت اجرای کوئری به میلی سانیه، هزینه کلی اجرای کوئری و تعداد Scan های جدول (منطقی و فیزیکی) روی هم رفته عملکرد کوئری را تشکیل می دهند.
هنگامی که داده های ما زیاد باشد و ممکن باشد نتیجه با تاخیر بالایی به نمایش در آید این فاکتور نقش حیاتی خواهد داشت.

5. کوتاهی (short)
کوتاه بودن کد الزاما به معنای خوانایی بالا  و عملکرد بهتر نیست. بلکه به معنای این است که سریع تر میتوانیم آن را تایپ کنیم.

6. پویایی و انعطاف پدیری
راه حل اگر به گونه ای باشد که برای سناریو های متفاوت نیز مناسب باشد یا اینکه اگر داده های ما متغیر باشد باز هم راه حل بدرستی جواب گو باشد (بدون نیاز به توسعه ای خاص)، آن گاه آن راه حل منعطف خواهد بود. این فاکتور هم دارای ارزش فراوانی است.