بازگشت به صفحه اصلی آموزش پیشرفته اکسس
در این قسمت به بررسی و ایجاد یک ارتباط چند به چند در بانک اطلاعاتی Customer Orders می پردازیم.
در ارتباط یک به چند،جدولی که در یک سمت از ارتباط قرار دارد، دارای چندین رکورد نظیر در جدول دیگر است. این نوع ارتباط در پنجره Relationships اکسس بصورت زیر نمایش داد:
شکل 1: ارتباط یک به چند
در مقایسه با ارتباط یک به چند، باید گفت که در ارتباط چند به چند سه جدول وجود دارند. دو جدولی که با هم ارتباط دارند، به یک جدول سوم به نام junction متصل می شوند. این نوع ارتباط در پنجره Relationships اکسس بصورت زیر نمایش داد:
شکل 2: ارتباط چند به چند
در تصویر فوق، جداول tblOrder و tblProducts در یک ارتباط چند به چند به یکدیگر متصل می باشند. جدول TblOrderDetails سومین جدول است که جدول junction نامیده می شود و بین دو جدول دیگر وساطت می کند. این وساطت دو ارتباط یک به چند را شکل دهی می کند.
هنگامی که یک مشتری سفارش می دهد، این امکان وجود دارد که محصولاتی خریداری شوند. همانند ارتباط یک به چند، در اینجا هم یک سفارش می تواند شامل چندین محصول درخواستی باشد. اگرچه، یک نوع محصول نیز ممکن است در چندین سفارش مختلف ظاهر شود. این داستان نیز همانند یک ارتباط یک به چند است ولی با این تفاوت که در جهت عکس رخ می دهد. بنابراین ما به یک جدول junction در بین دو این جدول نیاز داریم تا هر محصولی که در یک سفارش خاص ظاهر می شود و نیز هر سفارشی که برای یک محصول خاص داده می شود را ثبت کنیم.
اگر به شکل دوم نگاه کنید متوجه می شوید که به نظر می رسد دو کلید اولیه در جدول junction قرار دارد. همچنین کلیدهای خارجی از دو جدول دیگر در ارتباط هستند. اما در حقیقت تنها یک کلید اولیه وجود دارد ولی حاوی ترکیب منحصربفرد دو کلید اولیه از دو جدول در یک ارتباط چند طرفه می باشد. همینطور یک نوع محصول خاص فقط تنها می تواند یکبار در هر جدول مخصوص Customer Order ظاهر شود و برعکس.
برای درک بهتر آن، بهتر است طرح یک فاکتور فروش را تصور کنید. هر فاکتور فروش متعلق به یک سفارش خاص برای همان مشتری است. ممکن است همان نوع محصول در فاکتورهای فروش مختلف نیز سفارش داده شود(برای همان مشتری یا مشتریان دیگر). داده های این فهرستها از جدول junction حاصل می شوند.
ایجاد یک ارتباط چند به چند
ابتدا یک بانک اطلاعاتی را دانلود می کنیم که حاوی جدول های tblOrder و tblProducts می باشند. همچنین جدول دیگری به نام tblCustomer وجود دارد که با یک ارتباط یک به چند به جدول tblOrder متصل می باشد. سپس ما جدول junction دیگری به نام tblOrderDetails ایجاد کرده و متصل می کنیم تا یک ارتباط چند به چند ایجاد کنیم.
شکل 3: ایجاد ارتباط چند به چند
ایجاد جدول Junction
شکل 4: انتخاب دو فیلد بعنوان کلید اولیه .
5. دو فیلد باقیمانده را به جدول اضافه کنید. این دو فیلد Quantity( از نوع داده Number) و CostPerUnitPaid(از نوع داده Currency) هستند.
6. جدول را ببندید و آن را به نام tblOrderDetails ذخیره کنید.
ایجاد اتصال
شکل 5: کادرمکالمه Edit Relationship.
6. سپس باید یک ارتباط یک به چند بین فیلد tblProducts.ID و tblOrderDetails.ProductId ایجاد کنیم. مراحل بالا را مجددا برای ایجاد این ارتباط طی کنید.
اکنون ارتباط چند به چند ایجاد شده است. پنجره RELATIONSHIPS شما باید شبیه به شکل زیر به نظر برسد.
شکل6: ارتباط چند به چند
آنچه که واضح است، هیچ جدول یا گزارشی برای ورود یا نمایش اطلاعات ایجاد نکردیم. اگرچه برای مشاهده نحوه برقراری ارتباط بین این اطلاعات می توانیم با ثبت یک سفارش آن را نشان دهیم.
تصویر زیر سفارشی را نشان می دهد که برای یکی از مشتریان در جدول مشتریان ایجاد کرده ایم.
شکل7: سه جدول تودرتو که سفارش ثبت شده توسط یک مشتری به نام Tracey Smith را نشان می دهد.
همانطور که مشاهده می کنید سه جدول تودرتو وجود دارد. جدول فوقانی، رکورد مشتری را از جدول tblCustomer نشان می دهد. نام مشتری در اینجا Tracey Smith و مقدار customerId نامبرده 2 است. جدول میانی رکورد سفارش را از جدول tblOrder نشان می دهد. تنها یک سفارش برای این مشتری بر روی بانک اطلاعاتی وجود دارد. شماه ID سفارش 18 است و مقدار OrderDate نیز 2011/4/28 است. جدول انتهایی جزییات سفارش را از جدول tblOrderDetails نشان می دهد. همانطور که مشاهده می کنید، چهار محصول برای این سفارش وجود دارد. شماره ID محصول 3 ، 2 ، 1 و 5 است. مشتری یکی از این آیتمها را سفارش داده است(به فیلد quantity مراجعه کنید).
در شکل 8 جدول محصولات را مشاهده می کنید. هر سطر باز می شود تا مجموعه ای از رکوردهای جدول tblOrderDetails نظیر آنها را نمایش دهد. همینطور می توانید سفارشهایی را که برای هر محصول ارائه می شود، مشاهده کنید:
شکل8: جدول Products(tblProducts) جزییات سفارش ( tblOrderDetails) را برای هر آیتم نشان می دهد.
همانطور که مشاهده می کنید، Order 18 در اینجا از سمت جدول Product به همراه سایر سفارشات دیده می شود. اگر به دقت نگاه کنید، مشاهده می کنید که یک نمونه از OrderId 18 در زیر هر کدام از ProductId ها ظاهر می شود(مثلا 3 و 2و 1و 5). همچنین می توانید نحوه ظاهر شدن داده های موجود در جداول ما را در هردو سمت ارتباط چند به چند مشاهده کنید.
البته، برای وارد کردن داده ها، پردازش و نمایش نتایج حاصله باید از فرمها، فرم های پرس و جو (Queryها) و گزارشات استفاده کنیم.
طراحی سایت و
سئو توسط ضابط