دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
InnerException در سیشارپ
1403/09/11 -
بکاپ گیری و بازیابی در پایگاه داده اوراکل
1403/09/10 -
خواص Exception در سی شارپ
1403/09/09 -
انواع جداول در پایگاه داده اوراکل
1403/09/08 -
مدیریت خطا در سی شارپ
1403/09/07 -
انواع Statistics در پایگاه داده اوراکل
1403/09/04
ارتباط بین جداول در sqlserver
مفهوم Relationship
یکی از مباحث اساسی پایگاه داده sql server ارتباط بین جداول است.ارتباط بین جدول ها در واقع اطلاعات مربوط بهم را مرتبط میکنند.
ارتباط بین جداول در sql server یعنی یک جدول دارای زیر مجموعه های که شامل یک جدول یا چندین جدول مرتبط بهم هستند.
در پایگاه دادهها، مفهوم "Relationship" به ارتباطهایی اشاره دارد که بین جداول (Table) در یک پایگاه داده SQL Server برقرار میشود.
ارتباطها میتوانند به شما کمک کنند تا اطلاعات را به صورت منطقی و سازماندهی شده در سیستمهای پایگاه داده ذخیره کنید.
دو نوع اصلی ارتباط در پایگاه دادهها وجود دارد: "One-to-Many" (یک به چند) و "Many-to-Many" (چند به چند).
در ادامه، به شما نحوهی ایجاد این ارتباطها در پایگاه داده SQL Server را آموزش میدهم:
One-to-Many (یک به چند) Relationship :
در این نوع ارتباط، یک ردیف در جدول اصلی (Parent Table) میتواند با چند ردیف در جدول مرتبط (Child Table) مرتبط شود.
مثالی از این نوع ارتباط، ارتباط بین یک مشتری و سفارشهای مختلف او است.
1. ایجاد جدولها:
- ابتدا جدول مرتبط را ایجاد کنید. برای مثال، جدول "سفارشها" (Orders) را ایجاد کنید.
2. تعیین کلید خارجی
- در جدول "سفارشها"، یک ستون به نام "مشتری_ID" را به عنوان کلید خارجی ایجاد کنید. این ستون به جدول "مشتریان" (Customers) اشاره خواهد کرد.
3. ارتباط تعریف کنید:
- روی جدول "مشتریان" راست کلیک کرده و به بخش "Relationships" بروید.
- با کلیک بر روی "New"، یک پنجرهی جدید باز میشود. در اینجا، جدول منبع و جدول مقصد (جدول مرتبط) را انتخاب کنید.
- ستون منبع (کلید اصلی) و ستون مقصد (کلید خارجی) را تعیین کنید.
- نوع ارتباط را به "One-to-Many" تغییر دهید.
Many-to-Many (چند به چند) Relationship :
در این نوع ارتباط، هر ردیف در جدول اصلی میتواند با چند ردیف در جدول مرتبط مرتبط شود و بالعکس.
برای مثال، ارتباط بین دانشجویان و دروسی که آنها انتخاب میکنند.
1. ایجاد جدول مشترک:
- یک جدول جدید برای نمایش ارتباط بین دو جدول اصلی ایجاد کنید. این جدول مشترک به عنوان "جدول واسط" (Intermediate Table) شناخته میشود.
2. تعیین کلیدهای خارجی:
- در جدول واسط، دو ستون برای کلیدهای خارجی به دو جدول اصلی اضافه کنید.
3. ارتباط تعریف کنید:
- به بخش "Relationships" بروید و بر روی "New" کلیک کنید.
- جدول منبع و دو جدول مقصد (جدولهای اصلی) را انتخاب کنید.
- ستونهای منبع و مقصد را تعیین کنید و نوع ارتباط را به "Many-to-Many" تغییر دهید.
با انجام مراحل فوق، ارتباطهای مورد نیاز خود را در پایگاه داده SQL Server ایجاد کردهاید.
ارتباط بین جداول در پایگاه sqlserver
sql server یک پایگاه داده رابطه ای می باشد، در واقع بین چندین جدول رابطه ها وجود دارد ، زیرا داده های مرتبط بهم دارد.
این مزیت در sql به کاربران امکان جستجو های مختلفی را در پایگاه داده میدهد.
شکل بالا رابطه بین جدول استان (Provinces) و شهرستان (Cities) را نشان میدهد.
کد ایجاد جداول استان و شهرستان در sqlserver به صورت زیر می باشد.
کد استان :
CREATE TABLE [Provinces](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NULL,
CONSTRAINT [PK_dbo.Provinces] PRIMARY KEY CLUSTERED
(
[Id] ASC
) ON [PRIMARY])
کد شهرستان
CREATE TABLE [Cities](
[Id] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY ,
[Name] [nvarchar](50) NULL,
[provinceId] [int] NULL
CONSTRAINT [FK_provinceId] FOREIGN KEY([provinceId])
REFERENCES [dbo].[Provinces] ([Id])
);
PRIMARY Key در هر جدول اشاره دارد به کلید اصلی در استان و شهرستان ها که با کلید خارجی (FOREIGN KEY) ارتباط برقرار می کند.
در شکل بالا کلیدی اصلی جدول استان (Id) با کلید خارجی در جدول شهرستان (provinceId) ارتباط برقرار کرده است.
چه زمانی ما نیاز به ارتباط بین جداول ها در پایگاه داده Sql Server داریم ؟
- اگر یک جدول داشته باشیم که اطلاعات تکراری زیادی ثبت شود تبدیل به چند جدول با کلید های اصلی و خارحی تبدیل می شود.
- برای ساختار منظم تر و انسجام تر داده ها در جدول
- اگر نیاز به عملیات CRUD یعنی عملیات حذف ، ثبت ، بروز رسانی ، خواندن اطلاعات باشد به آسانی انجام می شود.
ارتباط با جدول پایگاه به چه شکلی برقرار میشود؟
ارتباط ها در هر جدول پدر یا اصلی با استفاده از کلید اصلی با جدول زیر مجموعه یا فرزند با استفاده از کلید خارجی که همان کلید اصلی در جدول پدر است برقرار میشود.
مثال :
زمانی که یک استان مانند مازندران ثبت میکنیم بایستی شهرهای استان مازندران را در جدول شهر ایجاد کنیم.
اگر Id کلید اصلی استان مازندران 3 باشد و هر سطری در جدول شهرایجاد میکنیم فیلد provinceId برابر 3 میشود با این کار زمان کوئری ما متوجه میشویم
که سطرهای که provinceId ان برابر 3 است برای استان مازندران است.
کوئری ایجاد شده در پایگاه داده sqlserver
select * from Cities where provinceId=3
کوئری گرفتن نام استان و نمایش نتیجه
select c.Id,c.Name as Citienam,p.Name as provincename from Cities as c
join Provinces as p on c.provinceId=p.Id
where c.provinceId=3
در کوئری بالا با استفاده از پیوند ها تونستیم نام استان را دریافت در خروجی نمایش بدیم
ایجاد ارتباط جداول با استفاده از حالت ویزارد sqlserver
ابتدا روی جدول فرزند کلیک راست و گزینه relationships را انتخاب میکنیم.
صفحه ایجاد ارتباط بین دو جدول باز شده ، حالا گزینه Add را میزنیم.
روی باتن سه نقطه کلیک کرده تا صفحه ارتباط باز شده
کادر سبز رنگ primary key که نشان دهنده کلید اصلی جدول پدر هست ایدی ان را انتخاب میکنیم.
کادر قرمز رنگ foreign key که نشان دهنده کلید خارجی در جدول فرزند و کلید اصلی در جدول پدر است را انتخاب میکنیم. و باتن ok را میزنیم.
مطابق شکل زیر اطلاعات ثبت میشود.
در انتهای این قسمت گزینه insert and update را کلیک میکنیم با دو گزینه زیر مواجه میشویم.
delete Rule و update rule مواجه میشویم.
با انتخاب لیست جلوی delete rule با 4 گزینه مواجه میشویم .
No Action : با انتخاب این گزینه زمان که اگر بخواهیم در جدول پدر یک رکورد را حذف کنیم.اگر رکورد مورد نظر داده ای در جدول فرزند داشته باشد اجازه حذف رکورد پدر را به ما نمی دهد.
Cascde : با انتخاب این گزینه زمان که اگر بخواهیم در جدول پدر یک رکورد را حذف کنیم.اگر رکورد مورد نظر داده ای در جدول فرزند داشته باشد. سطر موجود در جدول پدر حذف میشود و علاوه بر اون تمامی سطر های مرتبط به جدول فرزند هم حذف میشود.
Set NUll : با انتخاب این گزینه زمان که اگر بخواهیم در جدول پدر یک رکورد را حذف کنیم.اگر رکورد مورد نظر داده ای در جدول فرزند داشته باشد. سطر موجود در جدول پدر حذف میشود و علاوه بر اون تمامی سطر های مرتبط به جدول فرزند هم حذف نمیشود بله مقدار Null به آن داده میشود.
Set Default : با انتخاب این گزینه زمان که اگر بخواهیم در جدول پدر یک رکورد را حذف کنیم.اگر رکورد مورد نظر داده ای در جدول فرزند داشته باشد. سطر موجود در جدول پدر حذف میشود و علاوه بر اون تمامی سطر های مرتبط به جدول فرزند هم حذف نمیشود بله مقدار پیش فرض تعیین داده شده به آن داده میشود.
دوره های مرتبط
آموزش پایگاه داده SqlServer
پایگاه داده Sqlserver یکی از پایگاه داده های مهم برای ذخیره اطلاعات محسوب میشود .