ساخت جدول در دیتابیس SQL Server
فولدر Table مهمترین فولدر داخل یک Database است. روی این فولدر راست کلیک کرده و New را میزنیم.
در قسمت Column Name ، نام ستون و در قسمت DataType باید نوع داده ای و فرمت آن ستون را وارد کنیم.
در جلسات قبل به این موضوع اشاره کردیم که باید یک ستون کد داشته باشیم که برای اتصال جدول Dimension و فکت از آن استفاده کنیم. در نتیجه اینجا ستون ID را میسازیم. هنگام ساختن ستون آیدی ، برای نامگذاری از فرمت (نام جدول + ID) استفاده کنید ، به عنوان مثال ProductID.
در نام ستون از کاراکتر فاصله نباید استفاده کنید.
در ستون DataType باید نوع و میزان بزرگی آن تایپ را در صورت عددی بودن ، انتخاب کنیم.
لیست کامل DataType ها و محدوده هر کدام را در سایت ماکروسافت میتوانید مشاهده کنید.
برای DataType های عددی باید میتوانید از اطلاعات جدول زیر استفاده کنید.
ستون بعدی که میسازیم ستون Name هست که برای نامگذاری آن هم از نام جدول + Name استفاده میکنیم.
تایپ Char(10) به معنای این است که ستون متنی ، ۱۰ کاراکتر ظرفیت دارد. حال اگر مقدار ستون از ۱۰ کاراکتر کمتر باشد ، چند فضای خالی و بی استفاده روی دستمان میماند.
برای مواجهه با این مشکل از تایپ Varchar(50) میتوان استفاده کرد. این تایپ به این صورت است که اگر تکست ما ۵ کاراکتر باشد ، ستون ما به همان میزان ۵ کاراکتر به آن فضا میدهد و در حالت ماکزیمم هم اجازه استفاده از ۵۰ کاراکتر دارد و فضای از دست رفته دیگر در این حالت نخواهید داشت.
Nvarchar همانند Varchar است ولی اجازه استفاده از Unicode ها مثل کاراکترهای زبان فارسی را هم به ما میدهد.
پس برای ستونهای متنی فارسی همیشه نوع را Nvarchar انتخاب کنید.
ستون بعدی ستون Price هست که برای این فیلد تایپ Money هم داریم که به برای مقادیر دلاری یا یورو کاربرد دارد. که ما برای این ستون از int استفاده میکنیم.
Decimal (5,2) به این معنی است که این ستون میتواند ۵ رقم باشد که ۲ رقم آن اعشار است.
در Sql Server تایپ True False یا Boolean نداریم و به جای آن تایپ bit را داریم که در آن ۰ همان False و ۱ همان True هست.
ویژگی Allow Nulls به این معناست که آیا آن ستون اجازه دارد که شامل مقادیر پوچ Null باشد یا خیر که باید تیک آن را برای ستون های ID برداریم.
یعنی هر رکوردی که در جدول ما ثبت میشود باید حتما ID را داشته باشد و اگر نداشت نباید ثبت شود.
هر ستونی که ایجاد میشود یک قسمت Column Properties دارد که در آن نام ، تایپ و همچنین Default Value را میتوان تعیین کرد.
Description قسمتی است که در آن میتوانید توضیحات لازم را در آن قرار دهید.
هر جدول باید ستونی به نام آیدی و یا کلید داشته باشد برای اتصال آن جدول به سایر جداول انبار داده.
میتوان در دیتابیس تعیین کرد که بیاید و به ازای هر رکورد ، خود دیتابیس یک عدد به صورت صعودی به آن اختصاص دهد.
ستون ID را انتخاب کرده و در قسمت Identity Specification در Column Properties ، میتوان مشخص کرد که این ستون از چه مقداری و چند چند تا شروع به افزایش کند.
در قسمت سمت راست یک جدول Properties داریم که در آن اطلاعات جدولی که این ستون ها را برایش ساختیم ، تنظیم میکنیم.
در نامگذاری Table از روش CamelCase برای نامگذاری استفاده کنید یعنی کاراکتر اول هر کلمه با حرف بزرگ نوشته شود.
در اینجا هم فیلد Description برای گذاشتن توضیحاتی در مورد کلیت Table وجود دارد.
در قسمت Identity Column باید ستون یکتای آن جدول را به آن معرفی کنیم. سایر فیلد ها اطلاعات خاصی ندارند و در اینجا Ctrl + S را زده و فولدر Tables را Refresh میکنیم تا جدول ی که در آن ساختیم ، ظاهر شود.
در یک جدول عادی معمولا از ۳ یا ۴ نوع DataType استفاده میشود و سایر DataType ها ، کاربرد های خاص دارند.
بهتر است (اجباری نیست) در هر جدولی یک ستون را به عنوان کلیداصلی Primary Key یا PK تعیین کنیم.
وقتی یک ستون را به عنوان Pk معرفی میکنیم ، یعنی این ستون شامل مقادیر تکراری نیست و از خطا هنگام لود دیتا ، جلوگیری میکند و نمیگذارد برای مثال یک رکورد با کد یکسان را دو بار در جدول ثبت کنیم.
برای اتصال یک جدول به سایر جداول باید از این ستون هایی که به عنوان Key معرفی میکنیم استفاده کنیم ،
این ستون در جدولی که حالت ۱ ارتباط را دارد ، Primary Key باشد و در جدولی که حالت N را دارد (در اتصال یک به چند) حالت Foreign Key داشته باشد.
استفاده از Property Identity ، زمانی مورد نیاز است که به صورت خودکار ستونی به عنوان کلید اصلی (پرایمری) نداریم.
توجه کنید که دیتا تایپ PK و FK باید با هم یکسان باشند.
حال اینجا یک جدول Fact Sales هم ایجاد میکنیم و قصد داریم که نشان دهیم چگونه Relation میان DimProduct و FactSales را در SSMS ایجاد کنیم.
کلید Add را زده و در قسمت Table and Columns ، جدولها و ستون هایی از آن جدول ها که قصد ایجاد ارتباط میان آن دو را داریم ، مشخص میکنیم.
در قسمت Insert and Update Specification ، دو فیلد Delete Rule و Update Rule را داریم.
فرض کنید از کدکالای ۶۰ در Dimension کالا ، ۵ تراکنش در فکت داریم. فرض کنید از Dimension ، ردیف کالای ۶۰ را حذف کنیم ، در این قسمت میتوانیم تصمیم بگیریم در صورت بروز این اتفاق در جدول Fact چه اتفاقی رخ دهد.
– برای مثال اگر روی حالت Cascade بگذاریم ، کد کالای ۶۰ از فکت هم حذف میشود.
– Set Null به جای کد کالای ۶۰ در فکت ، Blank ثبت میکند.
– در حالت No Action هم اجازه اعمال تغییر داده نمیشود و اجازه حذف در هر دو طرف از سلب میشود.
همین توضیحات برای حالت Update Rule نیز صدق میکند.
میتوان از ترکیب دو ستون نیز به عنوان کلید اصلی استفاده کرد. ولی این کار پیشنهاد نمیشود و بهتر است کلید اصلی همواره تک ستونی با تایپ Int باشد.