No Slide Title

Download Report

Transcript No Slide Title

‫به نام خدا‬
‫پایگاه داده ها‬
‫بخش اول‪ :‬مفاهیم پایگاه داده ها‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫مفاهیم اولیه‬
‫سیستم های فایل و پایگاه داده ها و مقایسه آنها‬
‫اجزاء یک سیستم های پایگاه داده‬
‫وظایف سیستم های مدیریت پایگاه داده ها‬
‫معماری سیستم های پایگاه داده ها‬
‫مدلهای پایگاه داده‬
‫– مدل سلسله مراتبی‬
‫– مدل شبکه ای‬
‫– مدل رابطه ای‬
‫بخش اول‪ :‬مفاهیم پایگاه داده ها‬
‫• دادههاي توصيفي (‪)Attribute Data‬‬
‫دادههاي هستند كه اطالعاتي راجع به خصوصيات و ويژگيهاي عوارض را در اختيار‬
‫ما قرار ميدهند‪.‬‬
‫• پايگاه داده (‪)Database‬‬
‫مجموعه ساختار يافتهاي از دادههاست كه به صورت منسجم براي كاربردهاي‬
‫مختلف در كنار يكديگر ذخيره شدهاند و فرق آن با ‪ GIS‬اينست كه پايگاه داده‬
‫قابليت تجزيه و تحليل ندارد‪.‬‬
‫در زبان عاميانه پايگاه داده براي دادههاي توصيفي بكار ميرود‪.‬‬
‫• ديد (‪)View‬‬
‫هر نوع نمايش پايگاه داده را يك ‪ View‬ميناميم‪.‬‬
‫بخش اول‪ :‬مفاهیم پایگاه داده ها‬
‫مدل داده (‪)Data Model‬‬
‫• سازمان مفهومي پايگاه دادهها را مدل داده گويند و در واقع روش ي براي اداره دادهها و‬
‫ذخيرهسازي آنها در يك پايگاه داده محسوب ميشود‪.‬‬
‫ركورد‬
‫• نمايانگر اطالعات مربوط به املان خاص ي (‪)Entity- Object- Event- Concept‬‬
‫ميباشد‪.‬‬
‫فيلد‬
‫• يك ركورد به فيلدهاي تقسيم ميشود كه هر كدام از اين فيلدها شامل يك قلم از‬
‫دادهها ميباشند‪.‬‬
‫فيلد كليدي‬
‫• در سيستم ‪ GIS‬هر عارضه داراي يك كد منحصر به فرد است كه به عنوان كد‬
‫ذخيرهسازي عارضه محسوب ميشود و در برنامهنويس ي و پايگاه دادهها از اين كد‬
‫استفاده ميكنند و در واقع هر ركورد به وسيله يك كليد از پايگاه داده بازيابي ميشود‪.‬‬
‫همچنين براي اتصال (‪ )Link‬بين دادههاي توصيفي و مكاني از همين كدها استفاده‬
‫ميشود‪.‬‬
‫بخش اول‪ :‬مفاهیم پایگاه داده ها‬
‫مفاهیم اولیه‬
‫داده‬
‫اطالعات‪:‬‬
‫فایل‪ :‬مجموعه ای از رکوردها‬
‫سیستم فایل‪ :‬مجموعه ای از فایلها‬
‫بخش اول‪ :‬مفاهیم پایگاه داده ها‬
‫مقایسه سیستم فایل و پایگاه داده‬
‫بخش اول‪ :‬مفاهیم پایگاه داده ها‬
‫معایب سیستم های فایل‬
‫•‬
‫•‬
‫•‬
‫•‬
‫نیاز به برنامه نویس ی زیاد و پیچیده‬
‫وابستگی داده ای‪ :‬تغیير سایز یک فیلد‬
‫وابستگی ساختاری‪ :‬فیلد جدید اضافه‪/‬حذف‬
‫افزونگی داده ها‬
‫– هدر رفتن فضای کار و نيروی کار‬
‫– ناسازگاری داده ها‬
‫– بروز انواع ناهنجاری (درج‪-‬حذف‪-‬اصالح)‬
‫• عدم وجود امکانات الزم برای تامين امنیت داده ها‬
‫بخش اول‪ :‬مفاهیم پایگاه داده ها‬
‫مزاياي روش پايگاه داده نسبت به روش پردازش فايل‬
‫• دادهها به طور موثرتري به اشتراك گذاشته ميشوند‬
‫در واقع دادهها با استفاده از ‪ DBMS‬ميتواند بصورت قابل انعطاف ولي كنترل شده به اشتراك گذاشته شوند‪.‬‬
‫• استقالل دادهها‬
‫برنامههاي كاربردي و كاربران از فرم فيزيكي دادههاي ذخيره شده مستقل ميباشند‪.‬‬
‫• دستيابي مستقيم به كاربر‬
‫سيستمهاي پايگاه داده يك واسطه كاربري را ارائه ميدهند‪ .‬به صورتي كه افراد غير برنامهنويس نيز ميتوانند آناليزهاي‬
‫پيشرفته انجام دهند‪.‬‬
‫• كنترل متمركز‬
‫يك ‪ DBMS‬واحد تحت كنترل يك نفر يا گروه ميتواند تضمين نمايند كه استاندارهاي كيفي دادهها برقرار است‪،‬‬
‫محدوديتهاي ايمني اعمال ميشوند و صحت پايگاه دادهها باقي ميماند‪.‬‬
‫• كنترل افزونگي‬
‫در محيط پردازش فايل‪ ،‬فايلهاي جدا از هم براي هر برنامه كاربردي استفاده ميشوند كه اين ميتواند افزونگي قابل‬
‫مالحظهاي را در دادهها بوجود آورد‪ .‬اما افزونگي مستلزم صرف هزينه و حجم ميباشد و در مقابل به روزآوري‬
‫دادهها ضعيف عمل ميكند‪.‬‬
‫• اجراي آسانتر برنامههاي كاربردي جديد در پايگاه داده‬
‫بخش اول‪ :‬مفاهیم پایگاه داده ها‬
‫معايب پايگاه دادهها‬
‫• نرمافزار و سختافزار پايگاه داده گران هستند‪.‬‬
‫• در تئوري هر چه پيچيدگي سيستم بيشتر باشد درصد خرابي سيستم نيز بيشتر‬
‫شده و رفع خرابي نيز مشكل ميشود و ميدانيم كه سيستم پايگاه دادهها پيچيدهتر‬
‫از سيستم پردازش فايل است‪ .‬عملياتي نظير ‪ Recovery‬و ‪ Backup‬براي‬
‫جلوگيري از خرابي ‪ DBMS‬بكار برده شدهاند‪.‬‬
‫بخش اول‪ :‬مفاهیم پایگاه داده ها‬
‫اجزاء سیستم های پایگاه داده ها‬
‫• سخت افزار‬
‫– شامل کلیه وسایل فيزیکی که برای ورود و خروج و ذخيره اطالعات‬
‫• نرم افزار‬
‫– سیستم عامل‬
‫– ‪SQL server-Oracle-Informix-Access :DBMS‬‬
‫– برنامه های کاربردی‪ :‬توسط برنامه نویسان ایجاد (برنامه های حسابداری) که با پایگاه داده ها ارتباط‬
‫برقرار می کنند‪.‬‬
‫• کاربران‬
‫–‬
‫–‬
‫–‬
‫–‬
‫–‬
‫مدیران سیستم‪ :‬بر عملکرد کلی سیستم پایگاه داده ها نظارت دارند‪.‬‬
‫مدیران پایگاه داده‪ :‬استفاده بهینه از پایگاه داده را مورد بررس ی قرار می دهند‪( .‬خط مش ی کلی)‬
‫طراحان پایگاه داده‪ :‬معماران پایگاه داده‪ -‬پایگاه داده را بر اساس نظرات مدیران اعمال می کنند‪.‬‬
‫برنامه نویسان‪ :‬برنامه های کاربردی الزم برای پایگاه داده را ایجاد می کنند‪.‬‬
‫کاربران نهایی‬
‫• پروسیجرها‬
‫– کلیه دستوراتی که برای اجرای قوانين حاکم بر سیستم نوشته می شوند‪.‬‬
‫• داده ها‬
‫بخش اول‪ :‬مفاهیم پایگاه داده ها‬
‫سيستمهاي مديريت پايگاه داده‬
‫(‪)Data Base Management System‬‬
‫يك سيستم مديريت پايگاه داده تركيبي از يك مجموعه برنامهها كه‬
‫دادههاي درون پايگاه داده را اداره و نگهداري ميكند‪ .‬در حقيقت ‪DBMS‬‬
‫به عنوان يك كنترل مركزي روي تمام فعل و انفعاالت بين پايگاه داده و‬
‫برنامههاي كاربردي كه به نوبه خود با كاربر در تقابل است عمل ميكند‪.‬‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫بخش اول‪ :‬مفاهیم پایگاه داده ها‬
‫وظایف سیستم های مدیریت پایگاه داده ها‬
‫تامين استقالل داده های و ساختاری‬
‫– دیکشنری داده (مشخصات تمام موجودیت ها و روابط بين آنها)‬
‫مدیریت ذخيره سازی داده ها‬
‫تبدیل فرمت داده ها میان محیط فيزیکی و منطقی‬
‫مدیریت امنیت‬
‫– هر کاربر تنها در حوزه اختیارات خود به داده ها دسترس ی داشته باشد‪.‬‬
‫تامين امکان دسترس ی مشترک چندین کاربر به پایگاه داده ها‬
‫مدیریت تهیه نسخه پشتیبان و ترمیم پایگاه داده ها‬
‫تامين جامعیت داده ای‬
‫– اعتبار داده ها‪ :‬اطالعات نامعتبر در پایگاه داده ها وارد نمی شود‪.‬‬
‫– سازگاری داده ها‪ :‬اگر اطالعات در جاهای مختلفی ذخيره شوند‪ ،‬مقدار همه آنها یکسان باشد‪.‬‬
‫تامين زبان پرس و جو و ابزارهای مدیریت پایگاه داده ها‬
‫تامين امکان دسترس ی به پایگاه داده ها از طرق مختلف‬
‫بخش اول‪ :‬مفاهیم پایگاه داده ها‬
‫معماری سیستم های پایگاه داده ها‬
‫• الیه فيزیکی‬
‫– محیط فيزیکی که داده ها در آن ذخيره می شوند‪.‬‬
‫• الیه ادراکی‬
‫– دیدی که طراح پایگاه داده ها نسبت به کلیه موجودیتها و ارتباط میان آنها‬
‫دارد‪.‬‬
‫• الیه خارجی‬
‫– دیدی است که هر کاربر نسبت به اطالعات ذخيره شده دارد‪.‬‬
‫– این دید لزوما با دید ادراکی یکی نیست چرا که هر کاربر می تواند از نقطه‬
‫نظر های متفاوت به داده ها نگاه کند‪.‬‬
‫بخش اول‪ :‬مفاهیم پایگاه داده ها‬
‫زبان برنامه های کاربردی پایگاه داده ها‬
‫• زبان فرعی داده ای ‪Data Sub Language‬‬
‫– هر کاربر یا برنامه کاربردی برای ارتباط با پایگاه داده ها از یک زبان فرعی داده ای استفاده می‬
‫کند‪.‬‬
‫‪ -‬معرفترین ‪ SQL‬که با تمام ‪ DBMS‬ها کار می کند‪.‬‬
‫‪ -‬زبانهای فرعی به سه قسمت تقسیم می شوند‪:‬‬
‫‪Data Definition Language ‬‬
‫– برای تعریف ساختار داده ها و ایندکس ها استفاده می شود‪.‬‬
‫‪Data Manipulation Language ‬‬
‫– برای بازیابی‪ ،‬حذف‪ ،‬درج و اصالح اطالعات جداول استفاده می شود‪.‬‬
‫‪Data Control Language ‬‬
‫– برای مدیریت مجوزهای دسترس ی به پایگاه داده ها استفاده می شود‪.‬‬
‫• زبان ميزبان‪Host Language‬‬
‫‪ ‬زبان برنامه نویس ی مانند دلفی – ویژوال ‪ – c‬ویژوال بیسیک و غيره‬
‫– زبانهای فرعی فاقد امکانات الزم برای تعریف متغيرها‪ ،‬کنترل ظاهر برنامه‪ ،‬ایجاد حلقه ها‪،‬‬
‫تست کردن شرطها و غيره را ندارند‪.‬‬
‫بخش دوم‪ :‬پایگاه داده های رابطه ای‬
‫• مفاهیم پایگاه داده های رابطه ای‬
‫• قوانين حاکم بر پایگاه داده ای رابطه ای‬
‫بخش دوم‪ :‬پایگاه داده های رابطه ای‬
‫مفاهیم پایگاه داده های رابطه ای‬
‫• جدول یا رابطه‪Table or Relation‬‬
‫– ساختار دوبعدی شما سطر و ستونهاست‬
‫– برای هر نوع موجودیت یا ارتباط میان موجودیتها یک جدول در نظر گرفته می شود‪.‬‬
‫• ویژگی‪Attribute‬‬
‫– هر یک از ستونهای یک جدول نمایانگر یکی از ویژگیهای نوع موجودیت است‪.‬‬
‫• تاپل ‪Tupple‬‬
‫– هر سطر جدول را تاپل گویند‪.‬‬
‫• بدنه‪Body‬‬
‫– به مجموعه تاپل های یک جدول‬
‫بخش دوم‪ :‬پایگاه داده های رابطه ای‬
‫مفاهیم پایگاه داده های رابطه ای (ادامه)‬
‫• مجموعه عنوان‪Header‬‬
‫– مجموعه ویژگیهای یک جدول‬
‫• دامنه یک ویژگی‪Domain‬‬
‫– مجموعه مقادیر مجاز برای یک ویژگی به عنوان مثال‬
‫‪ o‬حداکثر طول کاراکتر یک فیلد‬
‫‪ – o‬بازه خاص ی مثال برای فیلد سن‬
‫• درجه یک رابطه‪Relation Degree‬‬
‫– تعداد ویژگیهای یک جدول یا رابطه‬
‫• کاردینالیتی یک رابطه‪Relation Cardinality‬‬
‫– تعداد تاپلهای یک جدول در هر لحظه از حیات آن رابطه یا جدول‬
‫بخش دوم‪ :‬پایگاه داده های رابطه ای‬
‫مفاهیم پایگاه داده های رابطه ای (ادامه)‬
‫• وابستگی تابعی‪Functional Dependence‬‬
‫– در یک جدول ویژگی ‪ B‬به ویژگی ‪ A‬وابستگی تابعی دارد اگر به ازاء هر مقدار برای ویژگی ‪ A‬حداکثر یک مقدار برای‬
‫ویژگی ‪ B‬وجود داشته باشد‪.‬‬
‫نام دانشجو ‪ -‬نام دوره ‪ ‬شماره دانشجویی‬
‫– مثال ‪:‬‬
‫• سوپر کلید‪Super Key‬‬
‫– سوپر کلید مجموعه ای از یک یا چند ویژگی است که سایر ویژگیهای جدول به آن وابستگی تابعی دارند‪.‬‬
‫•‬
‫•‬
‫•‬
‫•‬
‫شماره دانشجویی‬
‫نام دوره ‪ -‬شماره دانشجویی‬
‫نام دانشجو ‪ -‬شماره دانشجویی‬
‫نام دانشجو ‪ -‬نام دوره ‪ -‬شماره دانشجویی‬
‫• وابستگی تابعی کامل)‪Full Functional Dependence(FFD‬‬
‫– در یک جدول ویژگی ‪ B‬به ویژگی ‪ A‬وابستگی کامل دارد اگر‪:‬‬
‫‪ ‬اوال‪ :‬ویژگی ‪ B‬به ویژگی ‪ A‬وابستگی تابعی داشته باشد‬
‫‪ ‬ثانیا‪ :‬به هیچ جزئی از آن وابستگی تابعی نداشته باشد‬
‫‪ ‬نام دوره ‪ ‬شماره دانشجویی (وابستگی تابعی کامل)‬
‫(وابستگی تابعی ندارد)‬
‫‪ ‬نام دانشجو ‪ ‬نام دوره‬
‫‪ ‬نام دانشجو ‪ ‬نام دوره ‪ -‬شماره دانشجویی (وابستگی تابعی) – وابستگی جزئی‬
‫بخش دوم‪ :‬پایگاه داده های رابطه ای‬
‫مفاهیم پایگاه داده های رابطه ای (ادامه)‬
‫• کلید کاندیدا‪Candidate Key‬‬
‫– سوپرکلیدی است که قابل خالصه شدن نباشد‪.‬‬
‫– یا مجموعه ای از یک یا چند ویژگی است که سایر ویژگیهای جدول به آن وابستگی تابعی کامل دارند‪.‬‬
‫• کلید اصلی‪Primary Key‬‬
‫– مجموعه ای از یک یا چند ویژگی است که برای شناسائی و تمایز میان موجودیتهای یک دسته مورد استفاده‬
‫قرار می گيرد‪.‬‬
‫– عموما یکی از کلیدهای کاندیدا را به عنوان کلید اصلی انتخاب می کنند‪.‬‬
‫– مثال کد ملی – شماره دانشجویی – کدپستی‬
‫• کلید ثانویه‪Secondary Key‬‬
‫– مجموعه ای از یک یا چند ویژگی است که در صورت عدم دسترس ی به مقدار کلید اصلی‪ ،‬از مقدار آن برای‬
‫تسریع جستجوی اطالعات یک موجودیت خاص استفاده می شود‪ .‬اگر چه ممکن است مقادیر این ویژگی یک‬
‫موجودیت منحصر به فرد را مشخص نکنند ولی در یافتن آن کمک می کنند‪.‬‬
‫• کلید خارجی‪Foreign Key‬‬
‫– اگر ویژگی ‪ A‬بين جداول ‪1‬و ‪ 2‬مشترک و در جدول ‪ 1‬کلید اصلی باشد آنگاه ویژگی ‪ A‬در جدول ‪ ،2‬کلید خارجی‬
‫نسبت به جدول ‪ 1‬خواهد بود‪.‬‬
‫بخش دوم‪ :‬پایگاه داده های رابطه ای‬
‫• کلید اصلی‬
‫–‬
‫–‬
‫–‬
‫–‬
‫‪City#‬‬
‫‪St#‬‬
‫‪Crs#‬‬
‫‪St#+crs#+year+term‬‬
‫• کلید خارجی‬
‫– از آنجا که ویژگی ‪ city#‬بين دو جدول ‪ st‬و ‪ city‬مشترک و در جدول ‪ city‬کلید اصلی است‪،‬‬
‫بنابراین ویژگی ‪ city#‬در جدول ‪ st‬کلید خارجی نسبت به جدول ‪ city‬می باشد‪.‬‬
‫بخش دوم‪ :‬پایگاه داده های رابطه ای‬
‫قوانين حاکم بر پایگاه داده ای رابطه ای‬
‫قوانين جامعیت داده ای‪Data Integrity Rules‬‬
‫برای حفظ جامعیت داده ای در پایگاه داده های رابطه ای دو قانون زیر تعریف شده‬
‫اند‪:‬‬
‫• قانون ‪ :1‬قانون جامعیت موجودیت‪Entity Integrity Rule‬‬
‫– هیچ جزء از کلید اصلی در هیچ یک از تاپلها نمی تواند تهی باشد‪.‬‬
‫– مقدار کلید اصلی در تاپلها نمی تواند تکراری باشد‪.‬‬
‫• قانون ‪ :2‬قانون جامعیت ارجاعی‪Referential Integrity Rule‬‬
‫– مقدار کلید خارجی در یک جدول می تواند تهی باشد‪ .‬مشروط بر آنکه جزئی از کلید اصلی‬
‫نباشد‪.‬‬
‫– ولی اگر تهی نباشد‪ ،‬بایستی با یکی از مقادیر کلید اصلی در جدول اصلی مساوی باشد‪.‬‬
‫– به عنوان مثال‪ :‬در جدول ‪ st‬می توان دانشجویی را درج کرد که شهر سکونت وی مشخص‬
‫نباشد (تهی باشد)‪ .‬ولی نمی توان دانشجویی را درج کرد که شهر سکونت وی ‪ 07‬باشد چرا که‬
‫در جدول اصلی یعنی جدول ‪ city‬شهری با این کد وجود ندارد‪.‬‬
‫بخش سوم‪ :‬جبر رابطه ای‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫عملگرهای یکتایی (انتخاب‪-‬پرتو‪-‬بسط‪-‬خالصه سازی یا گروه‬
‫بندی)‬
‫عملگرهای دوتایی (اجتماع‪ ،‬اشتراک و تفاضل)‬
‫عملگرهای ضرب‬
‫عملگرهای پیوند (پیوند شرطی‪-‬پیوند طبیعی‪-‬شبه پیوند‪-‬پیوند‬
‫خارجی(چپ‪-‬راست‪-‬کامل))‬
‫عملگر تقسیم‬
‫عملگر جایگزینی‬
‫بخش سوم‪ :‬جبر رابطه ای‬
‫‪ ‬مجموعه ای از عملگرها و قوانینی است که برای پردازش رابطه ها یا جداول بکار می‬
‫روند‪.‬‬
‫‪ ‬در جبر رابطه ای ورودی و خروجی کلیه عملگرها از نوع جدول می باشد‪.‬‬
‫‪ ‬در جبر رابطه ای نيز مانند جبر اعداد‪ ،‬ترتیب انجام عملیات از داخلی ترین پرانتز به‬
‫خارجی ترین پرانتز است‪.‬‬
‫• عملگرهای یکتایی‪Unary‬‬
‫– ورودی این عملگرها تنها یک جدول است‪.‬‬
‫• عملگرهای دوتایی‪Binary‬‬
‫– روی دو جدول سازگار اعمال می شوند‪.‬‬
‫• عملگرهای ضرب ‪ Product‬و پیوند ‪JOIN‬‬
‫– روی دو جدول دلخواه اعمال می شوند‪.‬‬
‫• عملگر تقسیم‪Divide‬‬
‫– روی دو جدول با شرایط خاص اعمال می شوند‪.‬‬
‫• عملگر جایگزینی‬
‫بخش سوم‪ :‬جبر رابطه ای (عملگرهای یکتایی)‬
‫•‬
‫عملگر انتخاب‬
‫– از این عملگر برای گزینش افقی در یک جدول استفاده می شود‪.‬‬
‫– یا با استفاده از این عملگر می توان تاپلهایی از یک جدول را که دارای شرط بخصوص ی هستند انتخاب کرد‪.‬‬
‫– )‪Select (Table) Where (Condition‬‬
‫•‬
‫عملگر پرتو‬
‫– از این عملگر برای گزینش عمودی در یک جدول استفاده می شود‪.‬‬
‫– یا با استفاده از این عملگر می توان ستونهایی مورد نظر از یک جدول را انتخاب کرد‪.‬‬
‫– )‪Project (Table) Over (Columns‬‬
‫•‬
‫عملگر بسط‬
‫– از این عملگر برای اضافه کردن یک یا چند ستون یه یک جدول استفاده می شود‪.‬‬
‫– مقادیر این ستونها براساس مقادیر دیگر ستونها محاسبه می شود‪.‬‬
‫– )‪Extend (Table) Add (Formula) as (New Column‬‬
‫•‬
‫عملگر خالصه سازی یا گروه بندی‬
‫– از این عملگر می توان تاپلهای یک جدول را بر اساس مقادیر یک یا چند ستون گروه بندی کرد و روی هر گروه به‬
‫صورت مجزا محاسبه ای انجام داد‪.‬‬
‫– توابع ‪SUM,MAX,MIN,AVG,COUNT‬‬
‫– )‪Sum (Table) by(Columns) add sum(Columns ) as (New Column‬‬
Extend SPJ add(qty/1000) as tonQty
Select R Where D>15
Project R over A,D
Sum SPJ by(p#) add sum(qty) as total
‫بخش سوم‪ :‬جبر رابطه ای (عملگرهای دوتایی)‬
‫‪ ‬این عملگرها روی جداول سازگار قابل اعمال هستند‪.‬‬
‫‪ ‬جداول سازگار‪ :‬تعداد ویژگیها و دامنه ویژگیهای متناظر آنها یکسان باشد‪.‬‬
‫‪U‬‬
‫• عملگر اجتماع‪Union‬‬
‫‪ ‬اجتماع دو جدول سازگار جدولی خواهد بود که مجموعه عنوان آن با مجموعه عنوان دو جدول‬
‫یکسان است و بدنه آن شامل تاپلهای هر دو جدول می باشد‪.‬‬
‫‪ ‬عملگر اجتماع دارای خاصیت جابجایی و شرکت پذیری است‪.‬‬
‫• عملگر اشتراک‪Intersect‬‬
‫‪W‬‬
‫‪ ‬اشتراک دو جدول سازگار جدولی خواهد بود که مجموعه عنوان آن با مجموعه عنوان دو جدول‬
‫یکسان است و بدنه آن شامل تاپلهای مشترک بين دو جدول می باشد‪.‬‬
‫‪ ‬عملگر اشتراک دارای خاصیت جابجایی و شرکت پذیری است‪.‬‬
‫• عملگر تفاضل‬
‫‪ ‬تفاضل دو جدول سازگار جدولی خواهد بود که مجموعه عنوان آن با مجموعه عنوان دو جدول‬
‫یکسان است و بدنه آن شامل تاپلهای از جدول اولی است که در جدول دوم وجود ندارد‪.‬‬
‫‪ ‬عملگر تفاضل خاصیت جابجایی و شرکت پذیری ندارد‪.‬‬
‫بخش سوم‪ :‬جبر رابطه ای (عملگر ضرب ‪) Times‬‬
‫• عملگر ضرب ‪‬‬
‫‪o‬‬
‫‪o‬‬
‫‪o‬‬
‫‪o‬‬
‫حاصلضرب دو جدول دلخواه‪ ،‬جدولی خواهد بود شامل ویژگیهای هر دو جدول (حتی‬
‫ویژگیهای تکراری) و تاپلهایی که از ضرب دکارتی تاپلهای دو جدول بدست می آیند‪.‬‬
‫به عبارت دیگر هر یک از تاپلهای یک جدول در کنار هر یک از تاپلهای جدول دیگر قرار‬
‫می گيرند‪.‬‬
‫مثال‪ :‬اگر یک جدول با ‪ 3‬تاپل را در یک جدول دیگر با ‪ 5‬تاپل ضرب کنیم‪ ،‬جدول‬
‫نتیجه شامل ‪ 15‬تاپل می باشد‪.‬‬
‫عملگر ضرب دارای خاصیت جابجایی و شرکت پذیری است‪.‬‬
‫بخش سوم‪ :‬جبر رابطه ای (عملگر پیوند‪) Join‬‬
‫• پیوند شرطی یا تتا‬
‫‪‬‬
‫‪ ‬این عملگر تاپلهایی از حاصلضرب دو جدول را که دارای شرط بخصوص ی هستند‪ ،‬انتخاب می کند‪.‬‬
‫‪ ‬عملگر پیوند شرطی دارای خاصیت جابجایی است ولی شرکت پذیری ندارد‪.‬‬
‫• پیوند طبیعی‬
‫‪‬‬
‫‪ ‬پیوند طبیعی مانند پیوند شرطی است با این تفاوت که در آن هیچ شرطی ذکر نمی شود و شرط آن به‬
‫طور پیش فرض تساوی ویژگیهای مشترک بين دو جدول است‪ .‬همچنين ستونهای تکراری حذف خواهند‬
‫شد‪.‬‬
‫‪ ‬چنانچه بين دو جدول هیچ ویژگی مشترکی وجود نداشته باشد‪ ،‬پیوند طبیعی دو جدول با حاصلضرب دو‬
‫جدول معادل خواهد بود‪ .‬چنانچه کلیه ویژگیهای دو جدول یکسان باشند‪ ،‬پیوند طبیعی دو جدول با‬
‫اشتراک دو جدول معادل خواهد بود‪.‬‬
‫‪ ‬عملگر پیوند طبیعی دارای خاصیت جابجایی و شرکت پذیری است‪.‬‬
‫• شبه پیوند‬
‫‪SJ‬‬
‫‪ ‬عين پیوند طبیعی بوده با این تفاوت که در نهایت تنها ستونهای جدول اول انتخاب می شود‪.‬‬
‫‪ ‬عملگر شبه پیوند خاصیت جابجایی و شرکت پذیری ندارد‪.‬‬
‫• پیوند خارجی (چپ‪-‬راست‪-‬کامل)‬
‫پیوند شرطی‬
‫‪R1 Join R2‬‬
‫شبه پیوند‬
‫‪R1 SJ R2‬‬
‫پیوند طبیعی‬
‫‪R1 Join R2‬‬
‫بخش سوم‪ :‬جبر رابطه ای (عملگر پیوند‪) Join‬ادامه‬
‫• عملگرهای پیوند خارجی‬
‫• عملگر پیوند خارجی چپ‬
‫‪L-O-Join‬‬
‫• پیوند خارجی چپ نوعی پیوند طبیعی است که در آن عالوه بر تاپلهای پیوند شدنی از دو جدول‪،‬‬
‫تاپلهای پیوند نشدنی از جدول چپ نيز با مقادیر ‪ Null‬پیوند شده و در نتیجه وارد می شوند‪.‬‬
‫• عملگر پیوند خارجی راست‬
‫‪R-O-Join‬‬
‫• پیوند خارجی راست نوعی پیوند طبیعی است که در آن عالوه بر تاپلهای پیوند شدنی از دو جدول‪،‬‬
‫تاپلهای پیوند نشدنی از جدول راست نيز با مقادیر ‪ Null‬پیوند شده و در نتیجه وارد می شوند‪.‬‬
‫• عملگر پیوند خارجی کامل‬
‫‪F-O-Join‬‬
‫• پیوند خارجی کامل نوعی پیوند طبیعی است که در آن عالوه بر تاپلهای پیوند شدنی از دو جدول‪،‬‬
‫تاپلهای پیوند نشدنی از هر دو جدول نيز با مقادیر ‪ Null‬پیوند شده و در نتیجه وارد می شوند‪.‬‬
‫عملگر پیوند خارجی چپ‬
‫عملگر پیوند خارجی راست‬
‫عملگر پیوند خارجی کامل‬
‫بخش سوم‪ :‬جبر رابطه ای (عملگر تقسیم و جایگزینی)‬
‫• عملگر تقسیم‬
‫‪or Divide by‬‬
‫‪ ‬تنها در صورتی می توان جدول ‪ T1‬را بر جدول‪ T2‬تقسیم کرد که مجموعه عنوان‬
‫جدول ‪ T2‬زیر مجموعه ای از مجموعه عنوان جدول ‪ T1‬باشد‪ .‬نتیجه شامل‬
‫ویژگیهایی از جدول ‪ T1‬خواهد بود که در جدول ‪ T2‬وجود ندارند‪.‬‬
‫=‬
‫•‬
‫• عملگر جایگزینی‬
‫‪‬‬
‫‪or giving‬‬
‫• با استفاده از عملگر جایگزینی می توان نتیجه یک عملیات ا در یک جدول ذخيره کرد و‬
‫در عملیات بعدی از آن استفاده کرد‪.‬‬
‫بخش چهارم‪ :‬زبان پرس و جوی ساخت یافته‬
‫‪Structured Query Language‬‬
‫‪‬زبان داده اي پايگاه داده هاي رابطه اي براي تعريف‪ ،‬كنترل و‬
‫عمليات روي داده‬
‫‪‬زبانهای فرعی به سه قسمت اصلی تقسیم می شوند‪:‬‬
‫• دستورات تعریف داده ها‬
‫• دستورات دستکاری داده ها‬
‫• دستورات کنترل داده ها‬
‫ دستورات تعريف داده ها‬-1
Data Definition Language (DDL)
:‫مثال‬
Create Database
Create Table
Alter Table
Drop Table
Create Index
Alter Index
Drop Index
‫ دستورات عمليات روي داده ها‬-2
Data Manipulation Language (DML)
:‫مثال‬
Select
Insert
Delete
Update
Insert to
‫ دستورات كنترل داده ها‬-3
Data Control Language (DCL)
:‫مثال‬
Grant Delete, UPDATE, INSERT
ON OBJECT TO USER
Revoke Delete, UPDATE, INSERT
ON OBJECT FROM USER
‫ دستورات كنترل تراكنش‬-4
Transaction Control Language (TCL)
:‫مثال‬
Rollback
Commit
‫بخش چهارم‪ :‬زبان پرس و جوی ساخت یافته‬
‫دستورات تعریف داده ها‬
‫‪-1‬دستور ايجاد پایگاه داده ها‪:‬‬
‫‪CREATE DATABASE database_name‬‬
‫بخش چهارم‪ :‬زبان پرس و جوی ساخت یافته‬
‫دستورات تعریف داده ها (ادامه)‬
‫‪-2‬دستور ايجاد و حذف جدول‪:‬‬
‫قسمتهای اختیاری دستورات در داخل کروشه ارائه شده است‪.‬‬
‫‪CREATE TABLE table_name‬‬
‫‪(column1 column1_datatype [not null][unique],‬‬
‫‪column2 column2_datatype [not null][unique],‬‬
‫…‬
‫‪(,‬نام ویژگیهای تشکیل دهنده کلید اصلی(‪Primary key‬‬
‫‪ ,‬نام جدول مورد نظر ‪( references‬نام ویژگیهای کلید خارجی ‪Foreign key(1‬‬
‫‪ ,‬نام جدول مورد نظر ‪( references‬نام ویژگیهای کلید خارجی ‪Foreign key(2‬‬
‫‪...‬‬
‫)]شرط مورد نظر ‪[check‬‬
‫حذف یک جدول‬
‫‪DROP TABLE table_name‬‬
‫بخش چهارم‪ :‬زبان پرس و جوی ساخت یافته‬
‫دستورات تعریف داده ها (ادامه)‬
‫بازه‬
‫نوع داده ای‬
‫اعداد صحیح‬
‫‪Integer‬‬
‫اعداد صحیح‬
‫‪Smallint‬‬
‫اعدادی با ‪ P‬رقم و ‪ q‬رقم اعشاری‬
‫)‪Decimal(p,q‬‬
‫اعداد اعشاری با مميز شناور‬
‫‪Float‬‬
‫اعداد حقیقی‬
‫)‪Numeric(p,q‬‬
‫رشته های کاراکتری با طول ‪n‬‬
‫)‪Char(n‬‬
‫رشته های کاراکتری با طول متغير کوچکتر یا مساوی ‪n‬‬
‫)‪Varchar(n‬‬
‫تاریخ با فرمت ‪yyyymmdd‬‬
‫‪Date‬‬
‫زمان با فرمت ‪hhmmss‬‬
‫‪Time‬‬
‫بخش چهارم‪ :‬زبان پرس و جوی ساخت یافته‬
‫دستورات تعریف داده ها (ادامه)‬
‫مثال‪-‬دستور ايجاد و حذف جدول‪:‬‬
‫‪CREATE TABLE S‬‬
‫‪(s# char(2),‬‬
‫‪Sname nchar(30) not null unique,‬‬
‫‪City key(20),‬‬
‫))‪Primary key(s#‬‬
‫عبارت ‪ not null‬برای یک ویژگی باعث می شود که از درج تاپلهای که در آنها مقداری برای ویژگی مورد نظر درج نشده‬
‫باشد‪ ،‬جلوگیری می کند‪.‬‬
‫عبارت ‪ unique‬برای یک ویژگی باعث می شود که از درج تاپلهای که در آنها برای ویژگی مورد نظر مقداری تکراری وارد‬
‫شده باشد‪ ،‬جلوگیری می کند‪.‬‬
‫بخش چهارم‪ :‬زبان پرس و جوی ساخت یافته‬
‫دستورات تعریف داده ها (ادامه)‬
‫‪-3‬دستور ايجاد و حذف ایندکس‪:‬‬
‫ایندکسها در واقع همان کلیدهای ثانویه هستند‪ .‬از ایندکسها برای تسریع جستجوی یک موجودیت خاص در‬
‫صورت عدم دسترس ی به مقدار کلید اصلی استفاده می شود‪.‬‬
‫(نام ویژگیها) نام جدول ‪ on‬نام ایندکس ‪Create [unique] index‬‬
‫درج عبارت ‪ unique‬باعث می شود که از ورود اسمهای تکرای در جدول‪ ،‬جلوگیری شود‪.‬‬
‫)‪Create index names on S(sname‬‬
‫حذف ایندکس‬
‫نام ایندکس‪.‬نام جدول ‪Drop index‬‬
‫‪Drop index S.names‬‬
‫بخش چهارم‪ :‬زبان پرس و جوی ساخت یافته‬
‫دستورات تعریف داده ها (ادامه)‬
‫‪ -4‬اضافه کردن و تغییر مشخصات یک ستون در جدول‬
‫)]‪ [not null][unique‬مشخصات ستون جدید نام ستون جدید(‪ add‬نام جدول ‪Alter table‬‬
‫))‪Alter table S add(tel char(10‬‬
‫)]‪ [not null][unique‬مشخصات ستون جدید نام ستون جدید(‪ modify‬نام جدول ‪Alter table‬‬
‫)‪Alter table S modify(sname nchar(20) not null unique‬‬
‫بخش چهارم‪ :‬زبان پرس و جوی ساخت یافته‬
‫دستورات دستکاری داده ها‬
‫‪-1‬دستور بازيابي‬
‫نام ستونها و یا عبارات محاسباتی مورد نظر ]‪SELECT [ALL | DISTINCT‬‬
‫نام جداول ‪FROM‬‬
‫]شرط روی تاپلها ‪[WHERE‬‬
‫]نام ستونهای که قرار است لیست براساس آنها گروه بندی شود ‪[GROUP BY‬‬
‫] انتخاب گروههای که شرط به خصوص ی دارند ‪[HAVING‬‬
‫]‪ [asc|desc‬نام ستونهایی که قرار است لیست براساس آنها مرتب شود ‪[ORDER BY‬‬
‫‪‬برای حذف تاپلهای تکراری از گزینه ‪ distinct‬استفاده می شود‪.‬‬
‫‪‬شرایط برای انتخاب سطرهای خاص با انواع ترکیبات ‪ AND‬یا ‪ OR‬و یا‬
‫‪, , = , , , ‬‬
‫بخش چهارم‪ :‬زبان پرس و جوی ساخت یافته‬
‫دستورات دستکاری داده ها (ادامه)‬
‫‪ ‬عملگرهای ‪ in‬و ‪not in‬‬
‫برای تست وجود یا عدم وجود یک مقدار در داخل یک مجموعه استفاده می شود‪.‬‬
‫’‪Where p#=‘p2’ or p#=‘p3’ or p#=‘p4‬‬
‫)’‪Where p# in )‘p2’ ,‘p3’ ,’p4‬‬
‫‪ ‬عملگر ‪ like‬و ‪not like‬‬
‫برای جستجوی یک عبارت در داخل مقادیر یک ستون رشته ای استفاده می شود‪.‬‬
‫’‪%‬مصالح‪Where sname like ‘%‬‬
‫یعنی می تواند قبل و بعد از کلمه مصالح عبارات دیگری باشند‪.‬‬
‫بخش چهارم‪ :‬زبان پرس و جوی ساخت یافته‬
‫دستورات دستکاری داده ها (ادامه)‬
‫توابع جمعي (گروهي)‬
‫• ‪ :COUNT‬تعداد تاپلهای مورد نظر را به دست ميدهد‪.‬‬
‫• ‪ :SUM‬حاصل جمع مقادير اسكالر در يك ستون را به دست ميدهد‪.‬‬
‫• ‪ :AVG‬ميانگين مقادير اسكالر در يك ستون را به دست ميدهد‪.‬‬
‫• ‪ :MAX‬بيشترين مقدار اسكالر در يك ستون را به دست ميدهد‪.‬‬
‫• ‪ :MIN‬كمترين مقدار اسكالر در يك ستون را به دست ميدهد‪.‬‬
‫بخش چهارم‪ :‬زبان پرس و جوی ساخت یافته‬
‫دستورات دستکاری داده ها (ادامه)‬
‫يك مثال در مورد استفاده از توابع جمعي‬
‫)‪SELECT MIN(GRADE) , MAX(GRADE‬‬
‫‪FROM STCOT‬‬
‫’‪WHERE TR=‘2‬‬
‫‪AND‬‬
‫’‪YRYR=’79-80‬‬
‫‪AND‬‬
‫;’‪COID=‘COM222‬‬
‫باالترين و پايين ترين نمره در درس ‪ COM222‬در ترم دوم ‪ 79-80‬را بازيابي ميكند‪.‬‬
‫بخش چهارم‪ :‬زبان پرس و جوی ساخت یافته‬
‫دستورات دستکاری داده ها (ادامه)‬
‫آزمون تست وجود هيچ مقدار در يك ستون‬
‫ميتوان با امكان ‪ IS NULL‬وجود هيچ مقدار در يك ستون را تست كرد‪.‬‬
‫مثال‪ :‬شماره دانشجوياني را بدهيد كه نمره آنها در درس ‪ SOC333‬در ترم دوم ‪ 78-79‬هنوز‬
‫اعالم نشده است؟‬
‫‪SELECT STID‬‬
‫‪FROM STCOT‬‬
‫’‪WHERE COID=‘SOC333‬‬
‫‪AND‬‬
‫’‪TR=‘2‬‬
‫‪AND‬‬
‫’‪YRYR=’78-79‬‬
‫‪AND‬‬
‫‪GRADE IS NULL‬‬
‫بخش چهارم‪ :‬زبان پرس و جوی ساخت یافته‬
‫دستورات دستکاری داده ها (ادامه)‬
‫پرس و جو روی چند جدول‬
‫‪‬عملگر ‪ exists‬و ‪not exists‬‬
‫برای تست وجود یا عدم وجود تاپلهای خاص در یک جدول استفاده می شود‪.‬‬
‫‪Select sname‬‬
‫‪From S‬‬
‫* ‪Where exists (select‬‬
‫‪from SPJ‬‬
‫‪where SPJ.s#=S.s#‬‬
‫از جدول ‪ S‬نام تولید کنندگانی را پیدا می کند که در جدول فروش ‪ SPJ‬فروش ی (تاپلی) برای آنها وجود دارد‪.‬‬
‫‪Select sname‬‬
‫‪From S, SPJ‬‬
‫‪Where SPJ.s#=S.s#‬‬
‫بخش چهارم‪ :‬زبان پرس و جوی ساخت یافته‬
‫دستورات دستکاری داده ها (ادامه)‬
‫پرس و جو روی چند جدول‬
‫‪‬عملگر ‪ union‬و ‪union all‬‬
‫برای بدست آوردن اجتماع دو جدول سازگار استفاده می شود‪.‬‬
‫•عملگر ‪except‬‬
‫برای بدست آوردن تفریق دو جدول سازگار استفاده می شود‪.‬‬
‫)‪(select city Form s‬‬
‫‪Union or expect‬‬
‫)‪(select city form j‬‬
‫بخش چهارم‪ :‬زبان پرس و جوی ساخت یافته‬
‫دستورات دستکاری داده ها (ادامه)‬
‫امكان ‪BETWEEN‬‬
‫شكل كلي اين امكان چنين است‪:‬‬
‫‪Scalar-expression [NOT] BETWEEN Scalar-expression AND Scalar-expression‬‬
‫مثال‪ :‬شماره دانشجوياني را بدهيد كه نمره آنها در درس ‪ HIS444‬در ترم اول ‪ 77-78‬بين ‪ 15‬و ‪ 19‬باشد‪.‬‬
‫‪SELECT STCOT.STID‬‬
‫‪FROM STCOT‬‬
‫’‪WHERE TR=‘1‬‬
‫‪AND‬‬
‫’‪YRYR=’77-78‬‬
‫‪AND‬‬
‫’‪GRADE BETWEEN ’15’ AND ’19‬‬
‫بخش چهارم‪ :‬زبان پرس و جوی ساخت یافته‬
‫دستورات دستکاری داده ها (ادامه)‬
‫‪-2‬دستور ایجاد دید خارجی‬
‫نکته‪ :‬داده های موجود در دیدگاه به صورت اتوماتیک تغیير می کند‪.‬‬
‫یک دستور انتخاب ‪( As‬نام ستونهای دیدگاه(نام دیدگاه ‪Create view‬‬
‫مثال‪ :‬دیدگاهی به نام ‪ partSale‬ایجاد کنید که شامل کد محصوالت و ميزان کل فروش آنها‬
‫باشد‪.‬‬
‫‪Create view partSale(p#,sum1) As Select p#,sum(qty) form SPJ group by p#‬‬
‫نام ستونهای دیدگاه به ترتیب با نام ستونهای انتخاب شده در دستور ‪ select‬نظير می شوند‪ .‬یعنی در دیدگاه باال ‪ p#‬با ‪ p#‬و‬
‫‪ sum1‬با )‪ sum(qty‬نظير می شود‪.‬‬
‫بخش چهارم‪ :‬زبان پرس و جوی ساخت یافته‬
‫دستورات دستکاری داده ها (ادامه)‬
‫‪-2‬دستور ایجاد دید خارجی‬
‫حذف یک دیدگاه‬
‫نام دیدگاه ‪Drop view‬‬
‫درج یک تاپل‬
‫(مقادیر ویژگیها) ‪( values‬نام ویژگیها)نام جدول ‪Insert into‬‬
‫حذف تاپلها‬
‫]شرط ‪ [where‬نام جدول ‪Delete form‬‬
‫اصالح تاپلها‬
‫]شرط ‪, … [where‬مقدار دو = نام ویژگی دوم ام ‪,‬مقدار یک = نام ویژگی یک ام ‪ set‬نام جدول ‪Update‬‬
‫بخش چهارم‪ :‬زبان پرس و جوی ساخت یافته‬
‫دستورات کنترل داده ها‬
‫‪‬دستور واگذاری مجوز‬
‫خواندن همه ستونها‬
‫‪Select‬‬
‫خواندن ستونهای مشخص شده‬
‫)نام ستونها( ‪Select‬‬
‫اصالح همه ستونها‬
‫‪Update‬‬
‫اصالح ستونهای مشخص شده )نام ستونها( ‪Update‬‬
‫درج تاپل‬
‫]‪ [with grant option‬نام کاربران ‪ to‬نام جدول ‪On‬‬
‫حذف تاپل‬
‫‪Insert‬‬
‫‪Grant Delete‬‬
‫تغیير ساختار جدول‬
‫‪Alter‬‬
‫ایجاد ایندکس‬
‫‪Index‬‬
‫کلیه گزینه های باال‬
‫‪All‬‬
‫کاربرانی که مجوز ‪ with grant option‬را دریافت نموده اند می توانند به نوبه خود این مجوزها را به‬
‫دیگران ارائه دهند‪.‬‬
‫بخش چهارم‪ :‬زبان پرس و جوی ساخت یافته‬
‫دستورات کنترل داده ها (ادامه)‬
‫‪‬دستور بازپس گيری مجوز‬
‫نام کاربران ‪ to‬نام جدول ‪On‬‬
‫خواندن همه ستونها‬
‫‪Select‬‬
‫خواندن ستونهای مشخص شده‬
‫)نام ستونها( ‪Select‬‬
‫اصالح همه ستونها‬
‫‪Update‬‬
‫اصالح ستونهای مشخص شده‬
‫)نام ستونها( ‪Update‬‬
‫درج تاپل‬
‫‪Insert‬‬
‫حذف تاپل‬
‫‪revoke Delete‬‬
‫تغیير ساختار جدول‬
‫‪Alter‬‬
‫ایجاد ایندکس‬
‫‪Index‬‬
‫کلیه گزینه های باال‬
‫‪All‬‬
‫‪ -2‬دستورات پردازش داده ها‬
‫‪ -2 -2‬دستورات عمليات ذخيرهسازي ‪:‬‬
‫براي انجام عمليات سهگانه ذخيرهسازي سه دستور ‪،DELETE‬‬
‫‪ INSERT‬و ‪ UPDATE‬وجود دارد‪.‬‬
UPDATE ‫دستور‬
:‫شكل كلي اين دستور چنين است‬
UPDATE table-name
SET assignment-commalist
[WHERE Condition(s)]
.‫ تعداد واحد درسهاي عملي را يك واحد كاهش دهيد‬:‫مثال‬
UPDATE COT
SET CREDIT=CREDIT-1
WHERE COTYPE=‘p’;
DELETE ‫دستور‬
:‫شكل كلي اين دستور چنين است‬
DELETE
FROM table-name
[WHERE Cond(s)]
‫ حذف كنيد‬78-79 ‫ را در ترم دوم سال‬78110555 ‫ درسهاي دانشجوي با شماره‬:‫مثال‬
DELETE
FROM STCOT
WHERE STID=‘78110555’
AND
TR=‘2’
AND
YRYR=’78-79’;
‫اين دستور دو شكل كلي دارد‪:‬‬
‫دستور ‪INSERT‬‬
‫‪INSERT INTO table-name‬‬
‫;)‪Values(one row‬‬
‫‪INSERT INTO table-name‬‬
‫;‪Subquery‬‬
‫در شكل دوم‪ ،‬تعدادي سطر در جدول درج ميشوند‪.‬‬
‫مثال‪ :‬اطالعات درس ي زير را در جدول درج نمائيد‪.‬‬
‫>‪<78110888,COM888,2,78-79,12‬‬
‫‪INSERT INTO STCOT‬‬
‫;>‪VALUES <‘78110888’, ‘COM888’, 2, 78-79, 12‬‬
‫امتيازها‬
‫امتيازهايي كه يك كاربر ميتواند به يك كاربر ديگر بدهد‪:‬‬
‫• ‪ :USAGE‬اجازه استفاده از يك ميدان‬
‫• ‪ :SELECT‬اجازه دستيابي به تمام ستونهاي يك جدول‬
‫• )‪ :INSERT(X‬اجازه درج يك مقدار در ستون ‪ X‬از يك جدول‬
‫• ‪ :INSERT‬اجازه درج تمام ستونهاي يك جدول‬
‫• )‪ :UPDATE(X‬اجازه بهنگامسازي ستون ‪ X‬از يك جدول‬
‫• ‪ :UPDATE‬اجازه بهنگامسازي تمام ستونهاي يك جدول‬
‫• ‪ :DELETE‬اجازه حذف سطر(ها) از يك جدول‬
‫• )‪ :REFRENCES(X‬اجازه ارجاع به ستون ‪ X‬از يك جدول در تعريف‬
‫محدوديتهاي جامعيتي‬
‫جمعبندي در مورد امكانات نسخه ‪SQL1‬‬
‫‪ -1‬نارويهاي است‪.‬‬
‫‪ -2‬داراي كمال ساختاري است‪.‬‬
‫‪ -3‬زبان استانده سيستمهاي رابطهاي موجود است‪.‬‬
‫‪ -4‬تمام انواع دادهاي ساده را دارد‪.‬‬
‫‪ -5‬عملگرهاي بسيار قوي دارد‪.‬‬
‫‪ -6‬يادگيري آن ساده است‪.‬‬
‫‪ -7‬استقالل دادهاي را تامين ميكند‪.‬‬
‫‪ -8‬هم به صورت مستقل و هم به صورت ادغامشده قابل استفاده است‪.‬‬
‫دستوراتي كه در نسخه ‪ SQL2‬تغيیر كردند يا به آن اضافه شدند‪:‬‬
‫‪ .1‬دستور تعريف دادهها‬
‫‪ .8‬دستور حذف جدول‬
‫‪ .2‬دستور تعريف ميدان‬
‫‪ .9‬تعريف جدول موقت‬
‫‪ .3‬انواع دادهاي‬
‫‪ .10‬دستور بازيابي‬
‫‪ .4‬دستور تغيير ميدان‬
‫‪ .11‬امكانات جامعيتي‬
‫‪ .5‬دستور حذف ميدان‬
‫‪ .12‬امكانات ايمني‬
‫‪ .6‬دستور ايجاد جدول‬
‫‪ SQL .13‬پويا‬
‫‪ .7‬دستور تغيير جدول‬
‫دستوراتي كه در نسخه ‪ SQL3‬تغيیر كردند يا به آن اضافه شدند‪:‬‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.3‬‬
‫‪.4‬‬
‫‪.5‬‬
‫‪.6‬‬
‫‪.7‬‬
‫تعريف نوع داده مجرد‬
‫تعريف زيرنوع‬
‫امكان تعريف زيرجدول و زبرجدول‬
‫امكان ارثبري ستونهاي جدول جديد از ستونهاي جدول نامدار موجود‬
‫رويهاي شدن زبان‬
‫رهانا‬
‫نوشتن رويه‬
‫‪ SQL .8‬ادغامشده‬
‫‪ .9‬واسط درخواست فراخوان‬
‫‪ .10‬دستورات كنترل تراكنشها‬
‫امكانات جامعيتي‬
‫كاربر ميتواند زمان وارسي جامعيت پايگاه را (براساس‬
‫محدوديتها و قواعد دادهشده) خود مشخص كند‪ .‬ميتواند‬
‫درخواست كند كه اين وارسي بالفاصله باشد يا با تاخير‪.‬‬
‫براي اين منظور از امكان زير استفاده ميشود‪:‬‬
‫)‪SET CONSTRAINTS (constraint-name‬‬
‫}‪{DEFERRED | IMMEDIATE‬‬
‫نوع داده مجرد‬
‫شايد مهمترين قابليتي كه در زمينه انواع دادهاي‬
‫در ‪ SQL3‬افزوده شد‪ ،‬امكان تعريف نوع داده‬
‫مجرد (‪ )ADT‬باشد‪ .‬با اين نوع داده ميتوان‬
‫مجموعهاي از صفات و روالها را تعريف كرد‪.‬‬
‫نوع داده مجرد نمونههايي دارد و هر نمونه هم به‬
‫نوبه خود‪ ،‬همه صفات و روالهاي تعريفشده را‬
‫دارد‪.‬‬
‫ساختهاي زباني افزودهشده به ‪ ،SQL3‬كه در تعريف توابع و‬
‫رويهها استفاده ميشود‪:‬‬
‫• احكام مركب (تودرتو)‬
‫• احكام حلقهگرداني)‬
‫• احكام شرطي‬
‫• احكام انتساب‬
‫• احكام اعالن اشتباهات در برنامه‬
‫رهانا‬
‫تعريف‪ -‬قاعده (محدوديت) يا قواعدي است كه قبل يا بعد از‬
‫بروز يك رويداد در پايگاه دادهها (معموال يك عمل تغييردهنده‬
‫دادهها) بايد اعمال شود‪ .‬اين قاعده در سطح برنامهسازي‪ ،‬به‬
‫صورت يك رويه از پيش تعريفشده است كه به طور شرطي‬
‫يا غيرشرطي‪ ،‬قبل يا بعد از انجام يك عمل در پايگاه دادهها‪ ،‬به‬
‫طور اتوماتيك اجرا ميشود‪.‬‬
‫رهانا‬
‫مزايا‬
‫‪ .1‬اجراي آن تحت كنترل متمركز سيستم و نظارت مدير‬
‫پايگاه دادهها است‪.‬‬
‫‪ .2‬با وجود آن ديگر نيازي نيست كه محدوديتهاي مورد نظر‬
‫در هر برنامه كاربردي اعمال شوند و كنترلهاي الزم‬
‫انجام شود‪.‬‬
‫‪ .3‬براي معماري ‪ C/S DB‬بسيار مناسب است‪.‬‬
‫كاربرد رهانا‬
‫‪ .1‬اعمال قواعد جامعيت‪.‬‬
‫‪ .2‬اعمال قواعد ايمني مبتني بر مقادير‬
‫‪ .3‬درج ركوردهاي ثبت عمليات در فايل ثبت تراكنشها‬
‫‪ .4‬توليد نسخهاي از دادههاي ذخيرهشده در يك سايت ديگر‪.‬‬
‫‪ .5‬در انتشار اتوماتيك عمليات در پايگاه دادههاي توزيعشده‪.‬‬
‫‪ .6‬در بهنگامسازي ديدها در سيستمهاي رابطهاي‬
‫تراكنش‬
‫تعريف‪ :‬به بيان ساده عملي است كه تغييري در پايگاه دادهها ايجاد كند‪.‬‬
‫اين عمل كه طبعا به صورت يك برنامه يا بخش ي از يك برنامه است‪ ،‬يا‬
‫بايد به تمامي اجرا شود و يا اصال اجرا نشود و ميگوييم كه تراكنش‬
‫خاصيت تجزيهناپذيري دارد‪.‬‬
‫خواص‬
‫‪ .1‬تجزيهناپذيري‬
‫‪ .2‬سازگاري‬
‫‪ .3‬جدايي (انفراد)‬
‫‪ .4‬مانايي (دوام)‬
‫بخش پنجم‪ :‬نرمال سازی‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫جداول آنرمال‬
‫جداول نرمال ‪1‬‬
‫جداول نرمال ‪2‬‬
‫جداول نرمال ‪3‬‬
‫جداول نرمال ‪BCNF‬‬
‫جداول نرمال ‪4‬‬
‫جداول نرمال ‪5‬‬
‫بخش پنجم‪ :‬نرمال سازی‬
‫چرا نرمال سازی جداول الزم است‪:‬‬
‫• کاهش افزونگی‬
‫• آنومالی به روز رسانی (‪)Update‬‬
‫• آنومالی درج (‪)Insert‬‬
‫• آنومالی حذف (‪)Delete‬‬
‫‪ ‬نرررم سررازی در عمررل یعنرری پيررروی از یررک سررری فرررم هررای نرمررال کرره منجررر برره تجزیرره‬
‫جداول می شوند‪.‬‬
‫بخش پنجم‪ :‬نرمال سازی‬
‫• جداول آنرمال‬
‫‪ ‬به جداولی اطالق می شود که گروه اطالع تکرار شونده دارد‪.‬‬
‫‪ ‬یعنی در برخورد هر سطر و ستون آن به جای یک مقدار اتمی و تجزیه‬
‫ناپذیر‪ ،‬مجموعه ای از مقادیر وجود دارد‪.‬‬
‫‪ ‬در نمودار وابستگی‪ ،‬برای نمایش گروه اطالع تکرار شونده از یک خط در‬
‫باالی ویژگی استفاده می شود‪.‬‬
‫بخش پنجم‪ :‬نرمال سازی‬
‫جداول نرمال ‪1‬یا رابطه ‪1NF‬‬
‫• رابطهاي ‪ 1NF‬است اگر هر صفت خاصه آن در هر تاپل‪ ،‬تكمقداري باشد‪.‬‬
‫• در حالت کلی در مدل رابطه ای یک جدول همیشه ‪ 1NF‬هستند‪.‬‬
‫• در جدول نرمال شده دیگر ‪ st#‬نمی تواند کلید اصلی باشد چون برای آن مقادیر تکراری‬
‫وجود دارد‪.‬‬
‫• برای رفع این مشکل کلید تبدیل به ‪ st#+telephone‬می شود‪.‬‬
‫بخش پنجم‪ :‬نرمال سازی‬
‫•در جدول نرمال شده دیگر ‪ st#‬نمی تواند کلید اصلی باشد چون برای آن مقادیر تکراری وجود دارد‪.‬‬
‫•برای رفع این مشکل کلید تبدیل به ‪ st#+crs#+term‬می شود‪.‬‬
‫بخش پنجم‪ :‬نرمال سازی‬
‫چرا جداول نرمال ‪2‬‬
‫ناهنجاری حذف‪ :‬فرض کنیم علی تنها دانشجویی باشد که درس ریاض ی ‪1‬را گرفته است‪ .‬اگر الزم باشد‬
‫اطالعات علی را حذف کنیم بطور ناخواسته اطالعات ریاض ی ‪ 1‬را از دست می دهیم‪.‬‬
‫ناهنجاری درج‪ :‬فرض کنید بخواهیم اطالعات دانشجوی جدیدی که هنوز هیچ درس ی نگرفته است‪ ،‬درج‬
‫کنیم‪ .‬از آنجا که ‪ term‬و ‪ course#‬جزئی از کلید اصلی هستند و نمی توانند مقدار تهی داشته باشند‬
‫انجام این عمل ممکن نیست‪.‬‬
‫ناهنجاری اصالح‪ :‬فرض کنیم تعداد واحد درس ی پایگاه داده را از ‪ 3‬به ‪ 4‬تغیير دهیم‪ .‬در این صورت برای‬
‫حفظ سازگاری داده ها الزم است این تغیير را به دفعات مکرر در تاپلهای مختلف اعمال کنیم‪.‬‬
‫کلید ‪st#+crs#+term‬‬
‫بخش پنجم‪ :‬نرمال سازی‬
‫• جداول نرمال ‪2‬‬
‫– نرمال یک باشد‪.‬‬
‫– در آن هیچ وابستگی جزئی به کلید اصلی وجود نداشته باشد‪.‬‬
‫– یا به عبارت دیگر هیچ ویژگی جدول تنها به قسمتی از کلید اصلی وابستگی نداشته‬
‫باشد‪.‬‬
‫بخش پنجم‪ :‬نرمال سازی‬
‫جداول نرمال ‪2‬‬
‫مراحل الزم‪:‬‬
‫‪‬کلیه ترکیبات ممکن میان اجزاء کلید اصلی را به ترتیب در سطرهای مجزا بنویسید‪(.‬ابتدا ترکیبات یک جزئی‪ ،‬دو جزئی و ‪)...‬‬
‫‪‬در کنار هر یک از ردیفها ویژگیهایی را که در تشکیل کلید اصلی نقش ی ندارند و به ویژگیهای مورد نظر وابستگی تابعی دارند در‬
‫سطرهای باالتر نيز نوشته نشده اند‪ ،‬بنویسید‪( .‬مثال با داشتن یک ‪ st#‬تنها به یک ‪ name‬می توان رسید)‬
‫‪‬کلیه ردیفهای را که هیچ ویژگی غيرکلیدی در آنها وجود ندارد و شامل هیچ اطالعات مفیدی که در جداول دیگر نيز وجود‬
‫ندارد‪ ،‬نمی باشند‪ .‬حذف کرده‪ ،‬سایر سطرها را به جداول مجزا تبدیل کنید‪.‬‬
‫‪St#, name‬‬
‫‪Crs#, cname,unit‬‬
‫‪Term‬‬
‫‪St#+crs#‬‬
‫‪St#+term‬‬
‫‪Crs#+term‬‬
‫‪St#,Crs#,term, grade‬‬
‫ نرمال سازی‬:‫بخش پنجم‬
2NF ‫ به‬1NF ‫تبدیل‬
StudentId
CourseId
Dept
Grade
12
CS101
IE
B-
12
CS102
IE
C+
12
IE201
IE
C-
7
CS201
CS
A
7
CS352
CS
D
StudentId
CourseId
Grade
12
CS101
B-
12
CS102
C+
12
IE201
C-
7
CS201
A
7
CS352
D
StudentId
Dept
12
IE
7
CS
‫بخش پنجم‪ :‬نرمال سازی‬
‫• چرا جداول نرمال ‪3‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫جدول زیر نرمال ‪ 2‬است‪ .‬چونکه نرمال ‪ 1‬بوده و از آنجا که کلید اصلی تنها یک جزء دارد بدون هیچ‬
‫شک هیچ وابستگی جزئی در آن وجود ندارد‪.‬‬
‫اما دارای ناهنجاری های زیر است‪:‬‬
‫ناهنجاری حذف‪ :‬فرض کنیم عسل شاملو تنها کس ی باشد که مدرک کارشناس ی ارشد دارد‪ .‬اگر‬
‫اطالعات آنرا حذف کنیم اطالعات مربوط به مدرک فوق لیسانس را نيز از دست می دهیم‪.‬‬
‫ناهنجاری اصالح‪ :‬اگر بخواهیم نام مدرک ‪ 4‬را از فوق لیسانس به کارشناس ی ارشد تغیير دهیم‪ ،‬در این‬
‫صورت مجبوریم این تغیير را در تاپلهای مختلف تکرار کنیم‪.‬‬
‫بخش پنجم‪ :‬نرمال سازی‬
‫• جداول نرمال ‪3‬‬
‫– نرمال ‪ 2‬باشد‪.‬‬
‫– در آن هیچ وابستگی متعددی (وابستگی با واسطه) در آن وجود نداشته باشد‪.‬‬
‫– به عبارت دیگر در آن هیچ ویژگی غيرکلیدی به ویژگی غيرکلیدی دیگر وابستگی تابعی‬
‫نداشته باشد‪.‬‬
‫مراحل‪:‬‬
‫‪ ‬ویژگیهای که در وابستگی متعددی شرکت دارند در یک جدول مجزا قرار داده‪ ،‬ویژگیهای را که در طرف چپ‬
‫این وابستگی قرار دارند به عنوان کلید اصلی معرفی کنید‪.‬‬
‫‪ ‬بقیه ویژگیهای جدول اولیه را در جدول مجزا قرار داده‪ ،‬ویژگیهای تشکیل دهنده کلید اصلی در جدول اول‬
‫را به آنها اضافه کنید‪.‬‬
‫بخش پنجم‪ :‬نرمال سازی‬
‫• چرا جداول نرمال )‪BCNF (Codd and Boyce‬‬
‫‪ ‬ناهنجاری درج‪ :‬به عنوان مثال نمی توان استاد جدیدی را که هنوز هیچ دانشجویی با‬
‫وی پروژه نگرفته است در جدول درج کرد‪ .‬چراکه ‪ st#‬جزئی از کلید اصلی است و نمی‬
‫تواند تهی باشد‪.‬‬
‫‪ ‬ناهنجاری حذف‪ :‬فرض کنیم که دانشجویی ‪ 8001‬تنها دانشجویی باشد که با پروین‬
‫صبا پروژه گرفته است‪ .‬در این صورت اگر این دانشجو را حذف کنیم‪ ،‬اطالعات‬
‫مربوط به این استاد نيز از بين می رود‪.‬‬
‫بخش پنجم‪ :‬نرمال سازی‬
‫• جداول نرمال ‪BCNF‬‬
‫– اگر و تنها اگر کلیه تعیين کننده های آن کلید کاندیدا باشند‪.‬‬
‫تعریف تعیین کننده‪:‬‬
‫– اگر در یک جدول ویژگی ‪ B‬به ویژگی ‪ A‬وابستگی تابعی داشته باشد‪ ،‬آنگاه ‪ A‬یک‬
‫تعیين کننده خواهد بود‪.‬‬
‫– مثال‪ tutor :‬یک تعیين کننده است در حالی که کلید کاندیدا نیست‪.‬‬
‫– روند تبدیل جداول نرمال ‪ 2‬به ‪ BCNF‬معادل تبدیل جداول نرمال ‪ 2‬به‬
‫جداول نرمال ‪ 3‬می باشد‪.‬‬
‫بخش پنجم‪ :‬نرمال سازی‬
‫• مقایسه جداول نرمال ‪ BCNF‬و ‪3NF‬‬
‫‪ ‬این دو جداول نرمال عموما با هم معادلند‪.‬‬
‫‪ ‬استثناء‪ :‬تنها در صورتی که جدول بیش از یک کلید کاندیدا داشته باشد و‬
‫میان کلیدهای کاندیدا ویژگی مشترک وجود داشته باشد این دو جدول با‬
‫هم معادل نخواهند بود‪.‬‬
‫بخش پنجم‪ :‬نرمال سازی‬
‫• چرا جداول نرمال ‪4‬‬
‫– جدول زیر یک جدول نرمال ‪ BCNF‬می باشد چرا که یک جدول تمام کلید است‪.‬‬
‫– ناهنجاری درج‪ :‬اگر کارمند ‪ 101‬مهارت برنامه نویس ی جاوا را نيز کسب کند‪ ،‬بجای اضافه‬
‫کردن یک تاپل باید دو تاپل جدید ذیل به جدول اضافه شود‪.‬‬
‫– ناهنجاری حذف‪ :‬اگر بخواهیم زبان آملانی را از اطالعات کارمند ‪ 101‬حذف کنیم‪ ،‬بجای‬
‫حذف یک تاپل باید ‪ 3‬تاپل حذف شود‪.‬‬
‫بخش پنجم‪ :‬نرمال سازی‬
‫• جداول نرمال ‪4‬‬
‫– نرمال ‪ BCNF‬باشد‪.‬‬
‫– هیچ وابستگی چند مقداری در آن وجود نداشته باشد‪.‬‬
‫تعریف وابستگی چند مقداری‬
‫اگر در جدول )‪ T(a,b,c‬به ازاء هر مقدار برای ویژگی ‪ a‬مجموعه ای از‬
‫مقادیر برای ویژگی ‪ c‬وجود داشته باشد و این مجموعه مستقل از‬
‫مقادیر ویژگی ‪ b‬باشد‪ ،‬ویژگی ‪ c‬به ویژگی ‪ a‬وابستگی چند مقداری دارد‪.‬‬
‫بخش پنجم‪ :‬نرمال سازی‬
‫– در جدول زیر مشاهده می شود که تنها ‪ emp#‬مجموعه ‪ language‬را تعیين می کند و تغیير‬
‫‪ skill‬هیچ نقش ی در تغیير مجموعه ‪ language‬ندارد‪ .‬دلیل این امر نيز آنست که مهارتهای یک‬
‫شخص و زبانهایی که شخص بر آنها مسلط است هیچ ارتباطی با یکدیگر ندارند‪ .‬پس ‪language‬‬
‫به ‪ emp#‬وابستگی چند مقداری دارد‪.‬‬
‫– همچنين ‪ emp#‬مجموعه ‪ skill‬را تعیين می کند و ‪ language‬هیچ نقش ی در تغیير مجموعه‬
‫‪ skill‬ندارد‪ .‬پس ‪ skill‬نيز به ‪ emp#‬وابستگی چند مقداری دارد‪.‬‬
‫– برای جلوگيری از ایجاد وابستگی چند مقداری‪ ،‬در همان مرحله اول و هنگام تبدیل جدول آنرمال به‬
‫نرمال ‪ 1‬به ازاء هر گروه تکرار شونده باید جدول مجزایی در نظر بگيریم‪.‬‬
‫‪ BCNF‬است‬
‫‪ 4NF‬است‬
‫درس‬
‫زبان برنامه نویس ی‬
‫برنامه نویس ی پیشرفته‬
‫‪Java‬‬
‫برنامه نویس ی پیشرفته‬
‫‪C++‬‬
‫‪ BCNF‬است‬
‫ولی ‪ 4NF‬نیست‬
‫درس‬
‫استاد‬
‫زبان برنامه نویس ی‬
‫برنامه نویس ی پیشرفته‬
‫احمدی‬
‫مبانی برنامه نویس ی‬
‫‪Java‬‬
‫‪Java‬‬
‫برنامه نویس ی پیشرفته‬
‫احمدی‬
‫‪C++‬‬
‫مبانی برنامه نویس ی‬
‫‪C‬‬
‫برنامه نویس ی پیشرفته‬
‫سلیمانی‬
‫‪Java‬‬
‫مبانی برنامه نویس ی‬
‫‪Pascal‬‬
‫برنامه نویس ی پیشرفته‬
‫سلیمانی‬
‫‪C++‬‬
‫مبانی برنامه نویس ی‬
‫احمدی‬
‫‪Java‬‬
‫مبانی برنامه نویس ی‬
‫احمدی‬
‫‪C‬‬
‫مبانی برنامه نویس ی‬
‫احمدی‬
‫‪Pascal‬‬
‫مبانی برنامه نویس ی‬
‫ادیب‬
‫‪Java‬‬
‫مبانی برنامه نویس ی‬
‫ادیب‬
‫‪C‬‬
‫مبانی برنامه نویس ی‬
‫ادیب‬
‫‪Pascal‬‬
‫درس‬
‫استاد‬
‫برنامه نویس ی پیشرفته‬
‫احمدی‬
‫برنامه نویس ی پیشرفته‬
‫سلیمانی‬
‫مبانی برنامه نویس ی‬
‫احمدی‬
‫مبانی برنامه نویس ی‬
‫ادیب‬
‫بخش پنجم‪ :‬نرمال سازی‬
‫• جداول نرمال ‪5‬‬
‫– نرمال ‪ 4‬باشد‪.‬‬
‫– نتوان آنرا به جداول کوچکتر تجزیه کرد بطوریکه حداقل یکی از‬
‫جداول شامل هیچ یک از کلیدهای کاندیدای جدول اولیه نباشد‪.‬‬
‫‪ ‬جدول مقابل ‪ BCNF‬بوده و چون وابستگی چند مقداری نيز ندارد لذا‬
‫نرمال ‪ 4‬نيز است‪.‬‬
‫‪ ‬جدول را به دو جدول زیر می شکنیم‪.‬‬
‫‪ ‬نتیجه پیوند دو جدول به صورت زیر می باشد که دارای دو تاپل اضافی‬
‫است و لذا این تجزیه بیفایده است‪.‬‬
‫بخش پنجم‪ :‬نرمال سازی‬
‫‪ ‬جدول مقابل ‪ BCNF‬بوده و چون وابستگی چند مقداری نيز ندارد لذا‬
‫نرمال ‪ 4‬نيز است‪.‬‬
‫‪ ‬جدول را به دو جدول زیر می شکنیم‪.‬‬
‫‪ ‬نتیجه پیوند دو جدول به صورت زیر می باشد که دارای دو تاپل اضافی‬
‫است و لذا این تجزیه بیفایده است‪.‬‬
‫بخش پنجم‪ :‬نرمال سازی‬
‫‪ ‬جدول مقابل ‪ BCNF‬بوده و چون وابستگی چند مقداری نيز ندارد لذا‬
‫نرمال ‪ 4‬نيز است‪.‬‬
‫‪ ‬جدول را به سه جدول زیر می شکنیم‪.‬‬
‫‪ ‬نتیجه پیوند سه جدول به صورت زیر می باشد که دارای یک تاپل اضافی‬
‫است و لذا این تجزیه بیفایده است‪.‬‬
‫مزاياي نرمالترسازي‬
‫‪ ‬ارائه يك طراحي بهتر و واضحتر با كمترين اختالط اطالعات‬
‫‪ ‬كاهش بعض ي انواع افزونگي‬
‫‪ ‬كاهش بعض ي آنومالیها‬
‫‪ ‬تسهيل اعمال بعض ي قواعد جامعيت‬
‫معايب روش نرمالترسازي‬
‫‪‬بروز فزونكاري در سيستم در عمل بازيابي‬
‫‪‬ايجاد نوعي افزونگي از نوع افزونگي در سطح ادراكي‬
‫‪‬زمانگير بودن فرآيند نرمالترسازي به ويژه اگر محيط عملياتي بزرگ و تعداد رابطهها زياد‬
‫باشد‪.‬‬
‫‪‬تصميمگيري دشوار در اثر تعدد تجزيهها‬
‫‪‬امكان وابستگي بين مجموعه صفات يك خردجهان‪ ،‬وابستگیهاي به جز وابستگي تابعي و‬
‫پيوندي باشد و بنابراين سبب مطرح شدن قواعد جامعيت ديگر و نيز ضوابط ديگري براي‬
‫تجزيه رابطهها شود و غيره‪.‬‬
‫بخش ششم‪ :‬مدلسازی داده ها با استفاده از‬
‫نمودارهای موجودیت رابطه‪EDR‬‬
‫آنچه در این فصل خواهیم خواند‪:‬‬
‫• گروه بندی مدلهای داده براساس درجات تجرید داده ها‬
‫–‬
‫–‬
‫–‬
‫–‬
‫مدل انتزاعی (باالترین درجه تجرید)‬
‫مدل داخلی‬
‫مدل خارجی‬
‫مدل فيزیکی (پایين ترین درجه تجرید)‬
‫• نمودارهای ‪ER‬‬
‫– اجزاء اصلی نمودارها ‪ER‬‬
‫‪ o‬موجودیتها‬
‫‪ o‬ویژگیها‬
‫‪ o‬رابطه ها‬
‫• نگاشت یک نمودار ‪ ER‬به جداول پایگاه داده ها‬
‫بخش ششم‪ :‬مدلسازی داده ها با استفاده از‬
‫نمودارهای موجودیت رابطه‪EDR‬‬
‫• مدلهای داده نمایش ی نسبتا ساده و غالبا گرافیکی از ساختارهای‬
‫داده در دنیای واقعی هستند‬
‫• که می توانند بعنوان یک پل ارتباطی میان طراحان‪ ،‬برنامه نویسان‬
‫و کاربران نهایی مورد استفاده قرار گرفته و آنها را در رسیدن به یک‬
‫دید مشترک و فهم متقابل از برداشتهای یکدیگر یاری کنند‪.‬‬
‫• نمودارهای ‪ ER‬یکی از رایجترین ابزارها برای مدلسازی داده ها‬
‫هستند‪.‬‬
‫بخش ششم‪ :‬مدلسازی داده ها با استفاده از‬
‫نمودارهای موجودیت رابطه‪EDR‬‬
‫• مدل انتزاعی (باالترین درجه تجرید)‬
‫– یک دید سراسری نسبت به کل داده های سیستم ارائه می دهد‪.‬‬
‫– دید مدیران سطح باال نسبت به داده ها است‪.‬‬
‫– ایجاد مدل انتزاعی اولين مرحله از طراحی پایگاه داده هاست‪.‬‬
‫– غالبا برای ایجاد این مدل از نمودارهای ‪ ER‬استفاده می شود‪.‬‬
‫– مدل انتزاعی مستقل از نرم افزار‪ ،‬سخت افزار و سیستم عاملی است که‬
‫قرار است پایگاه داده ها روی آنها پیاده سازی شود‪.‬‬
‫بخش ششم‪ :‬مدلسازی داده ها با استفاده از‬
‫نمودارهای موجودیت رابطه‪EDR‬‬
‫• مثال مدل انتزاعی (باالترین درجه تجرید)‬
‫بخش ششم‪ :‬مدلسازی داده ها با استفاده از‬
‫نمودارهای موجودیت رابطه‪EDR‬‬
‫• مدل داخلی‬
‫–‬
‫–‬
‫–‬
‫–‬
‫مدل داخلی همان مدل انتزاعی است با این تفاوت‬
‫که جزئیات و شرایط خاص مدل پایگاه داده ها‬
‫نيز در آن در نظر گرفته می شود‪.‬‬
‫مدل داخلی وابسته به نرم افزار است‪.‬‬
‫در صورت استفاده از مدل شبکه ای یا سلسله‬
‫مراتبی بعلت وابستگی شدید مدل به مسيرها و‬
‫شیوه ذخيره سازی داده ها‪ ،‬در مدل داخلی باید‬
‫جزئیات مربوط به مسيرها و شیوه ذخيره سازی‬
‫داده ها مشخص شود‪ .‬اما در صورت استفاده از‬
‫مدل داده رابطه ای‪ ،‬نیازی به ارائه این جزئیات‬
‫نیست‪.‬‬
‫مدل داخلی از سخت افزار یا سیستم عاملی که‬
‫قرار است پایگاه داده ها روی آن پیاده سازی‬
‫شود‪ ،‬مستقل است‪.‬‬
‫بخش ششم‪ :‬مدلسازی داده ها با استفاده از‬
‫نمودارهای موجودیت رابطه‪EDR‬‬
‫• مدل خارجی‬
‫– دیدی را که هر یک از کاربران نهایی‬
‫یا گروههای مختلف از کاربران‬
‫نسبت به داده ها دارند‪ ،‬نشان می‬
‫دهد‪.‬‬
‫– کاربران مختلف با توجه به حوزه‬
‫مسولیتها و وظایف خود دید‬
‫متفاوتی نسبت به داده های‬
‫سیستم دارند‪.‬‬
‫بخش ششم‪ :‬مدلسازی داده ها با استفاده از‬
‫نمودارهای موجودیت رابطه‪EDR‬‬
‫• مدل فیزیکی (پایین ترین درجه تجرید)‬
‫– نحوه ذخيره سازی داده ها روی رسانه را نشان می دهد‪.‬‬
‫– مدل فيزیکی به سخت افزار و نرم افزار مورد استفاده برای پیاده سازی‬
‫پایگاه داده ها وابسته است‪.‬‬
‫– مدلهای سلسله مراتبی و شبکه ای با اشاره گرها سر و کار دارند‪ ،‬لذا‬
‫روش ذخيره سازی و بازیابی فيزیکی داده ها بر کارایی سیستم تاثير بسزایی‬
‫دارد‪ .‬اما در پایگاه داده های رابطه ای چنين وضعیتی حاکم نیست‪.‬‬
‫بخش ششم‪ :‬مدلسازی داده ها با استفاده از‬
‫نمودارهای موجودیت رابطه‪EDR‬‬
‫مدل داده ای‬
‫• مجموعه ای از ابزار برای بيان‬
‫– داده ها‬
‫– روابط ميان داده ها‬
‫– مفهوم داده ها‬
‫– محدوديت حاکم بر داده ها‬
‫می باشد‪.‬‬
‫بخش ششم‪ :‬مدلسازی داده ها با استفاده از‬
‫نمودارهای موجودیت رابطه‪EDR‬‬
‫مدل ‪Entity-Relationship‬‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫‪ ER‬يک مدل از دنيای واقعی است‪.‬‬
‫‪ ER‬رایجترین ابزار برای نمایش مدل انتزاعی داده ها می باشد‪.‬‬
‫به عنوان ابزاری برای ایجاد درک متقابل و تفاهم میان طراحان پایگاه داده ها‪ ،‬مدیران‪ ،‬برنامه‬
‫نویسان و کاربران نهایی مورد استفاده قرار می گيرد‪.‬‬
‫ساختار جداول پایگاه داده ها را می توان از این نمودارها استخراج نمود‪.‬‬
‫در صورت رعایت کلیه اصول‪ ،‬جداول استخراج شده از نمودارهای ‪ ER‬نرمال بوده و نیازی به‬
‫نرمال سازی نخواهند داشت‪.‬‬
‫در روش ‪ ،ER‬سه مفهوم معنايی وجود دارد و معنای داده های هر محيط به کمک همين سه‬
‫مفهوم نمايش داده می شوند‪:‬‬
‫– موجوديت (‪)Entity‬‬
‫– ویژگی یا صفت یا خصیصه (‪)Attribute‬‬
‫– رابطه (‪)Relation‬‬
‫بخش ششم‪ :‬مدلسازی داده ها با استفاده از‬
‫نمودارهای موجودیت رابطه‪EDR‬‬
‫اجزاء اصلی نمودارهای ‪ER‬‬
‫‪-1‬موجوديت (‪)Entity‬‬
‫• نوع موجوديت عبارت است از “ش ي”‪“ ،‬چيز”‪“ ،‬پديده” و بطور کلی هر‬
‫آنچه که می خواهيم در موردش “اطالع” داشته باشيم و شناخت خود را‬
‫در موردش افزايش دهيم‪ ،‬اعم از اينکه وجود فيزيکی يا ذهنی داشته‬
‫باشد‪.‬‬
‫• برای نمایش موجودیتها از مستطیل استفاده می شود‪.‬‬
‫– مثال‪ :‬دانشجو‪ ،‬درس‪ ،‬استاد‪ ،‬کالس و غيره‪.‬‬
‫بخش ششم‪ :‬مدلسازی داده ها با استفاده از‬
‫نمودارهای موجودیت رابطه‪EDR‬‬
‫مثال‪ :‬مشخص کردن موجودیت ها‬
‫• نیاز به یک پایگاه داده داریم که اطالعات دانشجو‪ ،‬استاد و‬
‫درس در آن ذخيره شود‪ .‬هر دانشجو می تواند چند درس را اخذ‬
‫کند‪ .‬هر استاد می تواند چند درس در طول یک ترم ارائه نماید‪.‬‬
‫بخش ششم‪ :‬مدلسازی داده ها با استفاده از‬
‫نمودارهای موجودیت رابطه‪EDR‬‬
‫اجزاء اصلی نمودارهای ‪ER‬‬
‫‪-2‬ویژگیها‪-‬صفات (‪)Attribute‬‬
‫• صفت در واقع خصيصه يا ويژگی يک نوع موجوديت است و هر نوع‬
‫موجوديت مجموعه ای از صفات دارد‪.‬‬
‫• هر صفت از نظر کاربران يک نام‪ ،‬يک نوع(‪ )Type‬و يک معنای مشخص‬
‫دارد‪.‬‬
‫– مثال‪ :‬يک شخص که دارای يک کد ملی‪ ،‬نام‪ ،‬نام خانوادگی‪ ،‬قد‪ ،‬سن و ‪ ...‬می‬
‫باشد‪.‬‬
‫• برای نمایش ویژگیها از بیض ی استفاده می شود‪.‬‬
‫• صفات را از پنج ديدگاه می توان تقسيم بندی کرد‪.‬‬
‫بخش ششم‪ :‬مدلسازی داده ها با استفاده از‬
‫نمودارهای موجودیت رابطه‪EDR‬‬
‫تقسيم بندی صفات از ديدگاه ‪1‬‬
‫• ساده‬
‫– صفت ساده صفتی است که مقدار آن از لحاظ معنايی ساده يا تجزيه نشدنی باشد‪،‬‬
‫به اين معنا که اگر مقدار آن را (دريک حيطه معنايی و کاربرد مشخص) به اجزايی‬
‫تجزيه کنيم‪ ،‬مقادير جزيی حاصله فاقد معنا باشند‪.‬‬
‫– مثال‪ :‬نام کوچک شخص یا شماره دانشجویی و غيره‪.‬‬
‫• مرکب‬
‫– صفت مرکب صفتی است که از چند صفت ساده تشکيل شده باشد به گونه ای که‬
‫تجزيه شدنی باشد و اجزای حاصل از تجزيه‪ ،‬خود صفات ساده باشند‪.‬‬
‫– مثال تاريخ‪ :‬خود شامل روز‪ ،‬ماه و سال است‪.‬‬
‫– مثال آدرس‪ :‬خود شامل شهر‪،‬خیابان‪،‬کوچه‪،‬پالک و طبقه است‪.‬‬
‫بخش ششم‪ :‬مدلسازی داده ها با استفاده از‬
‫نمودارهای موجودیت رابطه‪EDR‬‬
‫•‬
‫•‬
‫تقسيم بندی صفات از ديدگاه ‪2‬‬
‫تک مقداری‬
‫– صفت تک مقداری صفتی است که برای يک نمونه از يک موجوديت‪ ،‬حداکثر يک مقدار از دامنه مقادير را‬
‫می گيرد‪.‬‬
‫– به بيان ساده تر‪ ،‬به ازای يک نام صفت‪ ،‬حداکثر يک مقدار برای يک نمونه از موجوديت‪ ،‬داشته باشيم‪.‬‬
‫– مثال شماره ملی‪ :‬يک نمونه از شخص فقط يک شماره ملی می تواند داشته باشد‪.‬‬
‫چند مقداری‬
‫– صفت چند مقداری صفتی است که برای بعض يا همه نمونه های نوع موجوديت بيش از يک مقدار‪ ،‬از‬
‫دامنه مقادير را می گيرد‪.‬‬
‫– به بيان ساده تر‪ ،‬به ازاء يک نام صفت‪ ،‬چند مقدار‪ ،‬برای يک نمونه از موجوديت داشته باشيم‪.‬‬
‫– برای مثال اگر شغل فرد را يک صفت برای او در نظر بگيريم آن شخص می تواند چند شغل داشته باشد‪.‬‬
‫– ویژگی چند مقداری با دو خط به موجودیت وصل می شود‪.‬‬
‫– ویژگی چند مقداری باید به ویژگیهای تک مقداری تبدیل کرد‪.‬‬
‫بخش ششم‪ :‬مدلسازی داده ها با استفاده از‬
‫نمودارهای موجودیت رابطه‪EDR‬‬
‫اجزاء اصلی نمودارهای ‪ER‬‬
‫‪ -3‬رابطه ها یا ارتباط‬
‫• رابطه ها نحوه ارتباط موجودیتها را در سیستم نشان می دهند‪.‬‬
‫• رابطه با لوزی نمایش داده می شود‪.‬‬
‫• مفهوم رابطه در نمودارهای ‪ ER‬با مفهوم رابطه در پایگاه داده های رابطه ای متفاوت‬
‫است‪.‬‬
‫درس‬
‫می گیرد‬
‫دانشجو‬
‫بخش ششم‪ :‬مدلسازی داده ها با استفاده از‬
‫نمودارهای موجودیت رابطه‪EDR‬‬
‫انواع رابطه ها‬
‫• رابطه یکتایی‬
‫– رابطه یک نوع موجودیت است با همان نوع موجودیت‬
‫– مثل رابطه درس با درس‬
‫• رابطه دوتایی‬
‫•‬
‫•‬
‫رابطه بين دو نوع موجودیت مختلف است‬
‫مثل رابطه درس با استاد‬
‫• رابطه ‪n‬تایی‬
‫•‬
‫•‬
‫رابطه بين ‪ n‬نوع موجودیت مختلف است‪.‬‬
‫بهتر است روابط ‪n‬تایی را روابط دو تایی شکست و تنها در صورت ضرورت از آنها استفاده نمود‪.‬‬
‫بخش ششم‪ :‬مدلسازی داده ها با استفاده از‬
‫نمودارهای موجودیت رابطه‪EDR‬‬
‫مفاهیم مربوط به رابطه ها‬
‫• کارديناليتی رابطه‬
‫– مشخص می کند در یک رابطه هر موجودیت با حداقل و حداکثر چند موجودیت از طرف مقابل در ارتباط‬
‫است‪.‬‬
‫• درجه یک رابطه یا انواع تناظر‪:‬‬
‫• تناظر يک به يک ‪1 : 1‬‬
‫– يک سازمان يک مدير کل دارد و هر مدير کل فقط مدير کل يک سازمان است‪.‬‬
‫– رابطه ازدواج در کشورهای اسالمی‬
‫• تناظر يک به چند ‪1 : N‬‬
‫– يک مادر چند فرزند دارد و هر فرزند يک مادر دارد‪.‬‬
‫– رابطه دانشجو با درس‬
‫• تناظر چند به چند ‪N : M‬‬
‫– هر دانشجو چند درس می گذراند و هر درس توسط چند دانشجو گذرانده می شود‪.‬‬
‫بخش ششم‪ :‬مدلسازی داده ها با استفاده از‬
‫نمودارهای موجودیت رابطه‪EDR‬‬
‫درجه رابطه‬
‫(‪)c‬‬
‫(‪)d‬‬
‫• (‪ )a‬تناظر يک به يک‬
‫• (‪ )b‬و (‪ )c‬تناظر يک به چند ‪1 : N‬‬
‫• (‪ )d‬تناظر چند به چند ‪N : M‬‬
‫‪1:1‬‬
‫(‪)b‬‬
‫(‪)a‬‬
‫بخش ششم‪ :‬مدلسازی داده ها با استفاده از‬
‫نمودارهای موجودیت رابطه‪EDR‬‬
‫مشارکت در رابطه‬
‫‪ ‬مشخص می کند آیا شرکت یک‬
‫موجودیت در یک رابطه اجباری است‬
‫یا اختیاری‪.‬‬
‫‪ ‬اگر در یک رابطه کاردینالیتی حداقل‬
‫برای یک موجودیت صفر باشد‪،‬‬
‫موجودیت طرف مقابل اختیاری‬
‫است‪.‬‬
‫بخش ششم‪ :‬مدلسازی داده ها با استفاده از‬
‫نمودارهای موجودیت رابطه‪EDR‬‬
‫انواع موجودیت‪:‬‬
‫‪‬‬
‫•‬
‫‪‬‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫‪‬‬
‫•‬
‫•‬
‫‪‬‬
‫•‬
‫موجودیت قوی‬
‫موجودیتی است که وجود آن بستگی به وجود موجودیتهای دیگر ندارد‪.‬‬
‫موجودیت ضعیف (‪)Weak Entity‬‬
‫موجودیتی است که در محدوده مدلسازی ما به یک موجودیت قوی دیگر وابسته بوده و توسط آن موجودیت شناخته‬
‫میشود‪.‬‬
‫کلید اصلی موجودیت قوی جزئی از کلید اصلی آن است‪.‬‬
‫برای نمایش موجودیت ضعیت از دو مستطیل تو در تو استفاده می شود‪.‬‬
‫نوع مشارکت موجودیت ضعیف در رابطه الزامی میباشد‪.‬‬
‫چندی رابطه همواره یک به چند میباشد (در برخی حاالت خاص میتواند یک به یک باشد)‬
‫موجودیت بازگشتی‬
‫موجودیتی است که با خودش در ارتباط است‪.‬‬
‫مثل درس که پیش نیاز است برای درس دیگر‬
‫موجودیت مرکب‬
‫در نمودارهای ‪ ER‬روابط چند به چند را باید به روابط یک به چند تبدیل کرد‪ .‬برای این کار رابطه را با یک موجودیت‬
‫مرکب جایگزین می نماییم‪.‬‬
‫بخش ششم‪ :‬مدلسازی داده ها با استفاده از‬
‫نمودارهای موجودیت رابطه‪EDR‬‬
‫نوع و زیر نوعهای موجودیت‬
‫• اغلب میان موجودیتها‪ ،‬رابطه سلسله مراتبی وجود دارد‪.‬‬
‫• مثال کارمندان یک شرکت به سه گروه خلبان‪ ،‬مکانیک و حسابدار تقسیم می‬
‫شوند‪.‬‬
‫• برای تبدیل یک رابطه ابر نوع‪-‬زیر نوع به ساختار جداول بایستی‪:‬‬
‫– ویژگیهایی را که میان کلیه زیرنوعها مشترک هستند در جدول مربوط به‬
‫موجودیت ابرنوع و ویژگیهای خاص هر موجودیت زیرنوع را در جدول مربوطه‬
‫قرار داده‪ ،‬کلید اصلی جدول مربوط به موجودیت ابرنوع را در جداول زیرنوع‬
‫قرار می دهیم‪.‬‬
Summary of Symbols Used in E-R Notation
Summary of Symbols (Cont.)
Alternative E-R Notations
‫بخش ششم‪ :‬مدلسازی داده ها با استفاده از‬
‫نمودارهای موجودیت رابطه‪EDR‬‬
‫نگاشت یک نمودار ‪ ER‬به جداول پایگاه داده ها‬
‫‪ -1‬برای هر یک از موجودیتهای قوی‪ ،‬یک جدول در نظر بگيرید‪ .‬برای هر یک از ویژگیهای موجودیت یک‬
‫ستون در نظر بگيرید و کیلد اصلی جدول را مشخص کنید‪.‬‬
‫‪ -2‬برای هر یک از موجودیتها ضعیف‪ ،‬یک جدول در نظر بگيرید و کلید اصلی جدول را مشخص کنید‪.‬‬
‫نکته‪ :‬کلید اصلی موجودیتهای دو طرف موجودیت مرکب حتما باید جزء ویژگیهای این جدول باشند‪.‬‬
‫‪ -3‬برای هر یک از موجودیتهای مرکب‪ ،‬یک جدول در نظر بگيرید ‪ .‬کلید اصلی جدول را مشخص کنید‪.‬‬
‫نکته‪ :‬کلید اصلی موجودیتهای دو طرف موجودیت مرکب حتما باید جزء ویژگیهای این جدول باشند‪.‬‬
‫‪ -4‬برای هر رابطه دوتایی ‪1:1‬‬
‫چنانچه هر دو طرف رابطه اجباری و یا هر دو طرف اختیاری است‪ ،‬به دلخواه خود کلید اصلی یکی از‬‫جداول را به ویژگیهای جدول طرف مقابل اضافه نمایید‪.‬‬
‫چنانچه یک طرف رابطه اجباری و یا طرف اختیاری است‪ ،‬کلید اصلی جدول طرف اجباری را به ویژگیهای‬‫جدول طرف اختیاری اضافه نمایید‪.‬‬
‫بخش ششم‪ :‬مدلسازی داده ها با استفاده از‬
‫نمودارهای موجودیت رابطه‪EDR‬‬
‫نگاشت یک نمودار ‪ ER‬به جداول پایگاه داده ها (ادامه)‬
‫‪ -5‬برای هر رابطه دو تایی ‪1:M‬‬
‫کلید اصلی جدول طرف ‪1‬را به ویژگیهای جدول طرف ‪ M‬اضافه کنید‪.‬‬
‫‪ -6‬برای هر رابطه یکتایی ‪ 1:1‬یا ‪1:M‬‬
‫کلید اصلی موجودیت بازگشتی را با یک نام دیگر به ویژگیهای جدول اضافه نمایید‪( .‬به عنوان کلید خارجی)‬
‫‪ -7‬برای هر رابطه ‪-n‬تایی با ‪n>2‬‬
‫جدولی در نظر بگيرید که شامل کلیدهای اصلی کلیه موجودیتهای شرکت کننده در رابطه باشد‪.‬‬
‫‪ -8‬جداولی را که تنها یک ستون دارند و یا کلیه اطالعات موجود در آنها در جدول دیگری نيز موجود است را‬
‫حذف نمایید‪.‬‬
‫تذکر‪ :‬ترتیب موارد فوق الذکر الزامی نیست‪.‬‬
‫روشهاي طراحي منطقي پايگاه دادهها‬
‫‪ .1‬روش طراحی باال به پايين‬
‫‪ .2‬روش طراحی سنتز رابطهاي‬
‫‪ .3‬روش طراحی تركيبي‬
‫روش طراحي بال به پايین‬
‫در اين روش ابتدا مدلسازي معنايي دادهها انجام ميشود‪ .‬سپس مدلسازي را به مجموعهاي‬
‫از رابطهها تبديل ميكنيم‪ .‬حاصل اين فرايند‪ ،‬معموال مجموعهاي از رابطههاي خوشطرح‬
‫است‪.‬‬
‫روش سنتز رابطهاي‬
‫در اين روش مجموعه صفات خردجهان واقع را مشخص ميكنيم‪ .‬سپس با تحليل قواعد و‬
‫محدوديتهاي ناظر به صفات و تشخيص وابستگیهاي بين آنها‪ ،‬صفات را متناسبا باهم سنتز‬
‫ميكنيم‪ .‬هر گروه از صفات عنوان يك رابطه را به ما ميدهد به گونهاي كه حتياالمكان در‬
‫مطلوبترين صورت نرمال باشد‪ .‬هر رابطه بدستآمده نمايشگر بخش ي از خردجهان واقع بوده‪،‬‬
‫ضوابط يك طرح خوب و قابل دفاع را خواهد داشت‪.‬‬
‫روش تركيبي‬
‫در اين روش‪ ،‬ابتدا طراحي را با روش باال به پايين انجام ميدهيم و سپس با دخالت دادن برخي‬
‫محدوديتهاي جامعيتي كه در مرحله مدلسازي معنايي دادهها منظور نشدهاند و با تحليل هر‬
‫رابطه‪ ،‬مرحله نرمالترسازي رابطهها را انجام ميدهيم تا به مجموعهاي از نرمالترين رابطهها‬
‫برسيم‪.‬‬
‫خصوصيات طراحي خوب‬
‫‪ -1‬نمايش واضحي از خردجهان واقع باشد‪.‬‬
‫‪ -2‬نمايش صحيحي از خردجهان واقع باشد‪.‬‬
‫‪ -3‬نمايش جامعي از خردجهان واقع باشد‪.‬‬
‫‪ -4‬تمام قواعد جامعيتي كه قابل اعمال در هر مرحله از طراحي منطقي باشند‪ ،‬در طراحي‬
‫منظور شده باشند‪.‬‬
‫‪ -5‬معناي هريك از صفات از هر نوع موجوديت به درستي رعايت شده باشد‪.‬‬
‫‪ -6‬كمترين ميزان افزونگي را داشته باشد‪.‬‬
‫‪ -7‬كمترين ميزان اختالط اطالعات را داشته باشد‪.‬‬
‫‪ -8‬انعطافپذيري داشته باشد‪.‬‬
‫‪ -9‬كمترين دشواري در انجام عمليات ذخيرهسازي‬
‫‪ -10‬كمترين ميزان هيچمقدار‬
‫‪ -11‬هيچ اطالع جعلي در اثر انجام عمليات در پايگاه دادهها پديد نيايد‪.‬‬
‫‪ -12‬با درنظر گرفتن طراحي فيزيكي و تاثير آن در طراحي منطقي‪ ،‬بيشترين كارايي براي سيستم‬
‫كاربردي پايگاه دادهها تامين شود‪.‬‬
‫روش تبديل نمودار ‪ ER‬به رابطهها‬
‫حالت اول‬
‫• تعداد نوع موجوديت‪n>=2 :‬‬
‫• وضع موجوديتها‪ :‬مستقل‬
‫• چندي ارتباط‪N:M :‬‬
‫در اين حالت‪ n+1 ،‬رابطه الزم است‪ n .‬رابطه براي ‪ n‬موجوديت مستقل و يك‬
‫رابطه براي نمايش ارتباط بين آنها‪ .‬اگر ارتباط بين انواع موجوديتها‪ ،‬صفت ساده‬
‫يا مركب چندمقداري نداشته باشد‪ ،‬در اين صورت كليد كانديد رابطه نمايشگر‬
‫ارتباط بين ‪ n‬موجوديت‪ ،‬از تركيب كليدهاي كانديد ‪ n‬رابطه نمايشگر ‪n‬‬
‫موجوديت به دست ميآيد‪ .‬سپس كليدهاي خارجي‪ ،‬اجزاء تشكيلدهنده كليد‬
‫كانديد رابطه نمايشگر ارتباط هستند‪.‬‬
‫روش تبديل نمودار ‪ ER‬به رابطهها‬
‫حالت دوم‬
‫• تعداد نوع موجوديت‪ :‬دو‬
‫• وضع موجوديتها‪ :‬مستقل‬
‫• چندي ارتباط‪1:N :‬‬
‫در اين حالت‪ ،‬دو رابطه كفايت ميكند‪ :‬يك رابطه براي نمايش نوع موجوديت‬
‫طرف يك‪ ،‬يك رابطه براي نمايش نوع موجوديت طرف ‪ N‬و نيز ارتباط ‪.1:N‬‬
‫در رابطه اخير‪ ،‬كليد كانديد رابطه اول‪ ،‬به عنوان كليد خارجي رابطه دوم‪،‬‬
‫ارتباط مورد نظر را نشان ميدهد و جزء تشكيلدهنده كليد كانديد رابطه‬
‫نيست‪.‬‬
‫روش تبديل نمودار ‪ ER‬به رابطهها‬
‫حالت سوم‬
‫• تعداد نوع موجوديت‪ :‬دو‬
‫• وضع موجوديتها‪ :‬مستقل‬
‫• چندي ارتباط‪1:1 :‬‬
‫در اين حالت‪ ،‬دو رابطه الزم است‪ :‬يك رابطه براي نمايش يكي از دو‬
‫نوع موجوديت و رابطهاي ديگر براي نمايش نوع موجوديت ديگر و‬
‫ارتباط بين دو نوع موجوديت‪.‬‬
‫روش تبديل نمودار ‪ ER‬به رابطهها‬
‫حالت چهارم‬
‫• تعداد نوع موجوديت‪ :‬يك‬
‫• وضع موجوديتها‪ :‬مستقل‬
‫• چندي ارتباط‪N:M :‬‬
‫در اين حالت‪ ،‬ارتباط با خود داريم‪ .‬دو رابطه الزم است‪ :‬يك رابطه‬
‫براي نمايش خود نوع موجوديت و ديگري براي نمايش ارتباط‪ ،‬اعم‬
‫از اينكه مشاركت الزامي باشد يا نباشد‪.‬‬
‫روش تبديل نمودار ‪ ER‬به رابطهها‬
‫حالت پنجم‬
‫• تعداد نوع موجوديت‪ :‬يك‬
‫• وضع موجوديتها‪ :‬مستقل‬
‫• چندي ارتباط‪1:N :‬‬
‫در اين حالت‪ ،‬هم ”ارتباط با خود“ داريم و يك رابطه كفايت ميكند‪.‬‬
‫روش تبديل نمودار ‪ ER‬به رابطهها‬
‫حالت ششم‬
‫• تعداد نوع موجوديت‪ :‬يك‬
‫• وضع موجوديتها‪ :‬مستقل‬
‫• چندي ارتباط‪1:1 :‬‬
‫در اين حالت يك رابطه كفايت ميكند‪ ،‬به شرط آنكه مشاركت در‬
‫ارتباط الزامي باشد‪ .‬البته ميتوان با دو رابطه هم طراحي كرد‪.‬‬
‫روش تبديل نمودار ‪ ER‬به رابطهها‬
‫حالت هفتم‬
‫نمايش موجوديت ضعيف‬
‫موجوديت ضعيف داراي شناسه يكتا نيست‪ ،‬بلكه صفت مميزه دارد‪.‬‬
‫براي نمايش اين نوع موجوديت در طراحي پايگاه رابطهاي‪ ،‬يك رابطه‬
‫طراحي ميكنيم كه در عنوان آن‪ ،‬صفات موجوديت ضعيف و كليد‬
‫كانديد موجوديت قوي كه با آن ارتباط دارد (موجوديت شناسا)‪ ،‬وجود‬
‫دارند‪.‬‬
‫روش تبديل نمودار ‪ ER‬به رابطهها‬
‫حالت هشتم‬
‫وجود صفت چندمقداري‬
‫اگر ‪ ،MVA‬يك صفت (ساده يا مركب) چندمقداري‪ EID ،‬شناسه موجوديت ‪E‬‬
‫و ‪ ... A2 A،1‬و ‪ Ai‬ساير صفات تكمقداري موجوديت ‪ E‬باشند‪ ،‬در اين صورت‬
‫براي نمايش اين نوع موجوديت‪ ،‬دو رابطه الزم است‪:‬‬
‫‪EID‬‬
‫) ‪, A1 , A2 ,..., Ai‬‬
‫‪C.K .‬‬
‫‪EID, MVA‬‬
‫)‬
‫‪C .K .‬‬
‫( ‪R1‬‬
‫( ‪R2‬‬