فصل ششم :
ساخت جدول (Table)
ساخت یک جدول با استفاده از ssms
درخت آبجک های دیتابیس مورد نظر را باز میکنیم. بروی نود tables کلیک راست میکنیم و از منو باز شده new و table
را کلیک میکنیم. فیلد های تیبل مورد نظر ما براحتی در این صفحه قابل تعریف هستند.
-
ستون اول نام فیلد با رعایت قوانین نامگذاری (Column Name)
-
ستون دوم نوع داده فیلد
(Data Type)
-
ستون سوم
(Allow Nulls)
در ستو ن سوم مشخص میکنیم که آیا این فیلد می تواند مقدار null را در خود ذخیره کند یا خیر
Allow nulls ایا فیلد اجازه ذخیره null را میدهد یا خیر ؟
نکته بسیار مهم : در اختصاص نو ع داده سخاوتنمد نباشید. با در نظر گرفتن انواع داده بزرگ حجم پایگاه داده بزرگ شده فضای اشغالی در هارددیسک بیشتر میشود. رم بیشتری از کامپیوتر شما در هنگام اجرای کوئری ها مصرف میگردد و در نهایت دیتابیس کند تری را خواهید داشت. پس بعنوان یک اصل نوع داده ها را با دقت و وسواس فراوان و کوچکترین اندازه لازم انتخاب میکنیم و نه کمتر.
مفهوم null
یکی از مفاهیم پایه ایی پایگاه داده مفهوم null است
Null : عبارتست از مقداری که نمی دانیم چیست . مقدار نامعلوم . نامشخص (UNKNOWN). مقدار null با عدد صفر و یا یک رشته خالی متفاوت است . چون null مقداری نامشخص می باشد پس هیچ دو مقدار null ایی با هم برابر نیستند .
فیلد های یک جدول بطور پیشفرض می توانند مقدار null را داشته باشند.
مثلا :یک جدول برای ثبت اطلاعات شاگردان کلاس میسازیم :
فیلد اول : نام FirstName nvarchar(50)
دوم : نام خانوادگی nvarchar(100) LastName
سوم : سن Age tinyintv
چهارم : تاریخ تولد date Birthdate Char(10) یا int
پنجم : دوره های آموزشی که گذرانده ایید nvarchar(max) TrainingCourses
ششم : در آمد ماهیانه : money - salary
هفت : صبح ها معمولا چه ساعتی از خواب بیدار میشوید time WakeTime
هشتم : ایا علاقه مند به ادامه تحصیل هستید ؟ bit ContinuingEducation
حالا مطابق روشی که در فیلم توضیح داده شده ، تعدادی رکورد در این جدول ایجاد میکینم.
سوال چگونه می توانیم یک نفر را از لیست انتخاب کنیم ؟
مفهوم Primary Key یا کلید اصلی (PK)
کلید اصلی در هر table فیلد و یا فیلد هایی است که بتوان بکمک آن بتوان بطور منحصری بفردی یک رکورد از جدول را مشخص کرد .
-
مقدارکلید اصلی جدول الزاما باید منحصر به فرد باشد (هر رکورد یک مقدار منحصر به فرد)
-
کلید اصلی نمی تواند null باشد.
-
هر جدول فقط می تواند یک کلید اصلی داشته باشد
پس ما احتیاج به فیلدی داریم که بتوان به کمک آن یک رکورد را در بین انبوه اطلاعات یک جدول به تنهایی مشخص کرد . فیلد نام یقینا مناسب نمی باشد . چرا که ممکن است در یک کلاس چندین فرد با یک نام و حتی با یک نام خانوادگی وجود داشته باشند. می توانیم به هر شاگرد کدی منحصر به فرد اختصاص دهیم که از مثلا 1 شروع شود.
بنابراین فیلدی یه نام ID را به جدول مان اضافه میکنیم . چون تعداد دانش اموزان کلاس خیلی زیاد نیست می توان از data type همانند tinyint و یا smallint استفاده کنیم .
نکته : دقت کنید که کلید اصلی یکی از مهمترین ایتم های یک جدول میباشد و در انتخاب نو ع داده ان بایستی دقت شود نوع داده های عددی همانند tinyint و smallint و int و bigint در حالت کلی بسیار سریعتر از انواع داده رشته ایی همانند nvarchar , char هستند .بنابراین برای کلید اصلی انتخاب مناسبتری هستند . همچنین در نوع داده عددی نیز اگر هدف ما نگهداری اطلاعات تنها یک کلاس است می توان مثلا ازsmallint استفاده کرد که تا مقدار 32767 را در خود ذخیره میکند.
ولی اگر هدف ما نگهداری اطلاعات دانش آموزان سراسر ایران است انواع داده ایی همانند int و و برای دانش آموزان سراسر دنیا bigint مناسب می باشند.
برای تعریف یک فیلد بعنوان کلید اصلی یک جدول کافیست بروی آن جدول کلیک راست کرده و گزینه design را انتخاب کنیم ، انگاه بروی فیلد مورد نظر کلیک راست میکنیم و ایتم Set Primary Key را انتخاب میکنیم .
نکته قبلا گفتیم که هر جدول تنها می تواند دارای یک کلید اصلی باشد.
کلید اصلی می تواند شامل یک فیلد و یا بیش از یک فیلد باشد که به
آن composite primary Key می گویند . یعنی ترکیب مقدار چند فیلد می تواند بطور منحصر بفردی یک رکورد جدول ما را مشخص کند.
در composite primary key هنگامی که در مد design یک جدول هستیم چند فیلد را انتخاب نموده (با نگهداشتن کلید ctrl و کلیک بروی فیلد ها) و انگاه کلیک راست نموده و Set Primary Key را انتخاب می نماییم.
به مثال باز میگردیم بروی فیلد ID کلیک راست کرده و set primary key را انتخاب میکنیم. می بینیم بمحض کلیک در کنار فید یک علامت کلید زرد رنگ که معرف کلید اصلی بودن این فیلد است مشاهده میشود. و بطور اتوماتیک تیک ، باکس
Allow Nulls برای این فیلد برداشته میشود چرا که کلید اصلی یک جدول هیچگاه نمی تواند null باشد.
هنگامی که برای هر شاگرد بتوانیم یک ایتم منحصر بفرد بیابیم مثلا کد ملی یا شماره بیمه می توانیم آنرا بعنوان کلید اصلی در نظر بگیریم ولی گاهی اوقات که به اینچنین ایتمهای قابل اطمینانی دسترسی نداریم. یعنی مطمئن نیستیم که ایا مقدار وارد شده در ان فیلد برای هر فرد یکتا و منحصر به فرد (unique) است .می توانیم با انجام تنظیمی کاری کنیم که خود sql server بطور اتوماتیک به فیلد مشخص شده در هر رکورد مقداری عددی و یکتا را اختصاص دهد .که در این صورت این مقدار اتوماتیک ساخته شده و قابل تغییر توسط ما نیست.
این تنظیم از طریق property به نام ، (هویت) IDENTITY قابل اعمال است . هنگامی که در مد design یک جدول هستیم ستون ID راکه بعنوان کلید اصلی انتخاب کرده ایم را انتخاب نموده و پنجره پایین به نام
Column properties ایتم Identity Specification را باز کرده و با سه ایتم به شرح ذیل مواجه میشویم:
-
1 . is identity ایا این فیلد یک فیلد identity است یعنی فیلدی که خود اس کیو ال سرور مقدار منحصر به فردی را برای هر رکورد در ان درج میکند. با تنظیم این ایتم به Yes دو ایتم زیری فعال میشوند .
-
2. Identity Increment : هنگام درج رکورد جدید اس کیو ال سرور چه مقداری را به مقدار قبلی این فیلد اضافه کند و در رکورد جدید درج نمایید. (نرخ رشد) (چند تا چند تا اضافه شود.) پیشفرض ان 1 است. یعنی با درج رکورد جدید مقدار فیلد identity برابر است با مقدار فیلد idendity قبلی +1
-
3. Seed : شروع اولین مقدار idendity از چه مقداری باشد. مقدار پیشفرض ان 1 است .
در تنظیمات بالا نتیجه این خواهد شد که مقدار فیلد id در اولین رکورد 1 است و با درج رکورد های جدید یکی یکی اضافه خواهد شد .
این تنظیم را انجام میدهیم کلید ذخیره و یا Ctrl+ S را میزنیم .
با پیغام اخطاری مواجه می شویم
Saving changes is not permitted . the changes you have made require table to be dropped and re-created.
ذخیره تغییرات مجاز نیست . تغییری را که شما ایجاد کرده اید نیازمند ان است که جدول را حذف کرده و دوباره بسازید.
راه حل :
برای جلوگیری از نمایش این پیام می توانید به : منو tools رفته بروی گزینه option کلیک کنید. انگاهDesigners را باز کنید و بروی ایتم Table and Database Designers. کلیک کنید
و تیک Prevent saving changes that require the table to be re-created
را بردارید.
به فیلم مراجعه کنید
علاوه بر این اعمالی نظیر
-
اضافه کردن یک فیلد بین فیلد های قبلی جدول
-
حذف یک فیلد
-
تغییر اماکن پذیرفتن null
-
تغییر ترتیب ستون های جدول ایجاد شده قبلی
-
تغییر نوع داده data type یک فیلد
می تواند باعث نمایش این اخطار شود .
حالا امکان ذخیره تغییرات را داریم .
بسیاری از مفاهیم درفیلم اموزشی بطور مفصل شرح داده شده اند . لذا حتما فیلم آموزشی این فصل را ببینید .
فیلم آموزشی این فصل با فصل قبلی در یک فایل موجود می باشد لذا برای مشاهده توضیحات مربوط به این فصل فیلم را از حدود دقیقه : 40 به بعد ببینید.
مفاهیم و موضوعات این فصل عبارتند از :
-
ساخت جدول (Table)
-
مفهوم null
-
مفهوم Primary Key یا کلید اصلی (PK)
-
IDENTITY