ProjectPhase1.pdf

‫به نام خدا‬
‫شرح پروژه فاز اول درس پایگاه دادهها‬
‫در این پروژه هدف تولید یک سیستم پایگاه دادهها بهصورت اولیه و با حداقل امکانات است‪ .‬پایگاه داده ذکرشده بهصورت تک کاربره کار میکند‬
‫و درخواستهای کاربر را از ورودی استاندارد میخواند و پاسخهای مربوطه را در خروجی استاندارد چاپ میکند‪ .‬پایگاه داده بهصورت خط به‬
‫خط از کاربر ورودی گرفته و پس از دریافت ورودی خروجی را چاپ میکند‪ .‬برای پیادهسازی این پروژه از باید زبان ‪ Java‬استفاده کنید و شرح‬
‫مشخصات پروژه را با دقت مطالعه کنید‪ .‬با توجه به اینکه ارزیابی پروژه شما بهصورت کامپیوتری انجام میشود‪ ،‬باید دقیقاً استانداردها عمل شده‬
‫و خروجیها درست مانند خروجی ذکرشده باشد‪ .‬پایگاه دادههای تولیدشده محتویات دادهای را بر روی حافظه اصلی ذخیره میکند و بههیچوجه‬
‫هیچ فایلی در سیستم تولید نمیکند‪.‬‬
‫در فاز اول هر گروه پایگاه دادههای خود را با امکانات گفتهشده تولید میکند و در فازهای بعدی همان برنامه تکمیل میشود و امکانات جدید به‬
‫آن اضافه میشود‪ .‬توصیه میشود برای اینکه در فازهای بعدی راحتتر باشید طراحی خوبی برای برنامه خودتان در نظر بگیرید‪.‬‬
‫مشخصات فنی‬
‫پایگاه دادههای شما از دو نوع فیلد در جدولها پشتیبانی میکند‪ .‬که مدل عددی و مدل رشتهای است‪ .‬مدل عددی یک عدد حداکثر ‪ 61‬رقمی‬
‫را مدل میکند و مدل رشتهای یکرشته از کاراکترهای ‪ ASCII‬را نمایش میدهد‪.‬‬
‫دستورهایی که باید پشتیبانی شود بهصورت زیر است‪.‬‬
‫دستور ‪: CREATE TABLE‬‬
‫این دستور برای معرفی جدول جدید به پایگاه دادهها استفاده میشود و فرمت زیر را دارد‪ .‬در این دستور جدولی بانام مشخص و ستونهای‬
‫مشخص در پایگاه دادهها ساخته میشود‪.‬‬
‫;)‪CREATE TABLE TABLE_NAME ( COLUMN_NAME1 DATA_TYPE,COLUMN_NAME2 DATA_TYPE,....‬‬
‫‪TABLE_NAME‬‬
‫نام جدول حداکثر ‪ 621‬حرف بهصورت ‪ASCII‬‬
‫‪COLUMN_NAME‬‬
‫نام ستون حداکثر ‪ 621‬حرف بهصورت ‪ASCII‬‬
‫‪DATA_TYPE‬‬
‫‪ INT‬یا ‪ ( VARCHAR‬به معنای عددی و یا رشتهای )‬
‫حداکثر ‪ 22‬عدد‬
‫تعداد ستونها‬
‫خروجی‬
‫مثال‬
‫خروجی مثال‬
‫‪TABLE CREATED‬‬
‫;)‪CREATE TABLE STUDENT (ID INT,FNAME VARCHAR,LNAME VARCHAR‬‬
‫‪TABLE CREATED‬‬
‫دستور ‪: CREATE INDEX‬‬
‫این دستور برای تولید شاخص برای یک ستون یک جدول استفاده میشود‪.‬‬
‫‪TABLE_NAME‬‬
‫‪COLUMN_NAME‬‬
‫‪INDEX_NAME‬‬
‫خروجی‬
‫)‪CREATE INDEX INDEX_NAME ON TABLE_NAME (COLUMN_NAME‬‬
‫نام جدول موجود در پایگاه داده‬
‫نام ستون موجود در جدول‬
‫نام شاخص‬
‫‪INDEX CREATED‬‬
‫;)‪CREATE INDEX STIDINDEX ON STUDENT (ID‬‬
‫مثال‬
‫‪INDEX CREATED‬‬
‫خروجی مثال‬
‫دستور ‪:INSERT‬‬
‫این دستور برای اضافه کردن رکورد به جدولها استفاده میشود‪ .‬نام جدول و مقادیر رکورد باید در دستور وارد شود‪.‬‬
‫‪TABLE_NAME‬‬
‫‪VALUE‬‬
‫;)‪INSERT INTO TABLE_NAME VALUES (VALUE1,VALUE2,...‬‬
‫نام جدول قبالً معرفیشده حداکثر ‪ 621‬حرف بهصورت ‪ASCII‬‬
‫مقدار فیلد رکورد بهصورت عددی و یا رشتهای درون ”“ و یا ‪NULL‬‬
‫برابر ستونهای جدول‬
‫خروجی‬
‫‪RECORD INSERTED‬‬
‫تعداد فیلدها‬
‫مثال‬
‫خروجی مثال‬
‫;)‪INSERT INTO STUDENT VALUES ( 90111111,”FOO”,NULL‬‬
‫‪RECORD INSERTED‬‬
‫دستور ‪:UPDATE‬‬
‫این دستور برای تغییر رکوردها در جدولها استفاده میشود‪ .‬ستونی که باید تغییر کند به همراه مقدار جدید مشخص میشود‪ .‬شرط تغییر رکورد‬
‫نیز در انتهای دستور قرار میگیرد‪.‬‬
‫;‪UPDATE TABLE_NAME SET COLUMN=COMPUTE_VALUE WHERE TUPLE_CONDITION‬‬
‫‪TABLE_NAME‬‬
‫نام جدول قبالً معرفیشده حداکثر ‪ 621‬حرف بهصورت ‪ASCII‬‬
‫‪COLUMN‬‬
‫نام ستونی که قرار است متغیرش تغییر کند‬
‫‪COMPUTE_VALUE‬‬
‫مقدار انتخابی ستون با روش مقدار محاسبه شدنی‬
‫‪TUPLE_CONDITION‬‬
‫شرط انتخاب رکورد از جدول‬
‫;‪UPDATE STUDENT SET LNAME=FNAME+ID WHERE TRUE‬‬
‫مثال‬
‫;‪UPDATE STUDENT SET FNAME=”Ali” WHERE ID=90111111‬‬
‫دستور ‪:DELETE‬‬
‫این دستور برای حذف رکوردها از جدولها استفاده میشود‪ .‬رکوردهایی که شرط را دارند از جدول پاک میشوند‪.‬‬
‫‪TABLE_NAME‬‬
‫‪TUPLE_CONDITION‬‬
‫مثال‬
‫;‪DELETE FROM TABLE_NAME WHERE TUPLE_CONDITION‬‬
‫نام جدول قبالً معرفیشده حداکثر ‪ 621‬حرف بهصورت ‪ASCII‬‬
‫شرط انتخاب رکورد از جدول‬
‫;‪DELETE FROM STUDENT WHERE ID=90111111‬‬
‫دستور ‪:SELECT‬‬
‫این دستور برای بازیابی داده از پایگاه دادهها استفاده میشود‪ .‬شرط انتخاب و نام جدول و ستونهای الزم مشخص میشود‪.‬‬
‫;‪SELECT COLUMN_NAME1,COLUMN_NAME2 FROM TABLE_NAME WHERE TUPLE_CONDITION‬‬
‫‪TABLE_NAME‬‬
‫نام جدول قبالً معرفیشده حداکثر ‪ 621‬حرف بهصورت ‪ASCII‬‬
‫‪COLUMN_NAME‬‬
‫نام ستونی که قرار است در جدول خروجی قرار داشته باشد‬
‫‪TUPLE_CONDITION‬‬
‫شرط انتخاب رکورد از جدول‬
‫در خط اول نام ستونها بهصورت با ویرگول جداشده‬
‫خروجی‬
‫در خطهای بعدی در هر خط اطالعات متناظر یک رکورد بهصورت با ویرگول جداشده‪.‬‬
‫مثال‬
‫خروجی مثال‬
‫درصورتیکه رکوردی پیدا نشد ‪NO RESULTS :‬‬
‫;‪SELECT FNAME FROM STUDENT WHERE TRUE‬‬
‫;”‪SELECT ID,FNAME FROM STUDENT WHERE LNAME=”BAR‬‬
‫برای درخواست اول ‪:‬‬
‫‪FNAME‬‬
‫‪Ali‬‬
‫‪Reza‬‬
‫برای درخواست دوم ‪:‬‬
‫‪ID,FNAME‬‬
‫‪90111111,Reza‬‬
‫‪91111111,Ali‬‬
‫شرط رکورد ( ‪: ) TUPLE CONDITION‬‬
‫شرط رکورد در بعضی از دستورات باال است و در غالب یک گزاره است این گزاره برای بعضی از رکوردهای یک جدول درست است و برای بقیه‬
‫غلط است‪ .‬اگر شرط برای یک رکورد درست باشد آن رکورد انتخاب میشود‪ .‬در جدول زیر شرطها مشخصشدهاند‪.‬‬
‫شرط رکورد‬
‫توضیحات‬
‫‪TRUE‬‬
‫برای همه رکوردها درست است‪.‬‬
‫‪FALSE‬‬
‫برای همه رکوردها غلط است‪.‬‬
‫‪COLNAME=COMPUTE_VALUE‬‬
‫درصورتیکه مقدار ستون برابر با مقدار محاسبه شدنی باشد درست است‬
‫‪COLNAME<COMPUTE_VALUE‬‬
‫در صورت کوچکتر بودن مقدار ستون از مقدار محاسبه شدنی درست‬
‫است‪.‬‬
‫( برای رشتهای با استفاده از ترتیب دیکشنری )‬
‫‪COLNAME>COMPUTE_VALUE‬‬
‫مانند باال ( عملگر بزرگتر )‬
‫‪COLNAME<=COMPUTE_VALUE‬‬
‫مانند باال ( عملگر کوچکتر و یا مساوی )‬
‫‪COLNAME<=COMPUTE_VALUE‬‬
‫مانند باال ( عملگر کوچکتر و یا مساوی )‬
‫)‪(TUPLE CONDITION) AND (TUPLE CONDITION‬‬
‫در صورت درست بودن هر دو شرط درست است‪.‬‬
‫)‪(TUPLE CONDITION) OR (TUPLE CONDITION‬‬
‫در صورت درست بودن حداقل یکی از دو شرط درست است‬
‫‪NOT TUPLE CONDITION‬‬
‫در صورت درست نبودن شرط درست است‪.‬‬
‫مثال ‪:‬‬
‫)‪(A=2) AND (B=4‬‬
‫)‪(NOT A=2) OR (B>5‬‬
‫)‪((B=1) OR (B=2)) AND (NOT A=1‬‬
‫‪A<A+B‬‬
‫مقدار محاسبه شدنی ‪: COMPUTE_VALUE‬‬
‫مقدار محاسبه شدنی یک مقدار است که برحسب مقادیر فیلدهای یک رکورد به دست میآید‪ .‬برای توضیحات بیشتر به توضیحات زیر توجه‬
‫کنید‪.‬‬
‫مقدار محاسبه شدنی‬
‫توضیح‬
‫مثال‬
‫مقدار ثابت‬
‫مقدار ثابت بهصورت عددی و یا رشتهای‬
‫‪ 3‬یا ”‪“Ali‬‬
‫مقدار یک فیلد‬
‫مقدار فیلد یک رکورد‬
‫‪FNAME‬‬
‫مقدار عملگر دار‬
‫عملگر مابین دو مقدار محاسبه شدنی‬
‫‪ID+2‬‬
‫‪FNAME+” “+LNAME‬‬
‫(جمع رشته و عدد رشته است )‬
‫(جمع دو رشته به معنای الصاق است)‬
‫عملگرهای عددی‬
‫‪ * ، - ، +‬و تقسیم ( بدون اولویت از چپ به‬
‫راست )‬
‫عملگر رشتهای‬
‫‪+‬‬
‫‪2+2*4  8‬‬
‫‪1+1+2/2 4‬‬
‫”‪“Ali” + “Reza”  “AliReza‬‬
‫توضیحات تکمیلی‬
‫پروژهها بر روی یک سیستم ‪ 16‬بیتی مجهز به نسخه ‪ 1.8‬جاوا تست خواهد شد پس حتماً از صحت اجرای برنامه خود بر روی این محیط‬
‫اطمینان حاصل نمایید‪.‬‬
‫نکته مهم ‪ :‬میتوانید فرض کنید که همه دستوراتی که به سیستم داده می شوند درست هستند و ایرادی در دستورات وجود ندارد‪.‬‬
‫(گروه های پنج نفره باید خطا در دستورات ورودی را تشخیص دهند و خطای درست را چاپ کنند)‬
‫زمان اجرای برنامه شما باید زمان معقولی باشد و نباید برای پردازش یک درخواست زمان زیادی طول بکشد‪ .‬مخصوصاً بر روی شاخصها دقت‬
‫کنید جستجو شرط رکوردی بر روی رکوردهایی که شاخص دارند باید از )‪ O(log n‬باشد‪.‬‬
‫زمان نهایی ارسال پروژهها روز ‪ 61‬آبان ‪ 46‬است و ارسال پس از ساعت ‪ 62‬شب شامل کسر نمره خواهد شد‪ .‬برای ارسال پروژه دو فایل‬
‫‪ OurSQL.jar‬و پوشه ‪ src‬که کد برنامه در آن قرار دارد را بهصورت فشرده تحت فرمت ‪ zip‬بانام ‪ DBProjectP1_GROUPNO#‬به ایمیل‬
‫‪ [email protected]‬ارسال نمایید‪ .‬این ایمیل با عنوان نام فایل زیپ و متن خالی باشد‪.‬‬
‫با آرزوی موفقیت‬
‫بهین موالیی‬