PDA

View Full Version : آموزش SQL SERVER



aryaei2000
چهارشنبه 13 شهریور 1387, 16:17 عصر
بخش اول
عرضه شدن نسخه 2005 پایگاه داده‌ای مشهور مایکروسافت یعنی SQLServer، بازار نرم‌افزارهای بانک اطلاعاتی را به شدت تحت تأثیر خود قرار داد. امکانات گسترده‌ای که در این نسخه جدید تعبیه شده، طراحی و پیاده‌سازی بانک‌های اطلاعاتی را سرعت بخشیده و تلفیق و انطباق آن با انواع فناوری‌های نو مانند XML وADO.NET، باعث افزایش قدرت و کارایی آن شده است. در این مقاله به برخی از ویژگی‌های جدید این برنامه نگاهی خواهیم داشت.

Snapshot Isolation Level
یکی از روش‌هایی که به انواع متدهای قفل کردن ردیف‌های یک جدول بانک‌اطلاعاتی در نسخه جدید اضافه شده است، شیوه تصویربرداری از رکورد است. در روش‌های قبلی، اگر یک یا چند رکورد بانک اطلاعاتی توسط دستور BeginTrans که شروع یک فرآیند را مشخص می‌کند در شرف تغییر یا حذف قرار می‌گرفتند، تا مادامی‌ که فرآیند مذکور توسط دستور Commit Trans تأیید یا توسط RollBack منتفی نشود، از هیچ جا و برنامه‌ای نمی‌توان رکوردهای مذکور را حتی با دستور ساده SELECT خواند. اما در روش جدید قفل‌گذاری، در صورت بروز چنین رویدادی سایر کاربران می‌توانند همواره آخرین ارزش رکوردهای مذکور را با این فرض که هنوز هیچ تغییری در آن‌ها ایجاد نشده است بخوانند و مورد استفاده قرار دهند.
باز هم دات‌نت
با نسخه جدید SQL Server، برنامه‌نویسان بانک‌های اطلاعاتی قادرند از امکانات و قابلیت‌های موجود در پلتفرم دات‌نت و کلیه توابع و کلاس‌های ساخته شده در آن بهره‌مند شوند. یکی از ابتدایی‌ترین و در عین حال اساسی‌ترین این قابلیت‌ها، امکان استفاده از دو زبان مهم و کاربرپسند دات‌نت یعنی ویژوال بیسیک و سی‌شارپ در پیاده‌سازی اجزای مختلف یک بانک‌اطلاعاتی است. این عامل نه‌تنها باعث می‌شود که برنامه‌نویسان برای نوشتن ماژول‌هایی مثل تریگرها، روال‌ها (Stored Procedures) در توابع به جای استفاده از زبان استاندارد و در عین حال پیچیده T-SQL ، بتوانند از زبان‌های محیط دات‌نت با تمام ساختارها، دستورات، کلاس‌ها، آرایه‌ها، و خلاصه تمام ویژگی‌های یک زبان شی گرا استفاده کنند، بلکه این همکاری نزدیک بین موتور برنامه‌نویسی دات‌نت یعنی CLR (که مسؤول تبدیل کدهای نوشته شده دات‌نت به زبان سیستم‌عامل است) و موتور بانک اطلاعاتی SQLServer باعث شده تا به غیر از تنوع زبان‌های برنامه‌نویسی قابل استفاده درSQLServer، تغییر قابل توجهی نیز در کارایی ماژول‌های مذکور پیش آید. در واقع موضوع از این قرار است که اصولاً کدهای نوشته شده به زبان‌های دات‌نت، ابتدا توسط کامپایلر به زبان (IL) ترجمه می‌شوند. سپس CLR این کد میانی را به کد قابل فهم سیستم‌عامل تبدیل و آماده اجرا می‌نماید. این کار سبب می‌شود تا کدهای نهایی به دلیل این‌که بسیار به سیستم‌عامل نزدیک می‌باشد سریع‌تر از کدهای TSQL (که فقط توسط موتور بانک اطلاعاتی قابل اجرا هستند) اجرا شوند و در زمان اجرا از کارایی بیشتری برخوردار باشند. البته این مسأله بدین معنی نیست که استفاده از زبان‌های دات‌نت همیشه بر زبان‌های SQL ارجحیت دارد، بلکه منظور آن است که در برخی موارد ممکن است آن قدر منطق و الگوریتم یک ماژول پیچیده باشد که برنامه‌نویس استفاده از زبان‌های دات‌نت را به دلیل آسان‌تر بودن ساختار و دستورات آن به زبان SQL ترجیح دهد. بنابراین زمانی که بیشترعملیات یک ماژول مربوط به خواندن و نوشتن اطلاعات باشد بهتر است از همان دستورات استاندارد SQL یعنی SELECT ،UPDATE ،DELETE وINSERT استفاده کرده و بی‌جهت منابع سیستم را صرف تعریف متغیرها و کلاس‌های دات‌نت ننماید. اما در ماژول‌هایی که بیشتر عملیاتشان شامل پردازش اطلاعات مثل انجام عملیات‌های ریاضی یا مقایسه اطلاعات با یکدیگر است بهتر است تا هم از امکانات برنامه‌نویسی و هم از سرعت و کارایی بالای دات‌نت در این زمینه بهره برد و ماژول‌های مذکور را با زبان‌های دات‌نت پیاده‌سازی کرد.
ADO .NET وارد می‌شود
طبق یک سنت نه‌چندان قدیمی برنامه‌نویسی در محیط ویندوز، برنامه‌نویسان SQLServer، بانک اطلاعاتی موردنظرشان را برروی سرور و برنامه کاربردی نوشته شده با زبانی مثل ویژوال بیسیک را بر روی کلاینت‌ها قرار می‌دهند. سپس از طریق این برنامه کاربردی و با استفاده از اشیایی از جنس ADO داده‌های موردنیاز خود را از سمت سرور دریافت کرده و یا به آن ارسال می‌کنند. اکنون این ارتباط به لطف نسخه جدید SQLServer و همچنین محیط دات‌نت، با امکانات جدیدADO.NET بسیار کامل‌تر از قبل شده است. این ارتباط جدید با استفاده از مکانیسمی به نام اعلان (Notification) به یک ارتباط دو‌طرفه فعال تبدیل شده به طوری که ADO.NET قادر است پیغام‌هایی را از سمت پایگاه داده به سمت کلاینت ارسال کند. به عنوان مثال فرض کنید که شما با استفاده ازADO تعدادی از رکوردهای یک جدول بانک اطلاعاتی را انتخاب کرده و مشغول کار برروی آن‌ها هستید. در همین هنگام کاربر دیگری از طریق کلاینت و ADO خود، رکوردی در محدوده رکوردهای مورد انتخاب شما را تغییر می‌دهد یا حذف می‌کند. در این وقت موتور پایگاه داده با ارسال پیغامی به ADO شما، این مسأله را با استفاده از فراخوانی یک رخداد (Event) شی ADO به اطلاعتان می‌رساند.
علاوه براین قابلیت جدید، فناوری جدید دیگری هم با استفاده ازADO.NET به نسخه جدید SQLServer اضافه شده و آن امکان چند پرس‌وجوی همزمان توسط یک شی ADO است. در این شیوه اگر یک شی ADO با استفاده از دستور SELECT مشغول خواندن تعدادی از رکوردهای یک جدول بانک اطلاعاتی باشد، می‌تواند بدون این‌که منتظر به پایان رسیدن این عملیات شود، تعداد دیگری از رکوردهای یک جدول دیگر بانک اطلاعاتی را بخواند. این قابلیت جدید با نام (Multiple Active Result Set (MARS که قبلاً فقط در کرسرهای سمت سرور (server side) و آن هم نه با کارایی بالا وجود داشت اکنون در کرسرهای سمت راست کلاینت هم وجود دارد و تفاوت عمده آن با شکل قدیمی هم علاوه بر مورد مذکور، امکان ایجاد چند کرسر در یک شی ADO به صورت همزمان است. SQLServer نسخه 2005 به خوبی از تمام این ویژگی‌ها، پشتیبانی می‌کند.

aryaei2000
چهارشنبه 13 شهریور 1387, 16:17 عصر
بخش دوم
تکنولوژی XML
اکنون که XML به یک استاندارد ارتباطی بین سکوهای مختلف تبدیل شده است، نسخه جدید SQLServer هم از توجه کافی به آن و ایجاد یک انقلاب در ساده‌تر استفاده کردن از آن طفره نرفته است. در نسخه 2000 کاربران قادر بودند تا با استفاده از دستور FOR XML نتیجه یک پرس‌وجوی SELECT از یک بانک اطلاعاتی را به درون یک فایل XML بریزند یا مثلاً با دستور OPEN XML می‌توانستند یک فایل XML را باز کرده و شروع به خواندن دستورات درون آن نمایند.
از آن‌جا که در نسخه جدید SQLServer توجه خاصی به این استاندارد و زبان ارتباطی شده است، یک نوع داده جدید (Data type) به انواع داده‌های قبلی و استاندارد SQL مثل int ، char و امثال آن اضافه شده است. این نوع داده جدید که XML نام دارد و دارای خصوصیات یک نوع داده موجود در یک محیط شی‌گرا است، دارای متدهای پیشرفته‌ای چون ()nodes() ،Value() ،exist() ،query و ()modify بوده و قادر است انواع پردازش‌های قابل انجام برروی اسناد XML را به راحتی انجام دهد. عملیات جستجو، تغییر، حذف و درج مقادیر موردنظر در داخل یک فایل XML را می‌توان با استفاده از متدهای مذکور و صرفاً با چند خط برنامه‌نویسی انجام داد. همچنین در این نسخه برخلاف نسخه 2000، با استفاده از دستور FOR XML می‌توان یک شیء از جنس XML را بدون ارسال آن به کلاینت، برروی سرور ساخته و از آن نگهداری کرد. با این کار می‌توان جداولی را که مرتباً مورد رجوع کاربران قرار می‌گیرند هراز گاهی در قالب XML به داخل حافظه آورد و کاربران مذکور به جای رجوع به جداول اصلی در هارددیسک، با استفاده از دستورات ویژه جستجو درXML ، متغیر مذکور را در حافظه سرور مورد جستجو قرار دهند و بدین‌وسیله یک نوع عمل Cache کردن را جهت افزایش سرعت دسترسی به اطلاعات تکراری شبیه‌سازی کنند. در این حالت، کاربران به جای استفاده از دستورSELECT استاندارد می‌توانند از OPEN XML که در نسخه 2005 قادر است متغیرهای جدید از نوع XML را بخواند استفاده کرده و به سرعت به اطلاعات موردنیاز خود دسترسی پیدا کنند. این قابلیت جدید آن‌قدر در سریع‌تر کردن جستجو در برنامه‌های تحت وب مهم و مؤثر است که جای هیچ مشکلی را در استفاده از آن باقی نمی‌گذارد.
سرویس اعلان (Notification)
همان‌طور که گفتیم سیستم اعلان درSQLServer قادر است پیغام‌هایی را طی زمان‌های مشخص به سمت کاربران بفرستد. مثلاً تصور کنید که تعدادی کاربر در حال اتصال به یک بانک حاوی اطلاعات مربوط به ارزش سهام در بورس هستند. از آن‌جایی که ممکن است قیمت سهام هر شرکت یا مؤسسه برای تعدادی از کاربران از اهمیت زیادی برخوردار باشد، می‌توان این سیستم را طوری تنظیم کرد تا هرگاه ارزش سهام خاصی که موردنظر هر کاربر است تغییر کرد، به صورت اتوماتیک به وی اعلام شود. کاربر هم می‌تواند این تغییرات را برروی برنامه کاربردی خود، تلفن همراه (در قالب Windows Messenger ،(SMS و یا ایمیل به‌صورت مرتب دریافت و مشاهده کند.
سرویس گزارش‌گیری
سرویس جدید تولید گزارش‌های متنوع در نسخه 2005 به یکی از جالب‌ترین و پرکاربردترین قابلیت‌های این نسخه تبدیل شده است، وجود یک موتور گزارشگر قوی در سمت سرور و یک ابزار مناسب ساخت گزارش با واسط کاربر عالی، باعث شده تا برنامه‌نویسان بتوانند گزارش‌های موردنظر خود را با کارایی و سرعت مناسب در سمت سرور بسازند به طوری که این گزارش‌های سمت سرور توسط هر برنامه کاربردی سمت کلاینت در هر پلتفرمی با همان امکانات اتصال به SQLServer قابل مشاهده است.
بهبودهای ایجاد شده در زبان
در 2005 SQLServer تغییرات بسیار مثبتی در زبان SQL T ایجاد شده است. این تغییرات در زمینه‌های مختلف مثل مدیریت خطاها، جستجوهای بازگشتی (Recursive Query) و حتی در بدنه موتور پایگاه داده‌ها انجام شده و کارایی کلی ذخیره و یا خواندن اطلاعات را به نحو مطلوبی افزایش داده است. به عنوان مثال دردستورات
TSQL، دو اپراتور جدید دیده می‌شود، که PIVOT وUNPIVOT نام دارند. این دو اپراتور که در قسمت FROM یک پرس‌وجو مورد استفاده قرار می‌گیرند می‌توانند نتیجه یک جستجوی انجام شده توسط دستور SELECT را به جای برگرداندن در قالب ردیف‌ها یا رکوردهای پشت‌سرهم، به صورت ستون‌های مختلف یک یا چند رکورد برگردانند. در این روش یکی از ستون‌های (فیلدهای) یک جستجو به عنوان محور معرفی شده و بقیه ستون‌ها براساس آن به صورت افقی طبقه‌بندی می‌شوند. به یک مثال توجه کنید:

SELECT CUSTOMER ID, order No
FROM orders PIVOT CustomerID
Order No Order No Order No Order No Customer ID
4400 1120 25 1
350 2
1780 443 3
8989 2222 1980 555 4
نتیجه جستجوی فوق چیزی شبیه جدول بالا‌ خواهد بود

aryaei2000
چهارشنبه 13 شهریور 1387, 16:18 عصر
همان‌طور که مشاهده می‌کنید با استفاده از اپراتور مذکور، نتیجه پرس‌وجوی انجام شده به این صورت که هر ردیف به یک شماره مشتری و چندین شماره سفارش مربوطه به آن مشتری در قالب ستون‌های مختلف است، در می‌آید. این همان چیزی است که سال‌ها درSQLServer وجود نداشت و ابزارهای مختلف گزارش‌سازی مثل CrystalReport آن را با نام Cross Tab به کاربران خود ارایه می‌دادند. در همین رابطه اپراتورUNPIVOT هم عمل عکس اپراتور مذکور را انجام می‌دهد.
اپراتور دیگری که می‌تواند نقش مهمی را در دستورات SQL بازی کند APPLY نام دارد که در قسمت FROM یک دستور SQL به کار می‌رود. با استفاده از این دستور می‌توان خروجی یک تابع (Function) را با یک یا چند جدول دیگر ترکیب (Join) کرد همان‌طور که می‌دانید در 2005 SQLServer توابع می‌توانند یک یا چند ردیف یک جدول اطلاعاتی را برگردانند که این خروجی می‌تواند با یک جدول دیگر با استفاده از اپراتور مذکور ترکیب شود.
مدیریت خطا
در نسخه‌های قدیمی SQLServer برای کشف و مدیریت خطا از سیستم Error Handling استفاده می‌شد. این شیوه کشف خطا که در زبانی مثل ویژوال بیسیک 6 هم مورد استفاده قرار می‌گرفت با استفاده از دستور GOTO می‌توانست کنترل و خط اجرای روال را از یک محل به محل دیگر و در واقع از محل بروز خطا به محل مدیریت و آشکار کردن (Raise) آن ببرد و بدین‌وسیله پیغام خطایی را به کار نشان دهد. نسخه جدید SQLServer با تأثیر از پلتفرم دات‌نت، از دستورات ویژه کشف و مدیریت خطا با عنوان Exception Handling استفاده می‌کند. این روش با استفاده از دستورات جدید TRY/CATCH شیوه بهتری از مدیریت خطا را به اجرا می‌گذارد. در این روش برخلاف روش قبل، تمام خطاهای اتفاق‌افتادنی مثل خطاهای مربوط به تبدیل داده‌ها به یکدیگر (DataConversion) به خوبی مدیریت شده و از بروز خطاهایی که منجر به اتمام ناقص عملیات یک روال یا تریگر می‌شود جلوگیری به عمل می‌آید

aryaei2000
چهارشنبه 13 شهریور 1387, 16:19 عصر
SQL Server 2005، نسل بعدي سيستم مديريت و تجزيه و تحليل بانک های اطلاعاتی است که توسط شرکت نرم افزاری مایکروسافت طراحی شده و قرار است در تاریخ 7 نوامبر 2005 به بازار نرم افزار عرضه شود.
مایکروسافت توسعه یافتن امنيت، مقياس پذيري و نیز فراهم آوردن و به کارگيري اطلاعات یک بانک اطلاعاتی را از مشخصات جدید این نسخه از SQL Sever عنوان کرده است.
از دیگر امکانات توسعه پیدا کرده در این نرم افزار میتوان به موارد زیر اشاره کرد:

- Relation database: امنيت، قابل اعتماد بودن، مقياس پذيري، سرعت بالاي دسترسي به اطلاعات و پايگاه هاي داده اي طراحي شده، اصلاح ساختار و نيز پشتيباني از XML.
- Replication Services: پاسخ دهي اطلاعات براي پخش کردن يا کاربردهاي پردازش اطلاعات در موبايل، قابليت استفاده در سيستم هاي بزرگ، سازگاری کامل مقياس پذيري با انبار اطلاعات ثانويه( Secendry Data Storage) ، هماهنگی کامل با ديتابيس هاي اوراکل.
- Analysis Services: قابليت پردازش هاي تجزيه و تحليلي آنلاين (OLAP) با سرعت بالا، تجزيه و تحليل پيشرفته براي مجموعه ديتابيس هاي پيچيده و بزرگ با استفاده از راه های متعدد ذخيره سازي اطلاعات.
- Reporting Services: محيط جامع و کامل براي ايجاد يک سيستم گزارش گيري و مديريت دو نوع گزارش گيري بر روي کاغذ و تحت وب.
- Management Tools: اس کيو ال سرور 2005 شامل ابزارهاي مديريتي اوليه و ابزارهاي پيشرفته مديريت از قبيل (Microsoft Opretion Manager - MOM) و (Microsoft system Managment Server - SMS). پروتکل هاي استاندارد دسترسي به اطلاعات، پشتيباني از وب سرويس هاي محلي ساخته شده براي SQL Server
- Development tools: توسعه ابزارهایی برای طراحي و تجزیه و تحلیل یک بانک اطلاعاتی، استخراج ديتا، جابه جايي اطلاعات، و بارگذاري آنها، استخراج اطلاعات OLAP، و سازگاري گزارش گيري هاي دقيق با استفاده از مجموعه VS.Net.
- Notification Services
- Integration Services
- Secure by design
- Secure by default
- Secure in deployment
- Communications
- Restricting user access to the server
- Disabling services and restricting service configuration
- Reduci

aryaei2000
چهارشنبه 13 شهریور 1387, 16:25 عصر
انواع داده ها


هر ستون در جدول داراي خصوصيات معين مي باشد كه آن را براي SQL Server تعريف مي كند. مهمتر از اين خصوصيات، نوع داده هاي ستون مي باشد، كه تعريفي از نوع اطلاعاتی كه درستونها ذخيره خواهند شد می باشد. SQL Server يك محدوده وسيعي از انواع داده ها را فراهم آورد . به طور كلي انواع داده ها به وسيله SQL Server فراهم مي گردد، همچنين شما مي توانيد خودتان تعريف كنيد.




مقادير قابل قبول انواع داده
مقادير عددی
مقادير اعداد صحيح از 63^2- تا1-63^2 bight
مقادير اعداد صحيح از 31^2- تا 1-31^2 Int
مقادير اعداد صحيح از 15^2- تا 1-15^2 Smallint
مقادير اعداد صحيح از 0 تا 255 Tinyint
مقادير اعداد صحيح با ارزش 0 و 1 bit
مقادير مقياس با دقت ثابت شده از 1+38^10 تا 1-38^10 decimal
مقادير Decimal همچنين مي تواند تعريف شود به صورتNumeric ، دامنه مقادير يكسان مي باشد.
مقادير Monetary (مالي) از 63^2- تا 1-63^2 (مقادير Money تا 0.0001 از هرواحد دقت دارد). Money
مقاديرMonetary از 3648 . 748 . 214- تا 3647 . 748 . 214 مي باشد Smallmoney
(مقادير Small Monetary تا 0001/0 واحد دقيق مي باشد).
مقادير صحيح شناور (متغير) از 308+E1.79- تا 308+E1.79 (مقادير Float فقط تقريبي مي باشد) Float
مقادير صحيح شناور متغير از 38+E3.40- تا 38+E3.40 مي باشند (مقادير real فقط تقريبي مي باشد) real
مقادير تاريخ و زمان از 1.1753 ژانويه تا 31.9999 دسامبر مي باشد datetime
(مقادير Date Time تا 3 هزارم ثانيه يا 3.33 ميلي ثانيه دقت دارد) Smalldatedtime
مقادير تاريخ و زمان از 1 ژانويه و 1900 تا 6 ژوئن و 2079 مي باشد (مقاديرSmalldatetime تا 1 دقيقه دقت دارند)
مقادير کاراکتری
مقادير حرفي كدگذاري نشده با طول ثابت با طول حداكثر 8000 حرف مي باشد. Char
مقادير حرفي كدگذاري نشده با طول متغير با طول حداكثر 8000 حرف مي باشد. Varchar
داده كدگذاري شده با طول متغير با طول حداكثر 1-31^2 (647 . 741 . 073 . 1) حرف مي باشد. Text
داده كدگذاري شده با طول ثابت با طول حداكثر 4000 حرف مي باشد Nchar
داده كدگذاري نشده با طول متغير با حداكثر طول 4000 حرف مي باشد nvarchar
داده كدگذاري شده با طول متغير با حداكثر طول 1-30^2 (823 . 741 . 073 . 1) حرف مي باشد ntext
مقادير باينری (1 و 0)
داده باينري با طول ثابت با حداكثر طول 8000 بايت مي باشد binary
داده باينري با طول متغير با حداكثر طول 8000 بايت مي باشد Varbinary
داده باينري با طول متغير با حداكثر طول 1-31^2 (647 . 783 . 147 . 2) بايت مي باشد Image
مقادير ديگر
يك مرجع مبناء براي يك Cursor مي باشد (يكCursor يك ماهيتي است كه يك مرجع مبناء را براي يك سطر مشخص در يك Result Set نشان مي دهد. Cursor
يك شمار واحد پايگاه داده است كه به هنگام مي شود هر زماني كه يك سطر به هنگام شود. (نوع داده rowversion در نسخه قبلی از Timestamp SQL Server ناميده می شود) rowversion
مقاديري از هر نوع غير از text ، ntext ، rowversion (timestamp) و sql - variant می باشد. يك معرف واحد کلي GUID مي باشد. Uniqveidentifier

aryaei2000
چهارشنبه 13 شهریور 1387, 16:26 عصر
GUIDS


Guid که از GloballyUniqueIdentifier گرفته شده، يک مقادير باينری (1 و 0) 16 بايتی می باشد که هيچ کامپيوتر ديگری در دنيا نخواهد مقدار آن را توليد کند. نوع داده uniqueidentifier برای ذخيره کردن Guids استفاده می شود. SQL Server به طور خودکار مقادير Guid را از همان راهی که مقادير Identity ايجاد می شود، فراهم نمی کند. زيرا يک جدول می تواند شامل Guids چندگانه باشد، اما فقط يک Identity منحصر به فرد باشد. اگر چه، تابع NEWID که SQL Server آن را به صورت پيش فرض در نظر می گيرد زمانی که خصوصيات IsrowGuid ، Yes می شود. يک Guid جديد بر خواهد گشت زمانی که سطر قرار داده می شود.

aryaei2000
چهارشنبه 13 شهریور 1387, 16:30 عصر
ايجاد کردن شئی های جدول
در درسهای گذشته، شما آموختيد که چگونه خصوصيات گوناگون از قبيل مقادير پيش فرض و Check Constraints برای ستونهای خاص از يک جدول تخصيص دهيم. بعضی مواقع اگر چه، يک نوع خاص از ستون در چندين جدول مختلف استفاده می گردد. در اين وضعيت، آن اغلب مفيد می باشد به ايجاد Properties در يک جای جداگانه به طوری که آنها را برای هر جدول به کار ببريم.
پيش فرضها، نقشها و انواع داده تعريف شده کاربر مکانيزمی را برای ايجاد و نگهداری اين شئی ها در يک مکان جداگانه فراهم می آورند. برای مثال شما يک مدل پايگاه داده برای جوابگويی به ارزيابی مشتری می سازيد. شما در ابتدا تصميم می گيريد که مقدار پيش فرض برای هر سؤالی که جواب داده نشده بايد Unknown"" شوند. اگر شما يک پيش فرض ايجاد کنيد و پيش فرضها را برای ستون مناسب پيوند دهيد. شما می توانيد بعداً پيش فرض را به Unanswered تغيير دهيد. بدون هيچ تغييری هر ستون، آن پيش فرض را استفاده می کند.

شناخت پيش فرضها
توابع پيش فرض از همان راهی که خصوصيات پيش فرض که شما مشخص می کنيد زمانی که شما يک ستون در Table Designer ايجاد می کنيد آنها مقاديری هستند که به طور خودکار به وسيله SQL Server تخصيص داده می شوند. اگر کاربر يک مقدار را زمانی که سطری را ايجاد می کند مشخص نکند. اگر چه پيش فرض، شئی های سطح پايگاه داده می باشند که می تواند برای چندين ستونها به کار برده شوند.

ايجادکردن پيش فرضها
از موقعی که پيش فرض، شئی های مستقل در داخل پايگاه داده هستند، شئی بايد پيش فرض را ايجاد کند قبل از اينکه شئی بتواند آن را برای يک ستون جدول متصل سازد.

ايجاد کردن يک پيش فرض
1- پوشه Defaults را از پايگاه داده Aromatherapy از درختConsole جستجو می کنيم. SQL Server يک ليستی از Default ها را در قالب Details نشان می دهد. (چيزی در پايگاه داده Sample وجود ندارد).

2- دکمه Newرا کليک کرده، SQL Server کادر محاوه اي Default Properties را نشان می دهد.

3- در فيلدName ، Default Unknown را تايپ مي کنيم.

4- "Unknown" را در فيلد Value تايپ می کنيم.

5- OK را کليک کرده،SQL Server پيش فرض را ايجاد می کند.

ربط دادن يک پيش فرض به يک ستون
1- پوشهTables را راهبری کرده، Table Designer را برای جدول Oil با کليک راست کردن نام جدول در قاب Details باز کرده و Table Design را انتخاب می کنيم.

2- يک ستون جديد برای جدولی که Sample ناميده شده اضافه می کنيم. انواع داده پيش فرض را پذيرفته و طول آن به وسيله SQL Server پيشنهاد می گردد.

3- فيلد Default Valve را برای ستون کليک کرده و سپس dbo.DefaultUnknown را از ليست انتخاب می کنيم.

4- دکمه Save را کليک کردهSQL Server جدول را ذخيره می کند.

قطع پيوند يک پيش فرض
1- اگر Table Designer برای جدول Oilsاز تمرين قبل باز نيست، آن را به وسيله کليک راست کردن نام جدول در قاب Pet ail> باز کرده و Design Table را انتخاب مي کنيم. SQL Server، Table Disdainer را باز مي کند.

2- ستون Sampleرا انتخاب کرده، Table Designerخصوصيات اين ستون را نشان می دهد.

3- dbo.DefaultUnknown را در فيلد Default Value انتخاب کرده و کليد Delete را برای برداشتن مقدار فشار می دهيم.

4- دکمه Save راکليک کرده SQL Server تغييرات برای تعريف ستون را ذخيره می سازد.

aryaei2000
چهارشنبه 13 شهریور 1387, 16:30 عصر
شناخت نقشها
نقشها مانند پيش فرضها سطوح شئی های پايگاه داده می باشند که می تواند برای ستونها در جداول چندگانه به کار برده شوند. يک نقش Check Constraint موجود می باشد که مشخص می کند مقادير داده ها در يک ستون مورد قبول می باشند، اما استفاده از آن بيشتر محدود شده است. يک ستون می تواند چندين Check Constraintداشته باشد که برای آن به کار برده می شود.
راهنمايی: مايکروسافت نقشها و توصيه ها را که با Check Constraint جايگزين می شود را درست نمی داند. اگر چه نقشها هنوز جايگاهشان را در پايگاه داده هایSQL Server دارند از زمانی که فقط يک وظيفه بتواند برای نوع داده هايی که به وسيله SQL Server تعريف شده به کار برده شود.
برخلاف Check Constraint ، يک نقش نمی تواند مبنايی برای يک ستون به طور مستقيم باشد. در عوض، مقاديری که يک نقش به کار می برد به نقشی که در يک متغيری که فرمت@Variable Name مي گيرد داده می شود. در مورد متغيرها در Detail در فصل 24 بحث خواهيم کرد.

ايجاد کردن نقشها
از زمانی که نقشها مانند Defaults مستقل از شئی های پايگاه داده می باشند، شما بايد آنها را قبل از اينکه شما بتوانيد آنها را برای يک ستون در جدول به کار ببريد ايجاد کنيد.

ايجاد يک نقش
1- پوشه نقش را از پايگاه داده در درخت Console راهبری کرده SQL Server يک ليستی از نقشها در پايگاه داده نشان می دهد. (ليست در پايگاه داده Sample خالی می باشد)

2- دکمه New را کليک کردهSQL Server کادر محاوره ای را باز می کند.

3- Sample Rule را به عنوان نام نقش تايپ می کنيم.

4- LEN(@Fldalue)>3 را به عنوان متن نقش تايپ می کنيم.

راهنمايی: به خاطر داشته باشيد LEN يک تابعTransact SQL می باشد که تعدادی از کاراکترها را در يک متن رشته ای برمی گرداند و اينکه @ قبل از يک بر چسب عبارتTransact SQL يک متغيــر را نشان می دهد، يک مقدار که برای عبارت داده می شود. بنابراين در اين حالت نقش Trueمی گردد اگر طول ستون بزرگتر از 3 باشد.
5-OK را کليک کرده، SQL Server کادر محاوره ای Rule Properties را می بندد و نقش را ايجاد می کند.

ربط دادن يک Rule به يک ستون
1- کادر محاوره ای Rule Properties را برایSample Rule به وسيله دابل کليک کردن نام Rule در قاب Details باز می کنيم. SQL Server کادر محاوره ای Rule Properties را نشان می دهد.

2- ستونBind را کليک کرده SQL Server کادر محاوره ایBind Rule to Columns را نشان می دهد.

3- [dbo].[Oils] را درTable Combo Box انتخاب می کنيم.SQL Server فيلدها را در جدول Oils نشان می دهد.

4- ستون Sample را در ليست Unbound Columns انتخاب کرده و سپس Add را کليک می کنيم. SQL Server ستون را به ليست Bound Columns حرکت می دهد.

5- SQL Server کادر محاوره ايBind Rule to Columns را می بندد.
6-OK را مجدداً برای بستن کادر محاوره ای Rule Properties کليک می کنيم.

aryaei2000
چهارشنبه 13 شهریور 1387, 16:31 عصر
شناخت User-Defined Data Types
نقشها و پيش فرضها مکانيزم مفيدی برای نگهداری محدوديتهای پايگاه داده ها می باشند، اما SQL Server حتی مکانيزم قوی تری در User-Defined Data Typesها فراهم می آورد. User-Defined Data Types بر مبنای هيچ نوع از پايگاه داده حقيقی مشخص نمی گردد و شامل مشخصاتی از طول ستون می باشد. به طور کلی نقشها و پيش فرضها ممکن است به طور انتخابی برای يکUser-Defined Data Types به کار برده شوند. زمانی که يک ستون بر مبنای يک User-Defined Data Typesايجاد می گردد، ستون جدول همه خصوصيات مشخص شده را برای آن نمونه به ارث خواهد برد. زمانی که مشخصات از User-Defined Data Typesتغييرمی يابد،نقشها برای ستونها بر اساس آن نمونه همچنين تغيير خواهد کرد.
راهنمايی: اگر يک User-Defined Data Type در پايگاه داده Model ايجاد گردد، همه پايگاه داده جديد به طور خودکار به آن نوع دسترسی خواهد داشت.

ايجادکردن User-Defined Data Types
User-Defined Data Types از شئی های پايگاه داده مستقل می باشند و بايد در داخل پايگاه داده تعريف شوند قبل از اينکه آنها بتوانند به ستونها تخصيص داده شوند.

ايجاد کردن يک User-Defined Data Types
1- پوشه User-Defined Data Types را از پايگاه داده Aromatherapy راهبری می کنيم. SQL Server يک ليستی ازUser-Defined Data Types را نشان می دهد (چيزی در پايگاه داده Sample وجودندارد).

2- دکمه New را کليک کرده SQL Server کادر محاوره اي User-Defined Data Types را نشان می دهد.

3- MySample را به عنوان نام User-Defined Data Types تايپ می کنيم.

4- نوع داده پايگاه را varchar و طول آن را 20 قرار می دهيم.

5- Dbo.Sample Rule را در Rule Combo Box انتخاب می کنيم.

6- مقادير پيش فرض برای Allow Nulls و گزينه های پيش فرض را می پذيريم و OKرا کليک می کنيم. SQL Server ، User-Defined Data Types را ايجاد می کند.




تخصيص يک ستون برای يک User-Defined Data Types
1- Table Designer را برای جدول Oils به وسيله کليک راست کردن نام آن در قاب Details باز می کنيم و Details Table را انتخاب می کنيم. SQL Server ، Table Designer را باز می کند.

2- ستون Sample را انتخاب کرده وMySample را از Data Type Combo Boxرا انتخاب می کنيم. Data Type , SQL Server را برای MySampleقرار می دهد.
راهنمايی: User-Defined Data Types در پايين ليست Data Type می باشد.

3- دکمهSave را کليک کردهSQL Server جدول را با تعريف جديد ذخيره می سازد.

aryaei2000
چهارشنبه 13 شهریور 1387, 16:32 عصر
ايجاد کردن Check Constraint
شناخت Check Constraint
يکی از مهمترين بازرسی های طراحی پايگاه داده يکپارچه سازی داده ها می باشد. قاعده يکپارچگی داده ها تضمين مي کند که داده های ايجاد شده در پايگاه داده اگر درست نباشد حداقل قابل قبول می باشد. چندين سطح از يکپارچگی داده ها وجود دارد. در درس 7 ما درباره يکپارچگی رابطه ای مطالعه کرديم که تضمين می کند اجتماع بين جداول ايجاد و به طور صحيح نگهداری می گردند.
Check Constraintsبرای اجرای دو فرم اضافی از يکپارچگی پايگاه داده استفاده می شود. domain Integrity و entity Integrity . در اصطلاحات رابطه ای که Domain محدوده ای از مقاديری است که يک ستون می تواند داشته باشد. نوع داده های يک ستون يکی از ويژگيهای از يک Domain می باشد، اما تعريف نوع داده معمولاً کافی نيست. برای مثال، يک ستون Smallint می تواند شامل مقادير صحيح از 768/32- تا 767/32 می باشد که ممکن نوع داده مناسبی برای يک ستونی که شامل سالی است که يک کارمند مدرک دانشگاهي را در دريافت می کند باشد. اما حدود اصلی مقادير ستون Year Degree Awarded بيشتر محدود شده و بين 1900 و سال جاری می باشد. شما از يک Check Constraints استفاده می کنيد، برای تخمين اينکه هيچ کس به طور واقعی مقادير 1543 يا 2075 را به عنوان مقدار ستون وارد نمی کند. Entity Integrity Constraints جامعيت از موجودی خودش را اجرا می کند. مهمترين محدوديتهای يکپارچگی موجوديت آن است که هر موجوديت Entity Integrity بايد به طور واحد قابل شناسايی باشد. اين محدوديت به وسيله مشخص کردن يک کليد اصلی برای جدول انجام می گيرد. يکپارچگی موجوديت همچنين می تواند درگير ارزيابی شرطی از چندين ستون در يک جدول باشد و اين نوع از محدوديت اغلب بيشتر با استفاده از Check Constraints انجام می گيرد. برای مثال، اگر يک جدول شامل ستونهای کشور و ايالت باشد شما ممکن از يک Check Constraints برای مشخص کردن اينکه ارزش ستون State ، "AZ" معتبر می باشد فقط اگر ستون Country شامل مقادير USA باشد. Check Constraint به عنوان Boolean Expressions شناخته می شود يک Boolean Expressions برای مقادير True يا False ارزيابی می گردد. Boolean Expressions را در درس 13 می آموزيم. در اين درس ما از عبارت LEN()>=4 استفاده می کنيم. LEN يک تابع Transact-SQL می باشد که تعدادی کارکترهای يک رشته را برمی گرداند. بنابراين عبارت LEN()>=4 ارزش آن اگر شامل 4 يا بيشتر کارکتر باشد ارزش آن True و اگر کمتر از 4 باشد ارزش آن False می گردد.


ايجاد کردن Check Constraint)
مانند ايندکس ها و پيوندها شما می توانيد Check Constraints را با استفاده از کادر محاوره ای Properties از Table Designer ايجاد کنيد.
1- Table Designer را برای جدول Oils به وسيله کليک راست کردن نام جدول در قاب Details باز کرده و Design Table را انتخاب می کنيم. Table Designer , SQL Server را باز می کنيم.

2- دکمه Constraints را کليک کرده SQL Server کادر محاوره ای Table Designer Properties را با صفحه خصوصيات Constraints Check نشان داده شده باز می کنيم.

3- New را کليک کرده Ck-Oils , SQL Server را به عنوان نام محدوديت پيشنهاد می دهد. برای اين مثال اين نام را می پذيريم.

4- Len(Oil Name)>=4را به عنوان عبارت محدوديت وارد می کنيم.

راهنمايی: اگر شما يک Check Constraint جديد را ايجاد می کنيد و مراقب نيستيد که آيا داده های موجود متابعت می شوند، شما می توانيد بگويد به SQL Server که از ايجاد کردن داده به وسيله چک نکردنCheck Existing Data On Creation از محدوديت چشم پوشی کند.
5- Close را کليک کرده SQL Server کادر محاوره ای Designers Properties Table را می بندد.
6- دکمه Save را کليک کرده SQL Server کنترل می کند که همه سطرها در جدول باCheck Constraint مواجه می شوند و سپس محدوديت را ذخيره می کنيم.

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

تغيير دادن Check Constraint
Table Designer مکانيزمی برای تغيير متن از يک Check Constraint از همان کادر محاوره ای که شما برای ايجاد آن استفاده کرديد فراهم می کند.

aryaei2000
چهارشنبه 13 شهریور 1387, 16:32 عصر
تغيير متن محدوديت
1- اگر Table Designer برای جدول Oils هنوز از تمرين قبل باز نمی باشد به وسيله کليک راست کردن نام جدول در قاب Details آن را باز کرده وDesign Table را انتخاب می کنيم. Table Designer , SQL Sarver را باز می کند.

2- دکمه Constraints را کليک کرده SQL Sarver کادر محاوره ایTable Designer را با صفحه خصوصيات Check Constraint باز می کند.

3- اطمينان حاصل کنيد کهCk – Oilsدر Constraint Combo Box انتخاب شده نشان داده شده است.
4- متن محدوديت را برایLEN (Oil Name )>2 به عنوان عبارت محدوديت جديد تغيير می دهيم.

5- Close را کليک کردهSQL Server کادر محاوره ایTable Designer’s Properties را می بندد.
6- دکمه Save را کليک کرده SQL Server همه سطرها در جدول را که با Check Constraint جديد مواجه است را کنترل کرده و سپس محدوديت را ذخيره می سازد.

نگهداری Check Constraints
مانند ديگر خصوصيات جدول ديگر، Check Constraints در کادر محاوره ای Properties ازTable Design نگهداری می گردد.

تغيير نام يک Check Constraints
1- Table Designer برای جدول Oils به وسيله کليک راست کردن نام جدول در قاب Details باز کرده و Design Table را انتخاب می کنيم. Table Designer , SQL Server را باز می کنيم.

2- دکمه Constraints را کليک کرده SQL Server کادر محاوره ای Table Designers Properties را با صفحه خصوصيات Check Constraint نشان داده شده باز می کند.

3- Ck-Oils را در فيلد Constraint Name انتخاب کرده و آن را به Ck-Deleteme تغيير می دهيم.

4- Close را کليک کرده SQL Server کادر محاوره ای Properties را می بندد.
5- دکمه Save را کليک کردهSQL Server همه سطرها در جدول که باCheck Constraint مواجه شده اند را کنترل می کند و سپسConstraint ذخيره می گردد.

حذف يک Check Constraint
1- Table Designer برای جدول Oils را به وسيله کليک راست کردن نام جدول در قاب Details باز کرده و جدول Design را انتخاب می کنيم. Table Designer , SQL Server را باز می کند.

aryaei2000
چهارشنبه 13 شهریور 1387, 16:33 عصر
2- دکمه Constraints را کليک کرده SQL Server کادر محاوره ای Table Designers Properties را با صفحه خصوصياتCheck Constraint نشان داده شده باز می کنيم.

3- اطمينان حاصل کنيد که Ck-Deleteme در فيلد محدوديت انتخاب شده می باشد و سپس Delete را کليک می کنيم. SQL Server محدوديت را برمی دارد.

4- Close را کليک کرده SQL Server کادر محاوره ای Properties را می بندد.
5- دکمه Save را کليک می کنيم. SQL Server محدوديت را برمی دارد.
6- Table Designer را می بنديم.

aryaei2000
چهارشنبه 13 شهریور 1387, 16:33 عصر
ايجاد کردن ارتباطات
شناخت ارتباطات



بيشتر پايگاه داده در نظر گرفته مي شوند به صورت مدلهايي که در دنيای واقعي وجود دارد که به صورت Problem Space شناخته شده است. در سطح منطقی، شیءها در Problem Space موجوديتها و اجتماع بين آنها می باشد که با هم در ارتباطند. در سطح فيزيکی، SQL Server موجوديتها را به صورت جداول و ارتباط ها به صورت محدوديت کليدهاي خارجي نشان مي دهد که کليدهاي خارجي را تعريف مي کند.

مدل رابطه اي
بيشتر مردم معتقدند که پايگاههاي داده رابطه اي Relational ناميده مي شود زيرا ارتباطات بين جداول ايجاد مي گردد. در حقيقت، توصيف آن از اصلاح Relation مي آيد که Dr .E .F .codd (که او در اصل مدل رابطه اي را در اواخر 1960 گسترش داده) برگزيده شد براي تشريح شئی ها که در SQL Server به صورت جداول به کار برده مي شود.
به صورت منطقي سه نوع ارتباط وجود دارد: يک به يک که هر سطر از يک جدول به صفر يا يک سطر از جدول ديگر ربط مي شود. يک به چند که هر سطر از يک جدول به صفر، يک يا سطرهاي بيشتر در ديگر جداول مربوط مي شود و چند به چند که هر سطر در جدول اول به صفر، يک و چندين سطر از جدول دوم مربوط مي شود. هر سطر در دومين جدول مي تواند به صفر، يک يا سطرهاي بيشتر در جدول اول مربوط شود. ارتباطات يک به يک نسبتاً نادر مي باشد. آنها اغلب زماني که يک مجموعه از مشخصات فقط براي مقداري از نمونه هاي موجوديتها به کار مي رود استفاده مي گردند. براي مثال، فقط يک زير مجموعه کوچکي از کارمندان که در شرکت در تيم Softball بازي مي کنند. يک طراح پايگاه داده ممکن است همه ويژگيهاي تيم Softball را در يک جدول قرار دهد و سپس يک ارتباط يک به يک بين آن و جدول کارمندان ايجاد کند. از طرف ديگر ارتباطات يک به چند کاملاً رايج مي باشند. در پايگاه داده نمونه مان، يک ارتباط يک به چند بين جدول Plant Parts وOils ايجاد می گردد. هر سطر موجود در جدول Plant Parts می تواند به صفر، يک يا سطرهای بيشتر در جدول Oils مربوط شود. ارتباط چند به چند همچنين رايج مي باشند. براي مثال، يک ارتباط چند به چند بين جدول Properties و جدول oils ايجاد مي گردد هر Oil موجود مي تواند چندين Properties داشته باشد و هر Properties به چندين oils تخصيص داده مي شود. SQL Server مانند ديگر موتورهاي پايگاه داده رابطه اي به صورت مدلهاي يک به يک و يک به چند به طور مستقيم به يکديگر مربوط مي شوند. اما آن يک نوع ويژه از جدول را که به صورت Junction Table شناخته شده براي تجزيه کردن جداول چند به چند استفاده مي کند. يک Junction Table شامل کليدهاي اصلي از جداول در دو طرف ارتباط مي باشند. يک ارتباط يک به چند بين جدول Junction و هر جدول اصلي که در شکل 1-7 نشان داده شده ايجاد مي گردد.


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

در سطح جدول، يک ارتباط با موجود بودن شناسه واحد که معمولاً کليد اصلي مي باشد، از يک جدول از يک طرف (که جدول کليد اصلي ناميده مي شود) به جداولی از سوي ديگر (که جدول کليد خارجي ناميده مي شود) مدل سازي مي شود. شناسه به صورت کليدهاي خارجي شناخته مي شود.
راهنمايي: شناسه واحد که به صورت کليد خارجي استفاده مي شود معمولاً کليدهاي اصلي از کليد اصلي جدول مي باشد اما آن مي تواند ستون باشد يا مجموعه يا ستونهايی که به صورت واحد آشکار مي گردد. SQL Server مي تواند ارتباطاتي که شما در پايگاه داده ايجاد کرده ايد را اجرا کند. که اين Maintaining Referential in Tearing ناميده مي شود. به طور پيش فرض SQL Server هر تغييري بر روي کليدهاي اصلي از يک ستون از کليد اصلی جدول که به ستونهايي از کليد خارجي جدول مربوط شده را نخواهد پذيرفت. مورد جديد در SQL Server توانايي انتشاری کردن تغييرات براي کليد اصلي جدول مي باشد. اگر شما به SQL Server بگوييد براي حذف درختي ارتباط، حذف يک سطر در کليد اصلي جدول سبب خواهد شد که SQL Server همه سطرها مربوط به کليد خارجي جدول را حذف کند. به همين صورت، اگر شما به SQL Server بگوييد به روز رساني انتشاري را صورت دهد. تغيير کليد اصلي از کليد اصلي جدول سبب خواهد شد که ستونهاي کليد خارجي جدول به روز گردد.
مهم: تعدادي از طرحهاي پايگاه داده مي تواند کاملاً پيچيده باشد. با استفاده از حذف و به هنگام سازي انتشاري، نگهداري ساختار پيچيده داده مي تواند ساده شود. اما SQL Server نياز دارد که انتشارها چرخشی نباشند. برای مثال حذف يک سطر در جدول A می تواند سبب حذف يک سطر در جدول B شود که به اين صورت باعث حذف يک سطر در جدول C می گردد. ولی عکس اين قضيه صادق نيست.

ايجاد ارتباطات
در SQL Server ، ارتباطات از طريق زبانه Relationships در کادر محاوره اي Table Designers Properties ايجاد مي گردد به طور کلي ارتباط يک به يک و يک به چند دقيقاً مثل هم به وجود مي آيند. SQL Server انواع ارتباطات را بر اساس ستونهاي مشخص شده در کليدهاي خارجي جداول معين خواهد کرد. اگر يک ايندکس واحد در ستونهاي کليد خارجي وجود داشته باشد ارتباط يک به يک خواهد بود در غير اين صورت يک به چند خواهد بود.

ايجاد يک ارتباط
1- Table Designer را براي جدول Oilsبه وسيله کليک راست کردن نام جدول در قاب Detailsباز مي کنيم و جدول Design را انتخاب مي کنيم. SQL Server،Table Designer را باز مي کند.

2- دکمه Relation Ships را در نوار ابزار Table Designer کليک کرده SQL Serverکادر محاوره اي Table Designers Properties را با صفحه خصوصيات Relationships نشان داده شده باز مي کند.


3- New را کليک کرده SQL Server اولين جدول درليست جداول را براي ارتباط جديد درخواست مي کند.

4- Planttypes را به عنوان کليد اصلي جدول انتخاب مي کند.FK- Oils- Planttypes , SQL Server را به عنوان نام ارتباط پيشنهاد مي کند.

5- Planttypes ID را به عنوان فيلد کليد اصلي انتخاب مي کنيم.






6- Planttypes ID را به عنوان فيلد کليد خارجي انتخاب مي کنيم.

راهنمايي: اگر شما تنظيمات يا حذفيات انتشاري را براي ارتباط خواستار باشيد، آن را با انتخاب Check box ها در صفحه Property انجام مي دهيم.
7- Close را کليک کرده SQL Server کادر محاوره اي Properties را مي بندد.
8- دکمه Save را در نوار ابزار Table Designer کليک مي کنيم. SQL Server يک کادر محاوره اي را نشان مي دهد که از شما براي تأييد تغييرات که براي دو جدول از پايگاه داده تان ذخيره خواهد شد مي پرسد.

9- Yes را کليک کردهSQL Server ارتباط را ايجاد مي کند.
10- پنجره Table Designer را مي بنديم.

مديريت کردن ارتباطات
ارتباط بين جداول مي تواند به خوبي پايدار گردد اما مانند هر بخش ديگري از طرح پايگاه داده، آنها مي توانند در طي زمان تغيير يابند. Manager Enterpriseکنترل اين تغييرات را آسان مي سازد.

تغيير دادن ارتباطات
تغيير دادن يک ارتباط خيلي مرسوم نيست اما بعضي مواقع يک تغيير در ساختار يکی از جداول مورد نياز خواهد بود که شما می توانيد ستونهايی که در ارتباط درگير می باشند را به وسيله تغيير دادن ساده مشخصات در صفحه خصوصيات Relationships از کادر محاوره ه اي Table Propertiesتغيير دهيد.
تغيير دادن يک ارتباط
1- Table Designer را برای جدول Oils به وسيله کليک راست کردن نام جدول در قاب Detailsباز کرده Table Design را انتخاب می کنيم. Table Designer , SQL Serverرا باز مي کند.

2- دکمه Relationshipsدر نوار ابزارTable Designer را کليک مي کنيم. SQL Server کادر محاوره اي Table Designersرا با صحفه خصوصيات Relationships نشان داده شده باز مي کند.

3- اطمينان حاصل کنيد که FK-Oils-Planttypes در Combo Box انتخاب شده است.SQL Server مشخصاتي از ارتباطات را نشان مي دهد.
4- Plantpart ID را به عنوان فيلد کليد خارجي انتخاب مي کنيم.


5- Close را کليک کرده SQL Server کادر محاوره اي Properties را می بندد.
6- دکمه Save را در نوار ابزار Table Designer کليک می کنيم. SQL Server يک کادر محاوره ای را نشان مي دهد که از شما براي تأييد تغييراتي براي دو جدول که در پايگاه داده تان ذخيره خواهد شد سؤال مي کند.

7-Yes را کليک مي کنيم. SQL Serverارتباط را تغيير مي دهد.
8- پنجرهTable Designer را مي بنديم.

نگهداري ارتباطات
همان طوری که شما احتمالاً تا حال منتظر بوديد ارتباطات با استفاده از کادر محاوره اي Properties که شما براي ايجاد بر آنها استفاده کرده ايد نگهداري مي گردند.

تغيير نام يک ارتباط
1- Table Designer را براي جدول Oils به وسيله کليک راست کردن نام جدول در قاب Details باز مي کنيم. Design Tableرا انتخاب مي کنيم. SQL Server و Table Designer را باز می کند.




2- دکمه Relationships را کليک می کنيم. SQL Server کادر محاوره ای Table Designers Properties را با صفحه خصوصيات Relationships نشان داده شده باز می کند.

3- FK-Oils-Planttypes را در Combo Box ارتباطی انتخاب شده انتخاب می کنيم. SQL Server خصوصيات ارتباط را نشان می دهد.

4- متن را در فيلدRelation Ship Name انتخاب و Delete Me را تايپ می کنيم.





5- Close را کليک کرده SQL Server کادر محاوره ای Properties را می بندد.
6- دکمه Save را کليک کرده SQL Server يک کادر محاوره ای را نشان می دهد و از شما برای تأييد تغييرات برای دو جدول که در پايگاه داده تان ذخيره خواهد شد می پرسد.

7- Yes را کليک کرده SQL Server نام ارتباط را تغيير می دهد.
8- پنجره Table Designer را می بنديم.

حذف کردن يک ارتباط
1- Table Designer را برای جدول Oils با کليک راست کردن نام جدول در قاب Details باز می کنيم و Design Table را انتخاب می کنيم. SQL Server ، Table Designer را باز می کند.

2- دکمه Relation Ships را کليک می کنيم. SQL Server کادر محاوره ای Table Designers Properties را با صفحه خصوصيات Relationships نشان داده شده باز می کنيم.

3- Delete Me را در Combo Box ارتباطی انتخاب شده، انتخاب می کنيم. SQL Server خصوصيات ارتباطی را نشان می دهد.

4- Delete را کليک کرده SQL Server يک متنی که ازشما برای تأييد حذفيات سؤال می کند نشان می دهد.

5- Yes را کليک می کنيم.
6- Close را کليک کرده SQL Server کادر محاوره ای Properties را می بندد.
7- دکمه Save را کليک کرده SQL Server يک کادر محاوره ای را نشان می دهد که از شما برای تأييد تغييرات که برای دو جدول پايگاه داده تان ذخيره خواهد شد سؤال خواهد کرد.

8- Yes را کليک کرده SQL Server ارتباط را حذف می کند.
9- پنجره Table Designer را می بنديم.

منبع : http://sqlserver.persianblog.ir/ (http://sqlserver.persianblog.ir/1382/1/)