Schema پایگاه داده در SQL Server
در SQL Server مفهوم schema مجموعه ای منطقی از اشیاء پایگاه داده مانند جداول ، views ، stored procedures ، indexes ، triggers و توابع است. می توان آن را به عنوان یک ظرف در نظر گرفت که توسط یک کاربر پایگاه داده ایجاد شده است. کاربر پایگاه داده ای که یک schema ایجاد می کند، مالک schema است.
به عبارت دیگر، Schema ظرف یا Container ای است که کلیه اشیاء یک بانک اطلاعاتی را در برمی گیرد. هدف استفاده از Schema، قرار گرفتن اشیاء مختلف بانک اطلاعاتی درون آن است، در واقع به وسیله Schema می توانیم، اشیاء مختلف بانک اطلاعاتی را دسته بندی کنیم.
به نکات زیر را در رابطه با Schema توجه کنید:
1- یک schema می تواند تنها به یک پایگاه داده تعلق داشته باشد در حالی که یک پایگاه داده می تواند یک یا چند schema داشته باشد.
2- هیچ محدودیتی برای تعداد اشیاء در یک schema وجود ندارد.
3- SQL Server چند schema داخلی مانند dbo ، guest ، sys و غیره را در اختیار ما قرار می دهد.
4- schema پایگاه داده می تواند متعلق به پایگاه داده یا برنامه همراه با کاربر پایگاه داده باشد. به آنها صاحبان schema می گویند.
5- dbo در واقع schema پیش فرض یک پایگاه داده جدیدی است که تازه ایجاد شده است.
6- مالکیت schema می تواند از یک کاربر به کاربر دیگر در همان پایگاه داده منتقل شود.
7- یک کاربر پایگاه داده می تواند بدون حذف اشیاء پایگاه داده متعلق به کاربر حذف شود. اما اگر این schema دارای اشیاء پایگاه داده باشد، نمی توان آن را حذف کرد.
ایجاد schema با استفاده از T-SQL
یک schema را می توان با استفاده از T-SQL ایجاد کرد.
در سینتکس بالا، schema_name نام schema ای است که می خواهید ایجاد کنید. به صورت اختیاری، می توانید مالک schema را به عنوان AUTHORIZATION owner_name تعیین کنید.
آنچه که در ادامه می بینید یک schema جدید به نام hrdbo ایجاد می کند و کاربر پیش فرض dbo مالک schema خواهد بود.
آنچه که در زیر می بینید یک schema جدید به نام hrdbo با کاربر Steve به عنوان مالک schema ایجاد می کند.
آنچه که در بالا می بینید یک طرح hrdbo جدید ایجاد می کند. همانطور که در زیر نشان داده شده است می توانید این را در SSMS در پوشه Security -> Schemas مشاهده کنید.
پس از ایجاد یک schema، می توانید اشیایی را تحت نظارت این schema ایجاد کنید و به کاربران دیگر مجوز بدهید.
به عنوان مثال، شکل زیر یک جدول جدید تحت نظارت hrdbo schema ایجاد می کند.
موارد بالا یک جدول جدید به نام Consultant در hrdbo schema ایجاد می کند، همانطور که در زیر نشان داده شده است.
تغییر schema
از دستور ALTER SCHEMA برای انتقال اشیاء پایگاه داده از یک schema به یک schema دیگر در یک پایگاه داده استفاده کنید.
در سینتکس ALTER SCHEMA بالا:
1- schema_name نام schema ای در پایگاه داده فعلی است که قابلیت ایمن سازی (جدول، view ، stored procedure و غیره) به آن منتقل می شود.
2- entity_type می تواند Object ، Type یا XML Schema Collection باشد.
3- securable_name نام شی db (جدول، view، stored procedure و غیره) است که باید به اسکیمای schema_name مشخص شده منتقل شود.
شکل زیر جدول Employee را از dbo schema پیش فرض به schema hrdbo منتقل می کند.
آنچه که در زیر می بینید جدول hrdbo.Employee را نشان می دهد.
توجه : می توانید از دستور ALTER AUTHORIZATION برای تغییر مالک schema مانند شکل زیر استفاده کنید:
حذف یک schema
DROP SCHEMA یک schema را از دیتابیبس حذف می کند. یک schema که در حال حذف شدن است نباید حاوی هیچ شی پایگاه داده باشد. اگر schema حاوی اشیاء باشد، دستور DROP با شکست مواجه می شود.
عبارت زیر hrdbo schema را حذف می کند که هیچ شیئی در آن schema وجود ندارد.
ایجاد schema با استفاده از SSMS
یک schema می تواند در ابزار SSMS نیز ایجاد شود.
مرحله 1 : SSMS را باز کنید و به پایگاه داده متصل شوید.
مرحله 2 : در Object Explorer، پوشه Databases را باز کنید و نمونه پایگاه داده را که می خواهید در آن schema جدید ایجاد شود، باز کنید.
مرحله 3 : مطابق شکل زیر بر روی پوشه Security کلیک راست کرده و New -> Schema را انتخاب کنید.
با این کار کادر محاوره ای Schema New مانند زیر باز می شود. در تب General، مانند شکل زیر، نام schema و مالک schema جدید را وارد کنید.
Schema Owner می تواند نام کاربر پایگاه داده یا نقشی باشد که مالک schema خواهد بود. یا برای انتخاب کاربر/نقش (User/Role)، روی دکمه Search کلیک کنید.
در کادر محاوره ای Search Roles یا User ، روی دکمه Browse کلیک کنید و کاربری را که می خواهید به عنوان مالک schema باشد، انتخاب کنید. Ok را کلیک کنید.
مرحله 4 : روی صفحه Permissions کلیک کنید تا لیستی از همه موارد امن و مجوزهایی را که می توان به آن اعطا کرد، مطابق شکل زیر مشاهده کنید.
مرحله 5 : در تب Extended Properties، می توانید ویژگی های سفارشی شده (customized properties) را برای ذخیره اطلاعات اضافی اضافه کنید. هر extended property دارای یک نام و مقدار تعریف شده توسط کاربر است. همانطور که در زیر نشان داده شده است این برای افزودن نظرات برای یک شی پایگاه داده استفاده می شود.
Extended properties را می توان برای ذخیره اطلاعات version ، یا tooltips برای رابط های کاربر (interfaces)، اطلاعات lineage ، توضیحات ستون ها و بسیاری موارد دیگر مورد استفاده قرار داد.
مرحله 6 : برای ایجادschema و ذخیره آن روی OK کلیک کنید.
مرحله 7 : تب Database instance را ریفرش کنید. schema جدید مطابق شکل زیر در پوشه Security -> Schema ایجاد می شود.
بنابراین، می توانید schema های پایگاه داده را با استفاده از T-SQL و SSMS ایجاد، ویرایش و حذف کنید.