Download presentation
Presentation is loading. Please wait.
Published byΕρμόλαος Δουμπιώτης Modified over 6 years ago
1
آزمایشگاه پایگاه داده ها قیود در جداول یک پایگاه داده در SQL Server
2
Integrity Constraints قیود جامعیت
آزمایشگاه پایگاه داده ها - قیود در جداول یک پایگاه داده در SQL Server
3
قیود جامعیت - Integrity Constraints
همانطور که در بخش قبل شرح داده شد قالب اصلی دستور Create Table بصورت زیر است. CREATE TABLE <نام جدول> (<نام فیلد 1> <نوع فیلد یک>, … , <n نام فیلد> <n نوع فیلد>); مثال: create table teacher (id nchar(10), fullname nvarchar(50), course nvarchar(30)); اما این دستور می تواند پارامترهای دیگری را هم در بر داشته باشد. به این پارامترها قید یا محدودیت می گویند از جمله قیود جامعیت که از مهمترین آنها می توان به قید فیلد کلید اصلی یا همان Primary Key اشاره کرد. آزمایشگاه پایگاه داده ها - قیود در جداول یک پایگاه داده در SQL Server
4
قیود جامعیت - Integrity Constraints
به مجموعه شرایطی که برای یک فیلد تعیین میشود تا آن فیلد داده های خاصی را مطابق با آن شروط در خود ذخیره کند را قیود جامعیت می گویند. این قید ها عبارتند از: قیود کلیدی Key Constraints: فیلد کلید کوچکترین زیر مجموعه از فیلدهای یک رابطه است (1 یا چند فیلد) که برای هر ردیف اطلاعات، یک مقدار یکتا و واحد (بدون تکرار) و ناخالی را ارائه دهد. کلید کاندید Candidate Key کلید اصلی Primary Key سوپر کلید Super Key آزمایشگاه پایگاه داده ها - قیود در جداول یک پایگاه داده در SQL Server
5
قیود جامعیت - Integrity Constraints
با این تعاریف قالب کلی دستور ایجاد جدول با در نظر گرفتن قید ها به صورت زیر می باشد: CREATE TABLE <نام جدول> (<نام فیلد 1> <نوع فیلد یک>, … , <n نام فیلد> <n نوع فیلد>) [constraint 1] [constraint 2] … [constraint n] واژه constraint یعنی قید یا محدودیت. در ادامه با قیود مهم آشنا خواهیم شد. آزمایشگاه پایگاه داده ها - قیود در جداول یک پایگاه داده در SQL Server
6
تعیین قید کلید اصلی در جدول توسط SSMS
تعیین فیلد یا فیلد های کلید اصلی (Primary Key) در جدول: برای تعیین فیلد کلید اصلی در یک جدول، در قسمت ویرایش جدول (Design) باید: ابتدا فیلد یا فیلدهای مورد نظری که می خواهید به عنوان کلید اصلی تعیین شوند را انتخاب کنید. سپس بر روی آنها راست کلیک کرده و گزینه Set Primary Key را انتخاب کنید. با این کار یک علامت کلید زرد رنگ در جلوی اسم فیلد یا فیلدها نمایش داده میشود. جدول را ذخیره کنید تا تغییرات اعمال شود. آزمایشگاه پایگاه داده ها - قیود در جداول یک پایگاه داده در SQL Server
7
تعیین قید کلید اصلی در دستور ایجاد جدول
برای تعیین فیلد یا فیلدهای کلید اصلی باید از کلمه کلیدی Primary Key استفاده کرد. در مواردی که فقط یک فیلد کلید اصلی است می توان در هنگام تعریف آن فیلد بعد از نوشتن نوع داده فیلد، کلمه کلیدی primary key را وارد کرد. با این کار دیگر نیازی نیست که در انتهای دستور قید primary key() را ذکر کرد. بصورت زیر: نام فیلد نوع فیلد primary key CREATE TABLE student ( stid CHAR(20) primary key, name CHAR(20), age SMALLINT, nc CHAR(20), ic CHAR(20) ); در دستور بالا فیلد stid به عنوان کلید اصلی تعیین میشود. آزمایشگاه پایگاه داده ها - قیود در جداول یک پایگاه داده در SQL Server
8
تعیین قید کلید اصلی در دستور ایجاد جدول
اما اگر بخواهیم بیش از یک فیلد را به عنوان کلید اصلی انتخاب کنیم باید قید primary key را در بخش قیود دستور (پس از تعریف فیلدها) به کار برد. قالب کلی این قید بصورت زیر است: PRIMARY KEY (f1,… , fn) f1 تا fn یعنی نام فیلد یا فیلدهایی که به عنوان کلید اصلی تعیین شده اند. مثال: CREATE TABLE student ( stid CHAR(20), name CHAR(20), age SMALLINT, nc CHAR(20), ic CHAR(20), CONSTRAINT studentkey PRIMARY KEY (stid, nc) ); در دستور بالا فیلدهای stid, nc کلید اصلی هستند. عبارت Constraint و نام قرمز رنگ اختیاری است وبرای خطا یابی مفید است. فیلدی که Primary Key است not null هم خواهد بود. آزمایشگاه پایگاه داده ها - قیود در جداول یک پایگاه داده در SQL Server
9
تعیین قید یکتایی در دستور ایجاد جدول
برای تعیین فیلدهایی که مقدار یکتا دارند(فیلد کلید کاندید) هم باید آنها را Unique (یکتا) معرفی کرد برای این کار باید از کلمه کلیدی unique در قسمت قیود دستور ایجاد جدول استفاده کرد. قالب اصلی این قید بصورت زیر است: UNIQUE (f1,… , fn) f1 تا fn یعنی نام فیلد یا فیلدهایی که به عنوان یکتا تعیین شده اند. CREATE TABLE student ( stid CHAR(20), name CHAR(20), age SMALLINT, nc CHAR(20), ic CHAR(20), UNIQUE (nc, ic) ); در دستور بالا 2 فیلد nc و ic هر دو یکتا تعیین شده اند. یعنی مقدار تکراری وخالی را نمی پذیرند. فیلدی که Unique است not null هم خواهد بود. آزمایشگاه پایگاه داده ها - قیود در جداول یک پایگاه داده در SQL Server
10
تعیین قید تهی نبودن یک فیلد در دستور ایجاد جدول
Not Null قید خالی نبودن (تهی نبودن) برای این که یک فیلد مقدار خالی را نپذیرد باید آن را با قید not Null مشخص کنیم. قالب کلی این قید در تعریف یک فیلد به صورت زیر است: نام ستون نوع داده not null مثال: Name nvarchar(20) not null در دستور بالا فیلد Name از نوع nvarchar با اندازه 20 کاراکتر تعریف می شود و قید not null مشخص می کند که این فیلد در هنگام ورود اطلاعات نمیتواند مثدار خالی را قبول کند (نمی تواند خالی بماند). آزمایشگاه پایگاه داده ها - قیود در جداول یک پایگاه داده در SQL Server
11
تعیین قید مقدار پیش فرض یک فیلد در دستور ایجاد جدول
Default قیدی مقدار پیش فرض: برای تعیین مقدار پیش فرض برای یک فیلد باید از قید Default استفاده می شود. قالب اصلی تعریف این قید در تعریف یک فیلد به صورت زیر است: نام ستون نوع داده default مقدار ثابت مثال: Name nvarchar(20) default ‘ali’ در مثال بالا فیلد Name با نوع nvarchar با اندازه 20 کاراکتری در جدول تعریف می شود و مقدار پیش فرض آن رشته ali خواهد بود. آزمایشگاه پایگاه داده ها - قیود در جداول یک پایگاه داده در SQL Server
12
قید Check – بررسی یک شرط در جدول
قید check(p): این قید در قسمت محدودیت ها ذکر می شود و بدین معناست که شرط p در جدول ذکر شده برآورده شود. قالب کلی این قید به صورت زیر می باشد: check (شرط) مثال create table mark (sn int, grade numeric(2,2)) check ((grade >= 00.00) and (grade <= 20.00)) این دستور جدول Mark (نمره) را با فیلدهای sn از نوع int و grade از نوع عدد اعشاری با دو رقم صحیح و دو رقم اعشار ایجاد می کند. با این شرط که در هنگام ورود اطلاعات مقدار وارده به فیلد grade نباید کوچکتر از 0 و بزرگتر از 20 باشد. (نمره عددی بین 0 و 20). آزمایشگاه پایگاه داده ها - قیود در جداول یک پایگاه داده در SQL Server
13
Foreign key: قید کلید خارجی
نمودار ER زیر را در نظر بگیرید: رابطه درس دادن یک درس توسط استاد که در آن در یک ترم یک استاد می تواند N درس را تدریس کند. حال شمای متنی هر یک از موجودیت ها و رابطه Teach بصورت زیر است: Lesson (Lid: char(5), LName: char(25), vahed smallint) Teacher (Tid: char(10), TName: char(50), course char(50)) Teach (Lid: char(5), Tid: char(10), semester: DateTime) course LName Semester Lid Teach Tid Lesson Teacher vahed TName آزمایشگاه پایگاه داده ها - قیود در جداول یک پایگاه داده در SQL Server
14
Foreign key: قید کلید خارجی
شمای جدولی موجودیت ها و رابطه مثال اسلاید قبل بدین صورت می شود: همانطور که در شکل می بینید فیلد Tid در جدول Teach یک ارجاع است به فیلد Tid در جدول Teacher و همانطور نیز فیلد Lid در جدول Teach یک ارجاع است به فیلد Lid در جدول Lesson. در چنین مواردی اگر یک استاد حذف شود باید لیست تمامی درس هایی که با وی بوده است از جدول Teach نیز حذف شود و اگر Tid یک استاد تغییر کند باید مقدار متناظر آن در جدول teach نیز همه بروز شده و آنها نیز عوض شوند. برای پیاده سازی این ساختار از قید Foreign Key استفاده می شود. Lid LName vahed Tid TName course Lesson Teacher Lid Tid Semester Teach آزمایشگاه پایگاه داده ها - قیود در جداول یک پایگاه داده در SQL Server
15
Foreign key: قید کلید خارجی
برای پیاده سازی این قید جامعیت در قسمت محدودیت ها (قیود) دستور ایجاد جدول باید از قالب زیر استفاده کرد: foreign key (نام فیلد ارجاع) references < نام جدول مرجع> [on delete cascade] [on update cascade] کلید خارجی یک ارجاع از جدول مبداء به جدول مقصد است. در تبدیل رابطه های بین دو موجودیت از کلید خارجی حتماً استفاده میشود و در چنین جداولی حداقل 1 رابطه خارجی وجود دارد. یک جدول می تواند بیش از یک رابطه خارجی داشته باشد. آزمایشگاه پایگاه داده ها - قیود در جداول یک پایگاه داده در SQL Server
16
Foreign key: قید کلید خارجی
اگر این قید پارامتر [on delete cascade] را داشته باشد با پاک شدن رکورد متناظر در جدول مرجع تمامی رکوردهای مرتبط به آن در جدول ارجاع کننده نیز پاک می شوند. اگر این قید پارامتر [on update cascade] را داشته باشد با ویرایش یک مقدار در جدول مرجع این تغییر به تمامی رکورد های مرتبط در جدول ارجاع کننده نیز بروز شده و تغییرات در آنها نیز اعمال می شود. البته به جای کلمه cascade میتوان از کلمات Set Null و Set Default استفاده کرد. با استفاده از این عبارات در صورت تغییر یا حذف مقادیر در جدول مرجع در جدول ارجاع کننده مقدار Null و یا مقدار پیش فرض قرار می گیرد. در مثال ذکر شده تعاریف جداول به سبک زیر خواهد شد. آزمایشگاه پایگاه داده ها - قیود در جداول یک پایگاه داده در SQL Server
17
Foreign key: تعریف جدول Lesson مثال
Lesson Table Definition: CREATE TABLE Lesson ( Lid nvarchar(5) PRIMARY KEY, LName nvarchar(25), vahed smallint ) آزمایشگاه پایگاه داده ها - قیود در جداول یک پایگاه داده در SQL Server
18
Foreign key: تعریف جدول Teacher مثال
Teacher Table Definition: CREATE TABLE Teacher( Tid nvarchar(10) Primary Key, TName nvarchar(50), Course nvarchar(50) ) آزمایشگاه پایگاه داده ها - قیود در جداول یک پایگاه داده در SQL Server
19
Foreign key: تعریف جدول Teach مثال
Teach Table Definition: CREATE TABLE Teach( Lid nvarchar(5), Tid nvarchar(10), Semester DateTime, constraint MainKey Primary Key (Lid, Tid, Semester), Foreign Key (Lid) references Lesson on delete cascade on update cascade, Foreign Key (Tid) references Teacher on update cascade ) ارجاع فیلد Lid به جدول Lesson ارجاع فیلد Tid به جدول Teacher آزمایشگاه پایگاه داده ها - قیود در جداول یک پایگاه داده در SQL Server
20
Foreign key: تعریف جدول Teach مثال
نمای پنجره Design جدول teach دیاگرام ارتباطات 3 جدول پس از ساخت هر 3 جدول و استفاده از قید Foreign Key در جدول Teach آزمایشگاه پایگاه داده ها - قیود در جداول یک پایگاه داده در SQL Server
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.