فعال و غیر فعال کردن قیود
SQL Server قابلیت فعال(enable) و غیر فعال(disable) کردن دو قید کلید خارجی و check را برای ما مهیا کرده است. ما می‌توانیم بعد از ساخت جدول و انتشار مقداری داده در آن قیدهایی را ایجاد کنیم. بطور پیشفرض اگر شرط قید ما بر قرار بود قید به طور صحیح ساخته می‌شود و اگر شرط قید ما بر قرار نباشد قید با خطای conflict مواجه خواهد شد. بطور کلی غیر فعال کردن قیدها کار درستی نیست. ولی در برخی مواقع برای تسریع در اجرای کد می‌توانیم قید را ...
بررسی مساله متداول Top N در نسخه های مختلف SQL Server
مقدمه (شرح مساله) چندی پیش در تالار T-SQL سوالی مطرح شد راجع به مساله ای که معروف است به top N per group. تنها موضوعی که باعث شد من مطلبی راجع به آن بنویسم محدودیتی بود که کاربر مورد نظر داشت؛ که آن محدودیت چیزی نبود جز: query بایستی در نسخه 2000 جوابگو باشد. قطعا شده است که بخواهید مثلا به ازای هر مشتری آخرین سفارش آن را انتخاب کنید. این مساله Top N نامیده می‌شود. فرض کن ...
بدست آوردن برگهای یک درخت توسط Recursive CTE
امروز در یک تالار سوالی مطرح شد با این عنوان "چگونه می‌توانم گره‌های برگ یک شاخه را بدست بیاورم". خب راه حلی که فورا به ذهنم رسید استفاده از یک query بازگشتی (recursive) بود. به ساختار سلسله مراتبی زیر توجه بفرمایید: گره هایی که با رنگ سبز علامت گذاری شده اند را گره‌های برگ می‌نامیم چون که آن گره‌ها بدون زیر شاخه هستند. فرض کنید از ما خواسته شده است با داشتن گره A تمام برگهای این شاخه را بدست بیاوریم. دو مرحله را باید طی کنیم ابتدا تمام ...
توابع Window و مساله های آماری running total و runnning average
مقدمه و شرح مساله توسط ویژگی‌های جدیدی که در نسخه 2012 به بحث window افزوده شد می‌توانیم مسالهای running total و running average را به شکل بهینه ای حل کنیم. ابتدا این دو مساله را بدون بکارگیری ویژگی‌های جدید، حل نموده و سپس سراغ توابع جدید خواهم رفت. قبل از هر چیزی لازم است جدول زیر ساخته شود و داده‌های نمونه در آن درج شود: create table testTable ( day_nbr integer not null primary key clustered, value integer not null check (value ...
محاسبه میانگین متحرک (moving average) در SQL Server 2012
شرح مساله میانگین متحرک یا moving average به چند دسته تقسیم می‌شود که ساده‌ترین آنها میان متحرک ساده است. برای محاسبه میانگین متحرک باید بازه زمانی مورد نظر را مشخص کنیم. مثلا میانگین فروش در 3 روز گذشته. به جدول زیر توجه بفرمایید: میانگین متحرک فروش سه روز و چهار روز گذشته در جدول فوق قابل مشاهده است. بطور مثال مقدار میانگین متحرک سه روزه برای روز چهارم برابر است با جمع فروش سه روز گذشته تقسیم بر سه. یعنی 3/(10+12+13) و برای روز ششم می ...
نرمال سازی (قسمت سوم: Third Normal Form)
معایب شکل دوم نرمال ابتدا اجازه دهید که مثالی از یک جدول بیاورم که به شکل دوم نرمال بوده ولی به شکل سوم نرمال نباشد. برای این منظور دو جدول زیر که هر دو در شکل سوم نرمال به سر می‌برند را با هم ترکیب می‌کنیم. ستون هایی از جدول که با نقاط قرمز رنگ علامت گذاری شده اند کلید‌های اولیه جدول می‌باشند. اگر این دو جدول را با هم ترکیب کنیم، جدولی حاصل می‌شود که به فرم دوم نرمال است یعنی تمام خصیصه‌های غیر کلیدی وابسته به کلید اولیه (کد دانشجو) ...
نرمال سازی (قسمت دوم: Second Normal Form)
وابستگی تابعی برای وارد شدن به بحث نظری نرمالسازی نیاز هست با مفهوم وابستگی تابعی آشنا شویم. وابستگی تابعی یک مبحث نسبتا مفصل و تئوری هست که زمان زیادی برای شرح جزئیات آن نیاز هست در نتیجه در حد آشنایی و نیازمان به آن توجه خواهیم داشت. به جدول زیر نگاه کنید: این جدول نشان می‌دهد هر عرضه کننده(S#) چه قطعه (P#) را به چه تعداد (Qty) تولید کرده است. City هم شهریست که عرضه کننده در آن سکونت دارد. از داده‌های فعلی جدول می‌شود برداشت‌های ...
نرمال سازی (قسمت اول: First Normal Form)
مقدمه نرمالسازی یا normalization باعث جلوگیری از تکرار و افزونگی اطلاعات می‌شود. و همچنین مانع از یکسری ناهنجاری‌ها در عملیات درج، بروز رسانی، حذف و انتخاب خواهد شد. شکل‌های نرمال متعددی تعریف شده اند که به شرح زیر است: شکل نرمال اول (1NF) شکل نرمال دوم (2ND) شکل نرمال سوم (3NF) شکل نرمال بویس کاد (BCNF) شکل نرمال چهارم (4NF) شکل نرمال پنجم (5NF) سه شکل اول نرمال یعنی 1NF، 2NF و 3NF توسط دکتر Codd تعریف شده اند. شکل نرمال بویس کاد ...
حذف کاراکتر های ناخواسته توسط Recursive CTE قسمت دوم
مقدمه در قسمت پیشین نشان داده شد که چگونه کاراکتر‌های خارج از رنج حروف الفبای انگلیسی از عبارات موجود در یک جدول حذف شدند. اکنون شرایط کمی تغییر کرده است کاراکترهای ناخواسته در قالب یک مجموعه (جدول) به ما ارائه داده می‌شوند. ما بایستی تمام کاراکترهای داده شده را از عبارات (موجود در جدول) در صورت تطابق حذف کنیم. جدول کاراکترهای ناخواسته Unwanted و جدول داده‌ها Data نامگذاری شده اند. CREATE TABLE Data ( id INTEGER NOT NULL PRIMARY KEY ...
گذری بر مفاهیم relationship
متاسفانه کاربران زیادی وجود دارند که هنوز درک صحیحی از جامعیت داده‌های ارجاعی (referential Integrity) ندارند. نمی‌دانند که relationship چیزی جز قید کلید خارجی (foreign key) نیست. در ادامه مفاهیم زیر را در حد آشنایی توضیح خواهم داد: کلید خارجی ترکیبی (composite foreign key) خود ارجاعی (self referencing) اعمال تغییرات به صورت آبشاری (cascade) چندین مسیر برای اعمال (multiple cascading path) جدول اتصال (junction table)- ارتباط یک به یک توس ...