SQL Server قابلیت فعال(enable) و غیر فعال(disable) کردن دو قید کلید خارجی و check را برای ما مهیا کرده است.
ما میتوانیم بعد از ساخت جدول و انتشار مقداری داده در آن قیدهایی را ایجاد کنیم. بطور پیشفرض اگر شرط قید ما بر قرار بود قید به طور صحیح ساخته میشود و اگر شرط قید ما بر قرار نباشد قید با خطای conflict مواجه خواهد شد.
بطور کلی غیر فعال کردن قیدها کار درستی نیست. ولی در برخی مواقع برای تسریع در اجرای کد میتوانیم قید را ...
مقدمه (شرح مساله)
چندی پیش در تالار T-SQL سوالی مطرح شد راجع به مساله ای که معروف است به top N per group.
تنها موضوعی که باعث شد من مطلبی راجع به آن بنویسم محدودیتی بود که کاربر مورد نظر داشت؛ که آن محدودیت چیزی نبود جز: query بایستی در نسخه 2000 جوابگو باشد.
قطعا شده است که بخواهید مثلا به ازای هر مشتری آخرین سفارش آن را انتخاب کنید. این مساله Top N نامیده میشود.
فرض کن ...
امروز در یک تالار سوالی مطرح شد با این عنوان "چگونه میتوانم گرههای برگ یک شاخه را بدست بیاورم". خب راه حلی که فورا به ذهنم رسید استفاده از یک query بازگشتی (recursive) بود.
به ساختار سلسله مراتبی زیر توجه بفرمایید:
گره هایی که با رنگ سبز علامت گذاری شده اند را گرههای برگ مینامیم چون که آن گرهها بدون زیر شاخه هستند.
فرض کنید از ما خواسته شده است با داشتن گره A تمام برگهای این شاخه را بدست بیاوریم.
دو مرحله را باید طی کنیم ابتدا تمام ...
مقدمه و شرح مساله
توسط ویژگیهای جدیدی که در نسخه 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 به چند دسته تقسیم میشود که سادهترین آنها میان متحرک ساده است.
برای محاسبه میانگین متحرک باید بازه زمانی مورد نظر را مشخص کنیم. مثلا میانگین فروش در 3 روز گذشته.
به جدول زیر توجه بفرمایید:
میانگین متحرک فروش سه روز و چهار روز گذشته در جدول فوق قابل مشاهده است.
بطور مثال مقدار میانگین متحرک سه روزه برای روز چهارم برابر است با جمع فروش سه روز گذشته تقسیم بر سه. یعنی 3/(10+12+13)
و برای روز ششم می ...
معایب شکل دوم نرمال
ابتدا اجازه دهید که مثالی از یک جدول بیاورم که به شکل دوم نرمال بوده ولی به شکل سوم نرمال نباشد. برای این منظور دو جدول زیر که هر دو در شکل سوم نرمال به سر میبرند را با هم ترکیب میکنیم. ستون هایی از جدول که با نقاط قرمز رنگ علامت گذاری شده اند کلیدهای اولیه جدول میباشند.
اگر این دو جدول را با هم ترکیب کنیم، جدولی حاصل میشود که به فرم دوم نرمال است یعنی تمام خصیصههای غیر کلیدی وابسته به کلید اولیه (کد دانشجو) ...
وابستگی تابعی
برای وارد شدن به بحث نظری
نرمالسازی نیاز هست با مفهوم وابستگی تابعی آشنا شویم.
وابستگی تابعی یک مبحث نسبتا مفصل و تئوری هست که زمان زیادی برای شرح جزئیات آن نیاز هست در نتیجه در حد آشنایی و نیازمان به آن توجه خواهیم داشت.
به جدول زیر نگاه کنید:
این جدول نشان میدهد هر عرضه کننده(S#) چه قطعه (P#) را به چه تعداد (Qty) تولید کرده است. City هم شهریست که عرضه
کننده در آن سکونت دارد.
از دادههای فعلی جدول میشود برداشتهای ...
مقدمه
نرمالسازی یا normalization باعث جلوگیری از تکرار و افزونگی اطلاعات میشود. و همچنین مانع از یکسری ناهنجاریها در عملیات درج، بروز رسانی، حذف و انتخاب خواهد شد.
شکلهای نرمال متعددی تعریف شده اند که به شرح زیر است:
شکل نرمال اول (1NF)
شکل نرمال دوم (2ND)
شکل نرمال سوم (3NF)
شکل نرمال بویس کاد (BCNF)
شکل نرمال چهارم (4NF)
شکل نرمال پنجم (5NF)
سه
شکل اول نرمال یعنی 1NF، 2NF
و 3NF توسط دکتر Codd تعریف شده اند. شکل نرمال بویس کاد ...
مقدمه
در قسمت پیشین نشان داده شد که چگونه کاراکترهای خارج از رنج حروف الفبای انگلیسی از عبارات موجود در یک جدول حذف شدند.
اکنون شرایط کمی تغییر کرده است کاراکترهای ناخواسته در قالب یک مجموعه (جدول) به ما ارائه داده میشوند. ما بایستی تمام کاراکترهای داده شده را از عبارات (موجود در جدول) در صورت تطابق حذف کنیم.
جدول کاراکترهای ناخواسته Unwanted و جدول دادهها Data نامگذاری شده اند.
CREATE TABLE Data
(
id INTEGER NOT NULL PRIMARY KEY ...
متاسفانه کاربران زیادی وجود دارند که هنوز درک صحیحی از جامعیت دادههای ارجاعی (referential Integrity) ندارند. نمیدانند که relationship چیزی جز قید کلید خارجی (foreign key) نیست. در ادامه مفاهیم زیر را در حد آشنایی توضیح خواهم داد:
کلید خارجی ترکیبی (composite foreign key)
خود ارجاعی (self referencing)
اعمال تغییرات به صورت آبشاری (cascade)
چندین مسیر برای اعمال (multiple cascading path)
جدول اتصال (junction table)- ارتباط یک به یک
توس ...