دیاگرام های پایگاه داده های SQL Server
تلاش برای تصویرسازی مدل پایگاه داده در بعضی موارد بسیار دشوار است. در مدلهای کوچک حدس اینکه کدام جدول مرجع جدول دیگری است و بهطورکلی ارتباط میان جداول پایگاه داده، ساده به نظر میرسد؛ اما زمانی که مدلهای دادهای ما بزرگتر میشوند، درک ین ارتباطها سختتر میشود. در این مقاله نحوهی استفاده از ابزار ساخت دیاگرامهای پایگاه دادهی SQL Server و نحوهی ترسیم این دیاگرامها را به شما آموزش خواهیم داد. در ادامه به شرح پیغامهایی که ممکن است هنگام شروع با آن برخورد کنید و همچنین کارهایی که با این ابزار میتوانید انجام دهید، میپردازیم. دیاگرامهای پایگاه دادهی SQL Serverیک ابزار قدرتمند است، اما پیش از ترسیم هر چیز، نیاز داریم که با برخی مفاهیم بیشتر آشنا شویم.
- شما فقط اجازه دسترسی به جداول دیاگرام پایگاه داده رادارید، همچنین ویرایشگر دیاگرام اجازه دسترسی به object های دیگر در SQL Serverرا ندارد.
- جداول پایگاه دادهها در دیاگرام از هم مستقل نیستند و هر تغییری که توسط این ابزار در جداول ایجاد شود، بر روی معماری جداول در پایگاه دادهها تأثیر میگذارد.
- اگر شما یک جدول را خارج از ویرایشگر دیاگرام تغییر دهید در این صورت این تغییرات بهطور خودکار در دیاگرام ذخیرهشده بروز رسانی میشود.
- هرگونه تغییراتی که ممکن است بر روی جداول در طراحی جداول اعمال شود، میتواند توسط نمودارهای پایگاه دادهها نیز اجراشده و در ساختار جدول منعکس شود. اندیس گذاری جداول و ایجاد ارتباط میان آنها می تواند مواردی از این قبیل باشد.
- کاربرانی که مالک پایگاه داده میباشند و کسانی که عضو پایگاه دادهی db_owner باشند، اجازهی دسترسی به همه نمودارهای پایگاه دادهها رادارند. سایر کاربران تنها اجازه دسترسی به دیاگرامهای خود رادارند و همچنین میتوانند دیاگرامهای جدیدی را با محدودیتهای مشخصی، برحسب سطح دسترسی کاربران به پایگاه داده، ایجاد کنند.
- هیچگونه امکان undo,redo در ویرایشگر نمودار SSMS وجود ندارد.
- در حال حاضر هیچ متدی برای انتقال نمودارهای یک پایگاه داده SQL Server از یک instance به دیگری و یا از یک پایگاه داده به پایگاه دادهی دیگر وجود ندارد. درحالیکه شما میتوانید این دیاگرامها را کپی کنید و با یک فرمت دیگری بهعنوان بک آپ ذخیره کنید.
- برای پرینت کردن این دیاگرامها کافی است در SSMS از منوی فایل گزینه print را انتخاب کنید. همچنین میتوانید با گزینههای arrange table, page break استفاده نمایید که این کار به تنظیم بهتر دیاگرامها در هر صفحه برای print کمک میکند.
- شما میتوانید مالکیت دیاگرامهای پایگاه دادهها را تغییر دهید. کاربرد این مسئله زمانی مشخص میشود که نیاز دارید عملیاتی روی یک دیاگرام انجام دهید که مالک آن به هر علتی حذفشده است.
- شما میتوانید مقادیر null و یا هر نوع دادهای ستونها را در دیاگرامهای پایگاه داده تغییر دهید.
- زمانی که یک پایگاه داده را بروز رسانی کنیم، دیاگرام مربوط به آن نیز بروز رسانی میشود.
- تمام امکاناتی که با کلیک راست به آن دسترسی دارید، از منوی فایل در SSMS قابلاستفاده است.
حال ممکن است این سوال ایجاد شود که دیاگرامهای پایگاه داده در SSMS در کجا قرار میگیرند؟ دیاگرامهای پایگاه دادهی SQL Server در اولین پوشه زیر هر پایگاه دادهای در SSMS وجود دارند. در شکل زیر میبینید:
پیغام تائید در دیاگرامهای پایگاه داده در SSMS
زمانی که برای اولین بار پوشهی دیاگرام پایگاه داده را انتخاب میکنید، این پیغام را مشاهده میکنید:

اینیک پیغام خطا نیست، بلکه اجازه دسترسی برای ایجاد procedure های سیستمی موردنیاز بهمنظور استفاده از دیاگرامهای پایگاه دادهای میباشد. اگر شما گزینه No را انتخاب کنید، هیچ procedure ساخته نمیشود و درنتیجهی آن شما اجازه استفاده از دیاگرامهای پایگاه دادهی SQL Server را نخواهید داشت. درصورتیکه گزینهی yes را انتخاب کنید،procedure های سیستمی زیر ایجادشده و امکان استفاده از دیاگرام فراهم خواهد شد.
- sp_alterdiagram
- sp_dropdiagram
- sp_creatediagram
- sp_renamediagram
- sp_helpdiagramdefinition
- sp_helpdigarms
- sp_upgradediagram
زمانی که شروع به کار با یک پایگاه دادهی attach شده یا بازیابی شده میکنیم، این پیغام را مشاهده میکنیم:
اگر شما از یک instance دیگری از sql server یک پایگاه داده را attach کنید، هنگام استفاده از دیاگرامهای پایگاه داده با این پیغام مواجه میشوید.

درواقع این یک پیام اطلاعاتی است که شمارا از کار با دیاگرامهای پایگاه دادهها بازمیدارد. این پیغام نبود مالک معتبر برای پایگاه داده را بیان میکند. دلیل به وجود آمدن چنین خطایی این است که مالک پایگاه داده در instance قبلی در این instance وجود ندارد. برای رفع چنین مشکلی کافی است یک مالک پایگاه داده معتبر که از SSMS,T-SQL استفاده میکند را اضافه کنیم. همچنین سطح سازگاری پایگاه داده با instance مربوط به sql server بررسی میشود.
پیغام هشدار زمانی که مالک پایگاه داده نباشیم و از دیاگرام پایگاه داده استفاده کنیم:
اگر شما بهعنوان مالک پایگاه داده لاگین نشوید، هنگامیکه پایگاه دادهی جدیدی ایجاد کنید با چنین پیغامی مواجه خواهید شد. این اخطار مربوط به object ها میباشد که اجازه دسترسی به آنها را نداریم. در حین کار با دیاگرام پایگاه داده فقط اجازه کار با جداولی راداریم که حق دسترسی به آن به ما دادهشده است. اگر حق دسترسی DDL محدودی داشته باشیم، تغییرات مربوط به اعمال DDL ذخیره نخواهند شد. بعد از چنین هشداری مادامیکه ما مالک پایگاه دادهها و یا عضوی از db_owner نباشید، ممکن است در حین کار با دیاگرامهای پایگاه دادهها دچار مشکل شوید.

مثالهایی از استفاده از دیاگرامهای پایگاه دادهها
حال زمان استفاده از دیاگرام ای پایگاه داده SQL server است. برخی امکانات مورداستفاده در SSMS دیاگرام پایگاه دادهها ساده، بدیهی و قابلدسترس با یک کلیک هستند. بااینحال منطقی است اگر بخواهیم با انجام چند کار عملی قدرت دیاگرامهای پایگاه دادههای SSMS را نشان دهیم. برای این منظور از پایگاه دادهی TSQL2012 استفاده میکنیم.
ایجاد دیاگرام پایگاه دادهی جدید SQL server در SSMS:
برای ایجاد چنین پایگاه دادهای:
- به فولدر database diagram بروید.
- بر روی آن راست کلیک کنید.
- یک دیاگرام جدید ایجاد کنید.
پنجرهی جدیدی که حاوی تمام جداول در یک قاب بهمنظور ایجاد دیاگرام جدید، به نمایش درآید. یک با چند جدول برای ساخت چنین دیاگرامی با کلیک بر روی دکمهی Add انتخاب خواهند شد.
با فشردن این دکمه جداول انتخابی به دیاگرام اضافه خواهند شد. بعد از انتخاب جداول و اضافه کردن آنها به دیاگرام گزینهی close را انتخاب کنید تا پنجره بسته شود.

اضافه کردن جدول موجود به دیاگرام پایگاه داده SQL server در SSMS:
امکان اضافه کردن جداول موجود و همچنین امکان ایجاد جدول در دیاگرام پایگاه دادهی SQL server راداریم. برای مثال ما
جدول (Employees(HRرا از این طریق به دیاگرام اضافه میکنیم. فقط کافی است بر روی هر مکانی در محیط
دیاگرامهای پایگاه دادهها در SSMS راست کلیک کرده و گزینهی add table را انتخاب نمایید. پنجرهای حاوی فهرستی از
تمام جداول کاربر نمایش داده میشود که امکان انتخاب هر تعدادی دلخواهی از این جداول را خواهیم داشت. با بستن این
پنجره جداول انتخابی را در دیاگرام پایگاه دادهها خواهید دید. برای مثال در اینجا ما جدول (Employees(HR را اضافه
میکنیم.


ایجاد کردن یک جدول جدید و اضافه کردن آن به دیاگرام پایگاه داده در SSMS:
یک ویژگی قدرتمند دیاگرام پایگاه دادهی SQL Server، امکان ایجاد جدول جدید در بخش دیاگرام است. شما میتوانید یک
جدول در ویرایشگر دیاگرام ایجاد کرده و با آن کارکنید، بهمحض اینکه این جدول را ذخیره نمایید، در پایگاه داده به نمایش
درمیآید.
ما میخواهیم یک جدول جدید بانام lib_group ایجاد نماییم توجه کنیم که این جدول در پایگاه دادهی مربوطه نیز به
وجود میآید.


- در هر فضایی از ویرایشگر دیاگرام راست کلیک نمایید و گزینه NewTable را انتخاب نمایید.
- بک پنجره برای نامگذاری جدول جدید نمایش داده میشود.
- در ویرایشگر دیاگرام جدول جدید ایجادشده و به ما این امکان را میدهد که ستونها را به آن اضافه نماییم.
مادامیکه این جدول در ویرایشگر پایگاه داده ذخیره نشود، در بیرون از فضای ویرایشگر دیاگرام کاربردی ندارد.
ایجاد کلید اصلی (primary key) در دیاگرام پایگاه دادهی SQL server:
این ویرایشگر دیاگرام در SSMS امکان ایجاد کلید برای جداول و مدیریت آنها را فراهم میکند. میخواهیم برای جدول lib_groups کلید اصلی را اضافه کنیم. روی ستون موردنظر راست کلیک نمایید و گزینهی set as primary key را انتخاب نمایید. در اینجا group_ID بهعنوان کلید اصلی در نظر گرفته میشود.

ایجاد محدودیت کلید یکتا در ویرایشگر دیاگرام در SSMS:
در طی تکمیل فرآیند آموزش دیاگرامهای پایگاه دادهها، میخواهیم یک کلید یکتای محدودیت بر روی ستون GroupName در جدول lib_groups ایجاد کنیم. برای این منظور بر روی ستون کلیک راست نمایید و گزینهی “indexs/keys” را انتخاب نمایید. یک پنجره حاوی پارامترهای مربوط به این کلید مشاهده میشود که شما میتوانید از میان آنها انتخاب کنید. اکنون جدول lib_groups حاوی کلید اصلی و کلید یکتا میباشد.

ایجاد ارتباط میان جداول در دیاگرام پایگاه داده در SSMS:
همانند بخش طراحی جداول، شما میتوانید میان انواع جداول در این بخش ارتباط برقرار کنید. روی جدولی که قرار است حاوی کلید خارجی باشد کلیک نمایید. برای اطمینان از مقادیر معتبر و یکتا برای GroupName در جدول Department باید میان کلید اصلی و کلید خارجی دو جدول Department, lib_groups ارتباط ایجاد نماییم. بنابراین بر روی جدول Department کلیک نمایید و “Relationships…” را انتخاب نمایید. پنجرهی مربوط به این ارتباطها برای کنترل و تنظیم این روابط، همانند طراحی جدول در SSMS است.
حال ممکن است این سؤال پیش آید که آیا تغییرات script هم در دسترس است؟ یکی از بهترین کارهایی که هر DBA بهتر است انجام دهد، ذخیره اسکریپتهای مورداستفاده در DDL پایگاه داده است.SSMS همچنین امکان ایجاد اسکریپت بر پایهی گامها در طول GUI فراهم میکند. برای اطلاعات بیشتر میتوانید به لینک زیر مراجعه نمایید:
همچنین شما میتوانید اسکریپت مربوط به تغییرات دیاگرامهای پایگاه داده را ایجاد نمایید. بر روی جدولی که به این اسکریپت تغییر نیازمند است، کلیک راست نمایید. آخرین گزینه در این منو generate change script است. در صورتی که تغییری در جدول به وجود آورید، این امکان فعال میشود. با کلیک بر روی این گزینه میتوانید این اسکریپت را ذخیره نمایید.

دیدگاه دقیقتری از جداول:
در یک فرمت مشخص دیاگرام پایگاه داده اطلاعاتی فراتر از اسامی ستونهای جدول به ما نمیدهد. ما نمیتوانیم نوع داده و مقادیر null از این ستونها را ببینیم. برای استفاده اضافی از امکانات دیاگرام پایگاه داده نیاز به اطلاعات دقیقتری پیرامون ستونهای جداول هستیم. برای نمایش جزییات بیشتر، جداول انتخابی در دیاگرام پایگاه داده، گزینهی table view standard را از منوی موجود در کلیک راست انتخاب نمایید. اکنون اطلاعات بیشتری از جزییات ستونهای جداول را مشاهده میکنید. به کمک این منو همچنین میتوانید نمایش جدول را سفارشی کنید.

حذف یک جدول از ویرایشگر پایگاه دادهها از SSMS و یا از پایگاه دادهها:
شما میتوانید هر تعدادی از جداول انتخابی در دیاگرام را با دکمهی delete حذف کنید. میتوان گفت با حذف جدول از دیاگرام تقریباً آن را از پایگاه داده نیز حذف میکنید. کافی است بر روی جدول کلیک راست کنید و “Delete from Database را انتخاب نمایید. اگر این گزینه را انتخاب نمایید، یک پیغام اطلاعاتی حاوی اطلاعات پیرامون عمل حذف مشاهده میکنید.

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

قالببندی کمی در ویرایشگر دیاگرام پایگاه داده SSMS:
هنگامیکه چندین جدول به دیاگرام اضافه میشوند، نمایش آنها باید تنظیم شود. برای تغییر تنظیمات مربوط نمایش دیاگرام میتوانید بر روی ویرایشگر دیاگرام پایگاه داده راست کلیک نمایید و یا از منوی دیاگرام پایگاه داده در SSMS همانند شکل زیر عمل کنید.

- اضافه کردن متن به دیاگرام
برای اینکه دیاگرامها خواناتر شوند شما میتوانید متن را اضافه نمایید. برای این منظور بر روی صفحه راست کلیک نمایید، از منوی موجود ”Choose Text Annotation” را انتخاب نمایید. یک textbox به نمایش درمیآید، برای فرمت بندی آن متن، در داخل textbox کلیک راست کنید و فرمت موردنظر را بیابید.



- انتخاب تمام object ها در ویرایشگر دیاگرام
زمانی که راست کلیک نمایید و منو به نمایش درآید، شما امکان انتخاب تمامی جداول و متون موجود در این بخش رادارید. با ctrl+A و یا drag کردن میتوانید همین کار را انجام دهید.

۳٫نمایش و پنهان کردن ارتباط میان برچسبها برای دیاگرامهای پایگاه دادهها در SSMS:
ارتباطات در میان جداول توسط میلههایی مشخص میشود. حال اگر فقط به نام روابط میان جداول در قالب یک متن نیاز داشته باشیم، کافی است “Show Relationship Labels” را انتخاب کنید تا نام تمامی روابط میان جداول نمایش داده شود.

- مدیریت جداول در ویرایشگر دیاگرام:
بر روی گزینهی “ArrangeTables” کلیک نموده و تمام جداول در جای مناسب خود قرار خواهند گرفت.



- بزرگنمایی
میتوانید با راست کلیک بر روی گزینهی zoom in/out میتوانید هر قسمت از دیاگرام را تحلیل کنید.

- پیگیری پرش صفحات
این دیاگرامها در پایگاه دادهی SQL Server میتوانند چندین صفحه تولید کنند. بهتر است که مرز این صفحات در پرش صفحه پیگیری شود. همچنین میتوانید با کلیک راست بر روی هر قسمت از صفحه ویرایشگر دیاگرام، نمایش پرشهای صفحه را فعال /غیرفعال نمایید.

- بازبینی پرشهای صفحه
با افزودن جداول به دیاگرام، این ویرایشگر صفحات زیادی را پوشش میدهد. قبل print چنین دیاگرامی با محاسبهی دوبارهی این پرشهای صفحه میتوانید به یک حالت بهینه برای چاپ آن برسید. از این گزینه برای تنظیم این دیاگرام برای چاپ کمک گرفت.

- کپی کردن دیاگرام در کلیپ بورد
برای سفارشی کردن بیشتر، ویرایش و یا بک آپ گیری ممکن است بخواهیم که دیاگرام را با فرمتهای فایل مختلف ذخیره نماییم. بنابراین میتوانید از امکان کپی و paste در منوی ویرایشگر استفاده نمایید. با این امکان میتوانید هر تعداد دلخواهی از جداول را از یک دیاگرام در دیگری کپی نمایید. برای ای منظور میتوانید با استفاده از ctrl+c دیاگرام مربوطه را کپی نمایید و در هر مکان دلخواهی جایگذاری نمایید.
سلام سایت خوب دارید . به سایت ما سر بزنید. بک لینک رایگان میدیم https://site.ir24.org/
سلام من دیاگرامم رو درست کردم میخام تو یه پوشه جدا ذخیره کنم روشی هست که بتونم انجامش بدم؟
سلام، امکانش از طریق نرم افزارهای جانبی همچون Redgate وجود دارد
ممنون خیلی خوب بود
سلام. خسته نباشید. میشه یه سوال بپرسم؟ یه کوئری خیلی مسخره و بدون کاربرد داریم مثل این:
select * from Table where age>10 group by country having age>20;
ابتدا سطرهایی که سن بیشتر از ۱۰ دارن رو انتخاب میکنه و سپس بر اساس کشور دستهبندی میشن. الان گروههایی داریم که افراد همکشور و بالای ۱۰ سال داخلش هستن. آیا در نهایت شرط having روی تک تک سطرهای هر گروه اعمال میشه و گروههایی که حتی یه سطر زیر ۲۰ سال دارن حذف میشن و به خروجی نمیرن؟! من نمیفهمم having اینجا چیکار میکنه.
ممنون
سلام و روز بخیر
بطور کلی دستور Having کارش فیلتر کردن نتیجه Group by است.
این کد که شما نوشتی اصلا به گروه بندی ربطی نداره
چون Select * هیچ تابع تجمعی توش نیست. بنابر این having با توجه به اینکه رو نتیجه دسته بندی عمل میکنه، دقیقا مثلwhere عمل میکنه
توضیحاتتون خوب بود ولی جاهایی که من ایراد دارم نبود
در وارد کردن اطلاعات جدول ستونی گکه کلید اصلی است null را به شکل خاکستری و غیر فعال است و نمیشه هیچی وارد حالا بقیه خانه ها رو که پر میکم بعد execute میزنم از خودش یه شماره هایی میده من روی پروژه کلاسی کار میکنم خیلی ممنون زود جوابم رو بدین
سلام خسته نباشید.ببخشید الان شما تما رابطه هایی که زدید تمامی یک به چند است هیچ کدام رابطه چند به چند نیست چون یه سر رابطه کلیده و یک سر دیکه علامت بی نهایت که این نشان دهنده رابطه یک به چند می باشد.میتونید کمکم کنید که چطوری رابطه چند به چند بزنم که دو سر رابطه علامت بی نهایت باشه