فصل 4 از 24 درس 1 از 1

Data Typeها در SQL Server

Data Typeها در SQL Server

بخشی از آموزش جامع SQL Server

محتوای درس Data Typeها در SQL Server

T-SQL | Numeric، String، Date/Time و Binary Types

Data Type بخشی از Contract داده است و روی صحت، Storage، Index، Conversion و Performance اثر مستقیم دارد. انتخاب Type باید از معنای Domain آغاز شود.

متن این فصل با رویکرد مرجع فنی و قابل استفاده در پروژه واقعی تنظیم شده است؛ مثال‌ها در امتداد مدل StoreDb نوشته شده‌اند و اصطلاحات اصلی SQL Server و T-SQL به‌صورت یکدست به‌کار می‌روند.

1. مفاهیم و قراردادهای اصلی

Data Type بخشی از Contract داده است و روی صحت، Storage، Index، Conversion و Performance اثر مستقیم دارد. انتخاب Type باید از معنای Domain آغاز شود.

در طراحی پایگاه داده، Syntax تنها بخشی از مسئله است. نوع داده، Constraint، الگوی دسترسی، Transaction و هزینه اجرای Query باید هم‌زمان با نیاز Domain در نظر گرفته شوند.

مفهومکارکرد
int/bigintاعداد صحیح
decimalاعداد دقیق مالی
nvarcharمتن Unicode
datetime2تاریخ و زمان دقیق
bitمقدار دوحالتی
uniqueidentifierGUID

2. ساختار و Syntax پایه

برای قیمت از decimal و برای متن فارسی از nvarchar استفاده می‌شود. datetime2 نسبت به datetime قدیمی‌تر دامنه و Precision بهتری دارد. طول String باید بر اساس نیاز واقعی محدود شود.

DECLARE @Price decimal(18,2) = 1250000.75;
DECLARE @Title nvarchar(100) = N'محصول نمونه';
DECLARE @CreatedAt datetime2(3) = SYSDATETIME();
DECLARE @IsActive bit = 1;

SELECT @Price, @Title, @CreatedAt, @IsActive;

3. سناریوی StoreDb

در Products، Sku طول محدود، Price از decimal(18,2)، Stock از int و RowVersion از rowversion انتخاب می‌شوند. هر انتخاب باید با عملیات آینده و Query Pattern سازگار باشد.

نمونه‌های این فصل بر مدل فروشگاهی StoreDb بنا شده‌اند تا ارتباط مفاهیم میان فصل‌ها حفظ شود و Queryها در یک Context یکپارچه قابل بررسی باشند.

CREATE TABLE dbo.TypeSample
(
    Id bigint IDENTITY(1,1) NOT NULL,
    Sku nvarchar(50) NOT NULL,
    Price decimal(18,2) NOT NULL,
    CreatedAt datetime2(3) NOT NULL,
    ExternalId uniqueidentifier NOT NULL
);

4. اصول طراحی و Performance

طراحی پایدار باید هم صحت داده و هم هزینه اجرای عملیات را پوشش دهد. انتخاب ساده‌تر زمانی ترجیح دارد که Contract داده را روشن‌تر و رفتار Optimizer را قابل پیش‌بینی‌تر نگه دارد.

  • برای Money حساس از decimal با Precision/Scale صریح استفاده شود.
  • Unicode با nchar/nvarchar و Literal دارای N مدیریت شود.
  • MAX فقط برای داده‌ای استفاده شود که واقعاً طول بزرگ لازم دارد.
  • Type Parameter با Type Column هماهنگ بماند.

5. خطاهای رایج و نکات ایمنی

دستورهای SQL می‌توانند مستقیماً داده و ساختار را تغییر دهند؛ بنابراین بازبینی Context، تعداد Rowهای هدف و اثر Transaction قبل از اجرای تغییرات اهمیت عملی دارد.

  • ذخیره تاریخ در nvarchar.
  • استفاده از float برای مبلغ دقیق.
  • انتخاب nvarchar(max) برای همه ستون‌های متنی.
  • Conversion ضمنی در شرط‌های Index شده.

6. چک‌لیست نهایی فصل

  • Type هر Column با Domain هماهنگ است.
  • Precision و Scale مالی صریح‌اند.
  • متن فارسی Unicode است.
  • Date/Time و Time Zone بر اساس سیاست سیستم طراحی شده‌اند.

7. جمع‌بندی

خروجی این فصل باید به تصمیمی قابل اتکا در طراحی یا Query منجر شود؛ صحت داده، قابلیت نگهداری و رفتار Performance سه معیار ثابت برای ارزیابی نمونه‌ها هستند.