حل سوال ۱۰۵ از کنکور ارشد کامپیوتر ۹۴

در این آموزش ضمن حل سوال ۱۰۵ از کنکور ارشد کامپیوتر ۹۴، مروری هم بر مباحث پرس و جوی Sql و دستور NOT EXISTS خواهیم داشت.

کیفیت فیلم بصورت پیش فرض بر روی حالت low تنظیم شده است و شما می توانید با استفاده از گزینه HD، این آموزش را با بالاترین کیفیت مشاهده نمایید.

شما می توانید با استفاده از گزینه “متن فیلم”، متن مربوط به حل سوال را مشاهده کنید.

//******************************************************************************************************************************************//

صورت سوال:

صورت سوال به این صورت است: سه رابطه ی suppliers ،parts و catalog را در نظر بگیرید. sid در catalog کلید خارجی و ارجاع دهنده به supplier و pid در catalog کلید خارجی و ارجاع دهنده به parts می باشد. وجود رکورد (s1 , p1) در جدول catalog نشان دهنده ی این است که تهیه کننده ی s1  قطعه  p1  را تولید می کند.

اگر بخواهیم دستور Sql  روبرو مشخصات قطعاتی را بدست آورد که توسط بعضی از تولید کنندگان تولید نمی شود، در دو جای خالی A و B چه عملگرهایی باید قرار گیرد؟

//******************************************************************************************************************************************//

یادآوری:

در ابتدا یک یادآوری کوتاه بر مفاهیم مرتبط با این سوال خواهیم داشت. عبارت EXISTS مقدار TRUE برمی گرداند، اگر آرگومان پرسش فرعی، غیر تهی باشد. عبارت NOT EXISTS هنگامی مقدار  TRUE برمی گرداند که آرگومان پرسش فرعی، تهی باشد.

//******************************************************************************************************************************************//

حل سوال:

اگر فرض کنیم جداول به این صورت مقدار دهی شده باشند، همان طور که در گزینه ها مشاهده می کنیم:

در گزینه ی ۱، برای قسمت A ،NOT EXISTS و برای B  ،EXISTS ذکر شده است. با گذاشتن EXISTS در B، لیست عرضه کنندگانی را به دست می آوریم که حداقل یک محصول را تولید کرده اند. به طور مثال، اگر این عبارت را بر روی نمونه داده های زیر از جدول catalog اعمال کنیم، با توجه به این که تمامی عرضه کنندگان در جدول catalog حداقل یک قطعه را عرضه کرده اند، بنابراین تمامی سطرها از جدول supplier بازگردانده می شود. با قرار گرفتن NOT EXISTS در، A  Query لیست قطعاتی را به ما می دهد که توسط هیچ تولید کننده ای تولید نشده است. بنابراین با توجه به مقادیر جدول catalog، تنها قطعه با شماره ی ۹۰۰ از جدول parts بازگردانده خواهد شد. بنابراین گزینه ی ۱ پاسخ سوال نخواهد بود.

در گزینه ی ۲ ، با قرار گرفتن EXISTS درقسمت A و B، لیست قطعاتی به دست خواهد آمد که توسط حداقل ۱ تولید کننده، تولید شده است. بنابراین، Query با قرار گرفتن EXISTS در A، سطرهایی از جدول parts را بر می گرداند که قطعات موجود در آن، حداقل توسط ۱ تولید کننده، تولید شده باشد. بنابراین گزینه ی ۲ نیز جواب سوال نخواهد بود.

در گزینه ی ۳ ، این بار برای قسمت A ، EXISTS و برای B ،NOT EXISTS ذکر شده است. با گذاشتن NOT EXISTS در B، لیست عرضه کنندگانی را به دست می آوریم که حداقل ۱ محصول را تولید نکرده اند. به طور مثال، اگر این عبارت را بر روی نمونه داده های زیر از جدول catalog و suppliers اعمال کنیم، با توجه به این که هیچ یک از عرضه کنندگان در جدول catalog، تمامی قطعات را تولید نکرده اند، تمامی سطر های suppliers برگردانده می شود. بنابراین با قرار گرفتن EXISTS در A، نتیجه ی اجرای پرس وجو، لیست قطعاتی را به ما می دهد که توسط حداقل یک تولید کننده تولید نشده است. توجه کنید، همان گونه که مشخص است قطعه ی ۹۰۰ توسط هیچ تولید کننده ای تولید نشده و به همین دلیل در جواب آورده شده است. پس می توان نتیجه گرفت گه گزینه ی ۳ پاسخ صحیح این سوال می باشد.

در گزینه ی ۴ ، با قرار گرفتن NOT EXISTS درقسمت A و B، لیست قطعاتی به دست خواهد آمد که توسط تمامی تولید کنندگان، تولید شده است و با توجه به نمونه داده های مورد استفاده، تنها قطعه ۱۰۰ توسط تمامی تولید کنندگان تولید شده است. بنابراین گزینه ی ۴ هم جواب این سوال نیست.

//******************************************************************************************************************************************//

پاسخ سوال:

و همان طور که گفته شد، گزینه ۳ پاسخ صحیح این سوال خواهد بود.

متن فیلم

نظر خود را ثبت کنید

ایمیل شما به عموم نشان داده نخواهد شد. فیلدهای اجباری با ستاره نشان داده شده است *