پرش به محتوای اصلی

آموزش SQL در Microsoft Access: انواع ارتباط بین جداول و ایجاد رابطه چندبه‌چند با جدول واسط

در پایگاه‌ داده‌های رابطه‌ای، داده‌ها معمولاً در چندین جدول مختلف ذخیره می‌شوند. برای ایجاد ارتباط بین این جدول‌ها از Relationship یا رابطه بین جداول استفاده می‌کنیم. در آموزش قبلی با مفهوم کلید خارجی (Foreign Key) آشنا شدیم.

در این آموزش قصد داریم انواع ارتباط بین جداول در SQL و Microsoft Access را بررسی کنیم و نحوه ایجاد یک رابطه چندبه‌چند (Many-to-Many Relationship) با استفاده از جدول واسط را یاد بگیریم.

Did you know:

یادگیری SQL در اکسس شما را قادر می‌سازد تا به راحتی داده‌ها را از جداول مختلف استخراج و تحلیل کنید. از مزایای استفاده از SQL در اکسس می‌توان به امکان طراحی کوئری‌های پیشرفته برای گزارش‌گیری اشاره کرد. SQL می‌تواند داده‌های پیچیده را فیلتر کرده و به شما کمک کند تا تحلیل‌های عمیق‌تری انجام دهید. همچنین، این زبان امکان ترکیب داده‌های مختلف و ایجاد گزارش‌های دقیق را در اختیار شما قرار می‌دهد که برای مدیریت بهتر داده‌ها بسیار مفید است.

انواع ارتباط بین جداول در پایگاه داده

در پایگاه‌های داده رابطه‌ای سه نوع ارتباط اصلی بین جداول وجود دارد:

  • رابطه یک‌به‌یک (One-to-One)
  • رابطه یک‌به‌چند (One-to-Many)
  • رابطه چندبه‌چند (Many-to-Many)

رابطه یک‌به‌یک (One-to-One)

در رابطه یک‌به‌یک، هر رکورد از یک جدول فقط با یک رکورد از جدول دیگر ارتباط دارد. این نوع رابطه معمولاً زمانی استفاده می‌شود که بخواهیم اطلاعات یک موجودیت را در چند جدول جداگانه ذخیره کنیم.

به عنوان مثال، می‌توان اطلاعات عمومی کاربران را در جدول Users و اطلاعات اضافی آن‌ها را در جدول UserDetails ذخیره کرد.

رابطه یک‌به‌چند (One-to-Many)

رایج‌ترین نوع ارتباط بین جداول، رابطه یک‌به‌چند است. در این حالت یک رکورد از جدول والد می‌تواند با چندین رکورد از جدول فرزند مرتبط باشد.

برای مثال، هر مشتری می‌تواند چندین سفارش داشته باشد:

Customers
-----------
CustomerID (Primary Key)
CustomerName


Orders
-----------
OrderID (Primary Key)
CustomerID (Foreign Key)
OrderDate

در این مثال، فیلد CustomerID در جدول Orders یک کلید خارجی است که به جدول Customers اشاره می‌کند.

رابطه چندبه‌چند (Many-to-Many)

در رابطه چندبه‌چند، هر رکورد از جدول اول می‌تواند با چندین رکورد از جدول دوم مرتبط باشد و بالعکس.

به عنوان مثال، در یک سیستم فروش:

  • هر سفارش می‌تواند شامل چند محصول باشد.
  • هر محصول نیز می‌تواند در چند سفارش مختلف وجود داشته باشد.

بنابراین بین جدول‌های Orders و Products یک رابطه چندبه‌چند وجود دارد.

چرا به جدول واسط نیاز داریم؟

در پایگاه‌های داده رابطه‌ای نمی‌توانیم یک کلید خارجی داشته باشیم که به چندین رکورد اشاره کند. بنابراین برای پیاده‌سازی رابطه چندبه‌چند از یک جدول سوم به نام جدول واسط (Junction Table) استفاده می‌کنیم.

در مثال سفارش و محصول، جدول واسط را OrderDetails نام‌گذاری می‌کنیم.

طراحی جداول Orders، Products و OrderDetails

CREATE TABLE Products (
    ProductID LONG NOT NULL,
    ProductName VARCHAR(100),
    Price CURRENCY,
    PRIMARY KEY (ProductID)
);


CREATE TABLE Orders (
    OrderID LONG NOT NULL,
    OrderDate DATETIME,
    PRIMARY KEY (OrderID)
);

اکنون جدول واسط را ایجاد می‌کنیم. این جدول شامل دو کلید خارجی است که به دو جدول اصلی متصل می‌شوند.

CREATE TABLE OrderDetails (
    OrderID LONG NOT NULL,
    ProductID LONG NOT NULL,
    Quantity INTEGER,
    UnitPrice CURRENCY,

    PRIMARY KEY (OrderID, ProductID),

    FOREIGN KEY (OrderID)
    REFERENCES Orders(OrderID),

    FOREIGN KEY (ProductID)
    REFERENCES Products(ProductID)
);

کلید اصلی مرکب (Composite Primary Key)

در جدول OrderDetails از دو فیلد OrderID و ProductID به عنوان کلید اصلی استفاده کردیم. به چنین کلیدی کلید اصلی مرکب (Composite Primary Key) گفته می‌شود.

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

ایجاد رابطه چندبه‌چند در Microsoft Access

در Microsoft Access نیز برای ایجاد رابطه چندبه‌چند باید ابتدا جدول واسط ایجاد کنیم. سپس از پنجره Relationships دو رابطه یک‌به‌چند ایجاد می‌کنیم:

  • رابطه بین Orders و OrderDetails
  • رابطه بین Products و OrderDetails

در هر دو رابطه باید گزینه Enforce Referential Integrity فعال شود تا یکپارچگی داده‌ها حفظ گردد.

نمایش اطلاعات چند جدول با استفاده از JOIN

پس از ایجاد ارتباط بین جداول، می‌توانیم اطلاعات را از چند جدول مختلف با استفاده از دستور JOIN استخراج کنیم.

SELECT 
    Orders.OrderID,
    Products.ProductName,
    OrderDetails.Quantity
FROM 
    (Orders
    INNER JOIN OrderDetails
    ON Orders.OrderID = OrderDetails.OrderID)
    INNER JOIN Products
    ON OrderDetails.ProductID = Products.ProductID;

در آموزش‌های بعدی به صورت کامل با انواع JOIN در SQL و نحوه اتصال چند جدول در Microsoft Access آشنا خواهیم شد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

تأیید امنیتی هنگام تعامل با فرم بارگذاری می‌شود.