راهنمای جامع ایجاد و مدیریت انواع داده مستعار در SQL Server
انواع داده مستعار (Alias Data Types)، که گاهی اوقات انواع داده تعریف شده توسط کاربر (User-Defined Data Types یا UDDTs) نیز نامیده میشوند، به شما امکان میدهند تا بر اساس انواع داده موجود در SQL Server، انواع داده سفارشی خود را تعریف کنید. این قابلیت به خصوص برای اعمال قوانین کسب و کار، حفظ یکپارچگی دادهها و افزایش خوانایی و قابلیت نگهداری کد مفید است.
مفهوم انواع داده مستعار در SQL Server
انواع داده مستعار به شما اجازه میدهند که یک نوع داده پایه SQL Server مانند `INT`، `VARCHAR` یا `DECIMAL` را انتخاب کرده و به آن یک نام جدید و خاص بدهید. این امر به ویژه در سناریوهایی که نیاز به اطمینان از سازگاری نوع داده برای ستونهای مشابه در جداول مختلف یا متغیرها در کدهای متعدد دارید، اهمیت پیدا میکند. به عنوان مثال، اگر چندین جدول دارید که نیاز به نگهداری شناسه کارمند (Employee ID) دارند، میتوانید یک نوع داده مستعار به نام `EmployeeIDType` بر اساس `INT` ایجاد کنید و از آن در تمام ستونهای شناسه کارمند استفاده نمایید.
ایجاد نوع داده مستعار با CREATE TYPE
از SQL Server 2005 به بعد، روش توصیه شده برای ایجاد انواع داده مستعار استفاده از دستور `CREATE TYPE` است. این روش جایگزین `sp_addtype` شده که اکنون منسوخ شده است. `CREATE TYPE` امکان کنترل بیشتری بر روی نوع داده پایه، طول، دقت، مقیاس و قابلیت Nullability (پوچ بودن) را فراهم میکند و همچنین انواع داده ایجاد شده به schema (شمای پایگاه داده) مرتبط میشوند.
این دستور برای ایجاد نوع داده مستعار جدید در SQL Server استفاده میشود:
CREATE TYPE schema_name.alias_data_type_name
FROM base_data_type [ ( length | precision , scale ) ]
[ NULL | NOT NULL ] ;
در این ساختار:
* `schema_name`: نام شمایی است که نوع داده مستعار در آن ایجاد میشود (معمولاً `dbo` برای شمای پیشفرض).
* `alias_data_type_name`: نامی است که برای نوع داده مستعار خود انتخاب میکنید.
* `base_data_type`: نوع داده پایه SQL Server است که این نوع داده مستعار بر اساس آن ساخته میشود (مثلاً `INT`, `NVARCHAR`, `DECIMAL`).
* `length | precision , scale`: این پارامترها برای انواع دادهای مانند `VARCHAR`, `NVARCHAR`, `DECIMAL`, `NUMERIC` ضروری هستند و طول، دقت یا مقیاس نوع داده پایه را مشخص میکنند.
* `NULL | NOT NULL`: این بخش Nullability (قابلیت پوچ بودن) پیشفرض نوع داده مستعار را تعیین میکند.
مثال کاربردی ایجاد نوع داده مستعار
در ادامه، نحوه ایجاد دو نوع داده مستعار را مشاهده میکنید: یکی برای شناسههای کارمند و دیگری برای آدرسهای ایمیل. این کار به شما کمک میکند تا این الگوها را در سراسر پایگاه داده خود استاندارد کنید.
CREATE TYPE dbo.EmployeeIDType
FROM INT NOT NULL;
GO
CREATE TYPE dbo.EmailAddress
FROM NVARCHAR(255) NULL;
GO
در این مثال، `EmployeeIDType` یک نوع داده بر اساس `INT` است که نمیتواند Null باشد، و `EmailAddress` یک نوع داده بر اساس `NVARCHAR(255)` است که میتواند Null باشد. استفاده از `GO` برای ارسال دستورات به صورت دستهای به SQL Server ضروری است.
کاربرد انواع داده مستعار
پس از ایجاد انواع داده مستعار، میتوانید آنها را درست مانند انواع داده داخلی SQL Server برای اهداف مختلفی استفاده کنید.
اعلان متغیرها با انواع داده مستعار
میتوانید متغیرها را با استفاده از نوع داده مستعار تازه تعریف شده خود اعلان کنید:
DECLARE @empID EmployeeIDType;
SET @empID = 1001;
PRINT @empID;
GO
DECLARE @email EmailAddress;
SET @email = 'test@example.com';
PRINT @email;
GO
این کار به حفظ ثبات در تعریف متغیرها در رویهها و توابع ذخیره شده کمک میکند.
ایجاد ستون در جدول با انواع داده مستعار
مهمترین کاربرد انواع داده مستعار در تعریف ستونهای جدول است. با این کار، هر ستونی که از نوع داده مستعار شما استفاده کند، ویژگیهای (مانند طول و Nullability) تعریف شده در نوع مستعار را به ارث میبرد و تغییرات آینده در تعریف نوع مستعار، در تمام ستونهای استفادهکننده از آن منعکس خواهد شد.
CREATE TABLE Employees (
EmployeeID EmployeeIDType,
FirstName NVARCHAR(50),
LastName NVARCHAR(50),
Email EmailAddress
);
GO
در این ساختار جدول، ستونهای `EmployeeID` و `Email` از انواع داده مستعار تعریف شده ما استفاده میکنند. این رویکرد به استانداردسازی طرحواره پایگاه داده و بهبود نگهداری کمک میکند.
مقایسه CREATE TYPE با sp_addtype
قبل از SQL Server 2005، روال ذخیره شده سیستم `sp_addtype` برای ایجاد انواع داده تعریف شده توسط کاربر استفاده میشد. با این حال، `sp_addtype` منسوخ شده است و استفاده از `CREATE TYPE` توصیه میشود. دلیل اصلی این تغییر این است که `CREATE TYPE` به شما امکان میدهد تا یک نوع داده مستعار را به یک Schema (مثلاً `dbo`) مرتبط کنید که کنترل و سازماندهی بهتری را فراهم میکند.
نحوه استفاده از `sp_addtype` به این صورت بود:
EXEC sp_addtype 'PhoneNumber', 'VARCHAR(20)', 'NOT NULL';
این دستور یک نوع داده `PhoneNumber` را ایجاد میکرد، اما بدون اینکه به Schema خاصی وابسته باشد. این عدم وابستگی به Schema در محیطهای بزرگتر و پیچیدهتر، مدیریت را دشوارتر میکرد.
حذف نوع داده مستعار
برای حذف یک نوع داده مستعار، از دستور `DROP TYPE` استفاده میکنید. با این حال، نمیتوانید یک نوع داده مستعار را حذف کنید اگر ستونهای جدول یا متغیرهای موجود در توابع/رویههای ذخیره شدهای به آن وابسته باشند. ابتدا باید تمام وابستگیها حذف شوند.
DROP TYPE dbo.EmployeeIDType;
GO
اگر نوع داده `dbo.EmployeeIDType` در هر جدولی استفاده شده باشد، این دستور با خطا مواجه میشود تا زمانی که تمام ستونهای وابسته به آن نوع تغییر داده شوند یا جداول حاوی آنها حذف شوند.
بررسی انواع داده مستعار موجود
برای مشاهده انواع داده مستعار تعریف شده در پایگاه داده خود، میتوانید از کاتالوگ `sys.types` استفاده کنید. این نمای سیستم شامل اطلاعاتی در مورد تمام انواع داده در پایگاه داده، از جمله انواع داده داخلی و انواع داده تعریف شده توسط کاربر است.
SELECT *
FROM sys.types
WHERE is_user_defined = 1;
GO
این کوئری تمام انواع دادهای را که توسط کاربر تعریف شدهاند (یعنی انواع داده مستعار شما) را فیلتر و نمایش میدهد. ستون `name` نام نوع داده مستعار و `system_type_id` و `user_type_id` و سایر ستونها جزئیات بیشتری را ارائه میدهند.