100 likes | 227 Views
Data Base پايگاه داده ها. Shahriar Pirnia http://www.pirnia.net. مسائل نمونه. در محیط عملیاتی دانشکده پایگاه داده با رابطه های Lesson (درس) ، Class (کلاس) ، Grade (نمره)، Professor (استاد)، Group (گروه آموزشی)، Student (دانشجو) مفروض است.
E N D
Data Base پايگاه داده ها Shahriar Pirnia http://www.pirnia.net
مسائل نمونه در محیط عملیاتی دانشکده پایگاه داده با رابطه های Lesson (درس) ، Class (کلاس)، Grade(نمره)، Professor(استاد)، Group(گروه آموزشی)،Student(دانشجو) مفروض است. ساختار جداول و یک نمونه ازهر جدول و مفهوم هر رکورد در ذیل آمده است ، همچنین جهت وضوح بیشتر و بیان ارتباطات میان موجودیت ها و مشخص شدن کلیدهای خارجی و کلیدهای اصلی تعاریف جداول نیز در پایین آمده است. راهنمایی : وقتی دانشجو کلاسی را اخذ مینماید در ابتدای ترم به ازای هر کلاسی که اخذ کرده یک رکورد در جدول Grade اضافه می شود که ستون Grade آن null است . پس از پایان ترم نمره دانشجو در ستون Grade درج می شود.
Lesson درس Professor استاد Class کلاس (ارتباط بین موجودیتهای درس و استاد) Group گروه Grade نمره
سوال 1 : مشخصات دانشجویانی را بدهید که با استاد رضا احمدی در نیمسال اول 1382 درس پایگاه داده ها اخذ نموده اند . (صرفا با استفاده از SUBQUERY ) (می دانیم کد شناسایی استاد احمدی 85235 و کد درس پایگاه داده ها 7232 است . SELECT * FROM STUDENT WHERE id IN (SELECT STUDENTID FROM GRADE WHERE CLASSID IN (SELECT ID FROM CLASS WHERE PROFESSORID= '85235' AND LESSONCODE='7232' AND CLASSTERM='1' AND CLASSYEAR='82'))
سوال 2 : QUERY سوال قبل را صرفا با استفاده از JOIN بنویسید . SELECT STUDENT.* FROM STUDENT,GRADE,CLASS WHERE STUDENT.ID= GRADE.STUDENTID AND GRADE.CLASSID= CLASS.ID AND CLASS.PROFESSORID= '85235' AND CLASS.LESSONCODE='7232' AND CLASS.CLASSTERM='1' AND CLASS.CLASSYEAR='82'
سوال 3 : مشخصات کلاسهای گروه کامپیوتر را از سیستم حذف نمایید. (راهنمایی : می دانیم کد گروه کامپیوتر 11 است . ضمنا توجه کنید اساتید گروه کامپیوتر ممکن است دروسی از گروههای دیگر مانند دروس علوم پایه را نیز تدریس کنند.) DELETE FROM CLASS WHERE LESSONCODE IN (SELECT LESSONCODE FROM LESSON WHERE GROUPCODE='11')
سوال 4 : لیست متشکل از کد هر درس و تعداد کلاسهای آن درس در نیمسال اول 1382 را بدهید . SELECT LESSONCODE,COUNT(*) AS NUMBER روش اول : FROM CLASS GROUP BY LESSONCODE, CLASSYEAR, CLASSTERM HAVING CLASSYEAR=82 AND CLASSTERM=1 SELECT LESSONCODE,COUNT(*) AS NUMBERروش دوم : FROM CLASS WHERE CLASSYEAR=82 AND CLASSTERM=1 GROUP BY LESSONCODE
سوال 5 : در مورد کلاس با کد شناسایی 101 ، کد شناسایی استاد اشتباها 93522 درج شده . کد شناسایی استاد آن کلاس را به 85243 اصلاح نمایید . UPDATE CLASS SET PROFESSORID=85243 WHERE ID=101
سوال 6 : صرفا با استفاده از EXISTS یا NOT EXISTS مشخصات اساتیدی را بدهید که در نیمسال اول 1382 حداقل یک درس را تدریس نموده اند . SELECT PROFESSOR.* FROM PROFESSOR WHERE EXISTS (SELECT * FROM CLASS WHERE PROFESSOR.ID=CLASS.PROFESSORID AND CLASS.CLASSYEAR=82 AND CLASS.CLASSTERM=1)