ارتباط بین جداول در sqlserver

زهیر صفری 1402/05/31 0 3.4k
لینک کوتاه https://zoheirsoftware.com/z/cfec6dd |
RelationShip,RelationShip  در sqlserver,ارتباط بین جداول در 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 به کاربران امکان جستجو های مختلفی را در پایگاه داده میدهد.

 

relationship | relationship در sql | ارتباط بین جداول  در sqlserver

شکل بالا رابطه بین جدول استان (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 داریم ؟

  1. اگر یک جدول داشته باشیم که اطلاعات تکراری زیادی ثبت شود تبدیل به چند جدول با کلید های اصلی و خارحی تبدیل می شود.
  2. برای ساختار منظم تر و انسجام تر داده ها در جدول
  3. اگر نیاز به عملیات CRUD یعنی عملیات حذف ، ثبت ، بروز رسانی ، خواندن اطلاعات باشد به آسانی انجام می شود.

 

ارتباط با جدول پایگاه به چه شکلی برقرار میشود؟

 

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

مثال :

زمانی که یک استان مانند مازندران ثبت میکنیم بایستی شهرهای استان مازندران را در جدول شهر ایجاد کنیم.

اگر Id کلید اصلی استان مازندران 3 باشد و هر سطری در جدول شهرایجاد میکنیم فیلد provinceId برابر 3 میشود با این کار زمان کوئری ما متوجه میشویم

که سطرهای که provinceId ان برابر 3 است برای استان مازندران است.

relationship | relationship در sql | ارتباط بین جداول  در sqlserver

کوئری ایجاد شده در پایگاه داده sqlserver

 

select * from Cities where provinceId=3

 

relationship | relationship در sql | ارتباط بین جداول  در sqlserver

 کوئری گرفتن نام استان و نمایش نتیجه

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

 

در کوئری بالا با استفاده از پیوند ها تونستیم نام استان را دریافت در خروجی نمایش بدیم

relationship | relationship در sql | ارتباط بین جداول  در sqlserver

ایجاد ارتباط جداول با استفاده از حالت ویزارد sqlserver

 

ابتدا روی جدول فرزند کلیک راست و گزینه relationships  را انتخاب میکنیم.

relationship | relationship در sql | ارتباط بین جداول  در sqlserver

صفحه ایجاد ارتباط بین دو جدول باز شده ، حالا گزینه Add  را میزنیم.

relationship | relationship در sql | ارتباط بین جداول  در sqlserver

روی باتن سه نقطه کلیک کرده تا صفحه ارتباط باز شده

relationship | relationship در sql | ارتباط بین جداول  در sqlserver

 

کادر سبز رنگ primary key  که نشان دهنده کلید اصلی جدول پدر هست ایدی ان را انتخاب میکنیم.

کادر قرمز رنگ foreign key که نشان دهنده کلید خارجی در جدول فرزند و کلید اصلی در جدول پدر است را انتخاب میکنیم. و باتن ok را میزنیم.

relationship | relationship در sql | ارتباط بین جداول  در sqlserver

مطابق شکل زیر اطلاعات ثبت میشود.

relationship | relationship در sql | ارتباط بین جداول  در sqlserver

در انتهای این  قسمت گزینه insert and update  را کلیک میکنیم با دو گزینه زیر مواجه میشویم.

delete Rule و update rule  مواجه میشویم.

relationship | relationship در sql | ارتباط بین جداول  در sqlserver

با انتخاب لیست جلوی delete rule  با 4 گزینه مواجه میشویم .

No Action : با انتخاب این گزینه زمان که اگر بخواهیم در جدول پدر یک رکورد را حذف کنیم.اگر رکورد مورد نظر داده ای در جدول فرزند داشته باشد اجازه حذف رکورد پدر را به ما نمی دهد.

Cascde :  با انتخاب این گزینه زمان که اگر بخواهیم در جدول پدر یک رکورد را حذف کنیم.اگر رکورد مورد نظر داده ای در جدول فرزند داشته باشد. سطر موجود در جدول پدر حذف میشود و علاوه بر اون تمامی سطر های مرتبط به جدول فرزند هم حذف میشود.

Set NUll :  با انتخاب این گزینه زمان که اگر بخواهیم در جدول پدر یک رکورد را حذف کنیم.اگر رکورد مورد نظر داده ای در جدول فرزند داشته باشد. سطر موجود در جدول پدر حذف میشود و علاوه بر اون تمامی سطر های مرتبط به جدول فرزند هم حذف نمیشود بله مقدار Null  به آن داده میشود.

Set Default :  با انتخاب این گزینه زمان که اگر بخواهیم در جدول پدر یک رکورد را حذف کنیم.اگر رکورد مورد نظر داده ای در جدول فرزند داشته باشد. سطر موجود در جدول پدر حذف میشود و علاوه بر اون تمامی سطر های مرتبط به جدول فرزند هم حذف نمیشود بله مقدار پیش فرض  تعیین داده شده به آن داده میشود.

 

relationship | relationship در sql | ارتباط بین جداول  در sqlserver

دوره های مرتبط
آموزش Sql,آموزش sqlserver, آموزش جامع Sqlserver

آموزش پایگاه داده SqlServer

پایگاه داده Sqlserver یکی از پایگاه داده های مهم برای ذخیره اطلاعات محسوب میشود .

997,000 تومان

1.6k بازدید
مشاهده

ارسال دیدگاه

برای ارسال نظر لطفا ورود یا ثبت نام کنید.