نمایش نتایج: از شماره 1 تا 10 , از مجموع 10

موضوع: آموزش های پایگاه داده ها

  1. #1
    عضو انجمن MehrPC آواتار ها
    تاریخ عضویت
    Dec 2011
    نوشته ها
    394
    تشکر
    344
    تشکر شده 127 بار در 67 پست

    پیش فرض آموزش های پایگاه داده ها

    در این تاپیک قصد دارم آموزش پایگاه داده ها رو قرار بدم امیدوارم دوستان که علاقه دارند منو کمک کنند و اگه کمی و کاستی داره اضاقه کنند

    ضمنا تعداد تشکر ها باعث دلگرمی و ادامه کار میشه

    ---------- Post added at 12:34 PM ---------- Previous post was at 12:28 PM ----------

    مفاهيم اساسي

    داده
    داده (data) دارای تعاريف مختلفی است، به طور کلی داده ها كلمات و ارزش هاي واقعي هستند كه از طريق مشاهده و تحقيق بدست مي آيند، به عبارت ديگر داده نمودي از وقايع، معلومات، رخدادها، پديده ها و مفاهيم مي باشد.

    در محاسبات، داده به اطلاعي گفته می شود که به شکلی مناسب براي انتقال و پردازش ترجمه شود. در کامپيوتر و رسانه های ارتباطاتی امروزی داده به شکل باينری تبديل مي شود. بنابراين داده يک نمايش باينری از يک موجوديت منطقي ذخيره شده در حافظه کامپيوتر است.

    از نظر ساختاري داده به مقادير صفت خاصه انواع موجوديت ها اتلاق می شود.

    ريشه کلمه داده از عبارت لاتين datum گرفته شده که به معنی اطلاع است. و data فرم جمع آن است. اما datum بندرت استفاده می شود و اکثرا ترجيح می دهند data را به صورت يک کلمه مفرد استفاده کنند.

    اطلاع
    اطلاع (information) مفهومي است که براي گيرنده آن قابل درک بوده و با دانستن آن می تواند برای حل يک مسئله تصميم گيري يا ارزيابی كند.

    وقتي اطلاع وارد کامپيوتر شده ذخيره مي گردد به داده تبديل می شود. بعد از پردازش، داده خروجي مجددا به عنوان اطلاع دريافت مي شود.

    وقتي اسم صفت خاصه و مقدار منسوب به آن در دست باشند اطلاعي در مورد موجوديت حاصل مي شود.

    هنگاميکه اطلاعات در يک بسته خاص قرار می گيرند و براي درک موضوعی يا انجام کاری استفاده مي شود به دانش (knowledge) تبديل می شود.

    موجوديت
    موجوديت (entity) مفهوم کلي پديده، شيء يا فردي است که در مورد آن مي خواهيم اطلاع داشته باشيم و در کامپيوتر ذخيره کنيم.

    هر نوع موجوديت دارای مجموعه اي از صفات خاصه (attribute) است که ويژگي جداکننده يک نوع موجوديت از نوع ديگر محسوب می شود.

    مثال. اگر در نظر داريم يك سيستم پايگاه داده براي يك دبيرستان پياده سازي كنيم مواردي چون دانش آموزان، دبيران، دروس، كلاس ها و غيره جزء موجوديت هاي سيستم به شمار مي روند.

    مثال. موجوديت دانشجو در سيستم دانشگاه مي تواند داراي صفات خاصه: نام، نام خاوادگي، سن، سال تولد، رشته تحصيلي، سال ورود و ... باشد و يا موجوديت درس صفات خاصه: كد درس، نام درس و تعداد واحد ‎

    پايگاه داده
    يک بانك اطلاعاتي يا پايگاه داده (database) مجموعه اي سازمان يافته و بدون افزونگي از داده های مرتبط به هم است که مي تواند توسط سيستم هاي کاربردي مختلف به اشتراک گذاشته شود و به راحتي دسترسی، مديريت و بهنگام شود.

    وقتی داده به صورت پايگاه داده سازماندهی می شود، کاربر و برنامه نويس نيازي به دانستن جزئيات ذخيره سازي داده ندارند. علاوه براين داده مي تواند بدون تاثير روي اجزاي ديگر سيستم تغيير کند. برای مثال از اعداد حقيقي به صحيح، از يک ساختار فايل به ديگری يا از دستگاه ذخيره سازي نوري به مغناطيسي تغيير کند.

    ويژگي هاي داده در پايگاه داده

    ويژگی هائی که داده در پايگاه داده بايد داشته باشند در ليست زير آمده است:

    1. اشتراکی شدن (shared)
    • داده در پايگاه داده بين چندين کاربر و برنامه کاربردی به اشتراک گذاشته می شود.
    2. ماندگاري(persistence)
    • وقتي داده در پايگاه داده ذخيره شد پايدار است و از بين نمی رود، مگر آنکه توسط سيستم پايگاه داده تغيير کند.
    3. امنيت (security)
    • داده در پايگاه داده از فاش شدن، تغيير و تخريب بدون مجوز محافظت می شود. مدير سيستم توسط سطوح دسترسي و قيدهای امنيتی نحوه دستيابی به داده را تعريف می کند و اطمينان می دهد که دستیابی از طريق مناسب انجام می شود.
    4. اعتبار (validity)
    • يا جامعيت (integrity) و يا صحت(correctness) به درستی داده در پايگاه داده نسبت به موجوديت دنياي واقعي معتبر اشاره دارد. مثلا موجودی بانک نبايد منفی باشد.
    5. سازگاری (consistency)
    • داده در پايگاه داده با مقدار واقعي داده در دنياي خارج سازگار است. وقتی يک فقره اطلاع در بيش از يک نقطه ذخيره شود و لازم باشد بهنگام شود، اگر بهنگام سازی در همه نقاط انجام نشود ناسازگاری ايجاد می شود.
    6. کاهش افزونگی (non redundancy)
    • داده در پايگاه داده داراي حداقل افزونگي است. افزونگي به اين معناست که هيچ دو فقره داده در بانک معرف يک موجوديت در دنياي خارج نباشد.
    7. استقلال (independence)
    • تغييردر نمايش فيزيکی، تکنيک های دستيابی و سازماندهی داده تاثيری روی برنامه های کاربردی ندارد.
    روش هاي ذخيره داده

    دو روش كلي براي ذخيره و بازيابي خودكار داده ها وجود دارد: سيستم فايلی ساده و سيستم پايگاه داده

    سيستم فايلی (file system)

    در اين روش، داده ها در فايل هاي مجزا قرار گرفته و سيستم های جداگانه ای به نام سيستم پردازش فايل براي استفاده از فايل های داده ای طراحي مي شوند. در اين سيستم ها هر برنامه ي كاربردي تنها به فايل داده ای مربوط به خود می تواند مراجعه مي كند.

    اشکالات چنين طراحي در ذخيره داده به طور خلاصه عبارتند:

    1. افزونگي و ناسازگاري داده به دليل چندين فرمت فايل و تکرار اطلاعات در فايلهاي مختلف.
    2. مشکل در دستيابی داده و نياز به نوشتن برنامه جديدي براي انجام هر کار
    3. قيدهای جامعيت به جاي اينکه صريحا بيان شوند در کدبرنامه از نظر پنهان مي شد. اضافه کردن قيدهاي جديد يا تغيير قيدهاي موجود به سختي صورت مي گيرد.
    4. ايجاد ناسازگاري به دليل وجود چندين کپي از فقره هاي داده
    5. مشکلات امنيتی به دليل دسترسي همروند و بدون کنترل توسط چند کاربر
    سيستم پايگاه داده (database system)

    در اين روش كليه داده ها به صورت مجتمع در پايگاه داده ذخيره می شود، ولي هر كاربر ديد خاص خود را نسبت به داده ها دارد. كاربران مختلف مي توانند به طور مشترك با پايگاه داده كار كنند. به دليل تجمع داده افزونگي به حداقل ممكن كاهش مي يابد.

    نرم افزاری به نام سيستم مديريت پايگاه داده ( DBMS ) به عنوان واسطه بين برنامه هاي كاربردي و پايگاه داده ايفاي نقش مي كند لذا امنيت داده ها در اين روش بيشتر است.

    چند نمونه از کاربردهای سيستم پايگاه داده موارد زير هستند:

    • انجام کليه تراکنش های بانکداري
    • رزرواسيون و زمانبندي خطوط هوائي
    • ثبت نام دانشجويان، واحدگيری و ثبت نمرات در مراکز آموزشی
    • ثبت اطلاعات مشتريان، محصولات و فاکتورهای خريد و فروش
    • پيگيري سفارشات و پيشنهادات در فروش online
    • ثبت رکوردهاي کارمندان و محاسبات حقوق، کسورات مالياتي در سازمان ها
    عناصر اصلي سيستم پايگاه داده

    اجزاء اصلي سيستم بانك اطلاعاتي عبارتند از:

    1. داده ها
    • شامل داده هائي درباره موجوديت هاي مختلف محيط و ارتباط بين موجوديت ها.
    2. سخت افزار
    • شامل عناصر پردازشی، رسانه های ذخيره سازی داده، دستگاه هاي جانبي، سخت افزارهای ارتباطی و غيره.
    3. نرم افزار
    • شامل سيستم عامل و نرم افزارهاي ارتباطي شبکه، نرم افزار سيستم مديريت پايگاه داده و برنامه هاي كاربردي.
    4. رويه های عملياتی
    • شامل کليه عملياتی که روی پايگاه داده انجام می شود، نظير تهيه پشتيبان، آمارگيری و ...
    5. کاربر
    • شامل كاربران يا كساني كه به نحوي با سيستم در ارتباط هستند نظير مديرپايگاه داده(DBA)، طراحان پايگاه داده (DBD)، برنامه نويسان پايگاه داده (DBP) و کاربران نهائي(end users).
    مزايا و معايب سيستم هاي پايگاه داده

    مزاياي مهم سيستم پايگاه داده

    1. تجمع، وحدت ذخيره سازي و کنترل متمرکز داده ها
    2. كاهش افزونگي. تجمع داده و وحدت ذخيره سازی باعث کاهش افزونگی می شود. مثلا آدرس های مختلف برای يک مشتری در قسمت های مختلف اداره ثبت نمی شود.
    3. به اشتراك گذاشتن داده ها. چند كاربر مي توانند در هم زمان به پايگاه داده دسترسي داشته باشند. برنامه هاي كاربردي موجود قادر به اشتراك گذاردن داده ها در پايگاه داده بوده و برنامه هاي كاربردي جديد نيز مي توانند از اين داده ها استفاده كنند.
    4. پرهيز از ناسازگاري. با كاهش افزونگي، كنترل متمرکز و جامعيت، سازگاري و يكپارچگي داده ها تضمين مي شود.
    5. اعمال محدوديت هاي امنيتي. سيستم هاي امنيتي در پايگاه داده امكان اعمال كنترل هاي مختلف را براي هر نوع دسترسي (* بازيابي،اصلاح، حذف و غيره) بر روي پايگاه داده فراهم مي كند.
    6. صحت بيشتر داده و استقلال از برنامه های کاربردی
    7. راحتی پياده سازی برنامه های کاربردی جديد
    معايب سيستم پايگاه داده

    1. طراحی سيستم های پايگاه داده پيچيده تر، دشوارتر و زمان برتر است.
    2. هزينه قابل توجهی صرف سخت افزار و نصب نرم افزار می شود.
    3. آسيب ديدن پايگاه داده روی کليه برنامه های کاربردی تاثير می گذارد.
    4. هزينه زياد برای تبديل از سيستم فايلی به سيستم پايگاه داده نياز است.
    5. نيازمند تعليم اوليه برنامه نويسان و کاربران و استخدام کارمندان خاص پايگاه داده است.
    6. نياز به تهيه چندين کپی پشتيبان از پايگاه داده می باشد.
    7. خطاهای برنامه می توانند فاجعه برانگيز باشند.
    8. زمان اجرای هر برنامه طولانی تر می شود.
    9. بسياروابسته به عمليات سيستم مديريت پايگاه داده است.

  2. تعداد تشکر ها ازMehrPC به دلیل پست مفید


  3. #2
    عضو انجمن MehrPC آواتار ها
    تاریخ عضویت
    Dec 2011
    نوشته ها
    394
    تشکر
    344
    تشکر شده 127 بار در 67 پست

    پیش فرض پاسخ : آموزش های پایگاه داده ها

    نسل هاي پايگاه داده


    نسل اول (1957-1948) : فايل ترتيبی

    رسانه خارجی در اين نسل نوارهای مغناطيسی بوده اند. اين نسل را می توان نسل بدون نرم افزار واسط ناميد. مشخصات کلی اين نسل عبارتند از:

    • ساختار فايل ها ترتيبی است
    • ساختار فيزيکی همان ساختار منطقی فايل است
    • تنها روش پردازش فايل ها پردازش يکجا (batch processing) است
    • برنامه کاربردی تمام عمليات ورودی/خروجی را انجام می دهد و نرم افزار واسطی برای مديريت پردازش فايل ها وجود ندارد
    • طراحی ساختار فيزيکی به عهده کاربر است
    • تغيير در ساختار داده منجر به تغيير در برنامه کاربردی می شود
    • افزونگی داده حداکثر است
    • اشتراک داده مطرح نيست
    • نسخه های متعدد از فايل هنگام بهنگام سازی ايجاد می شود
    نسل دوم (1966-1958) : شيوه های دسترسی
    مهمترين ويژگی اين نسل پيدايش نرم افزارهای AM (access method) يا شيوه های دسترسی و همچنين ايجاد رسانه های با دسترسی مستقيم مانند ديسک است.

    AM نرم افزاری است که مبتنی بر يک استراتژی دستيابی، به جنبه های فيزيکی محيط ذخيره سازی و عمليات آن می پردازد و جنبه های فيزيکی را تا حدی از ديد کاربر مخفی می کند. و برنامه کاربردی ديگر نيازی به پرداختن به آنها ندارد. مشخصات اين نسل عبارتند از:

    • نرم افزار واسط AM برای ايجاد فايل ها با ساختار گوناگون بين برنامه های کاربردی و محيط ذخيره سازی وجود دارد
    • امکان دسترسی ترتيبی و مستقيم به رکورد وجود دارد
    • پردازش در محيط های بلادرنگ (Real Time)، برخط (On-Line) و يکجا بسته به نوع سيستم عامل می توانند انجام شوند
    • ساختار فيزيکی و منطقی فايل از هم جدا است ولی هنوز برنامه کابردی از محيط ذخيره سازی مستقل نيست
    • امکان دسترسی بر اساس چندين کليد وجود ندارد
    • روش های ايمنی و حفاظت داده ابتدائی وجود دارد
    • داده ها برای کاربردهای خاص طراحی و ذخيره می شوند
    • تکرار داده هنوز در حد نسبتا بالائی است
    • اشتراک داده ها تا حدی ايجاد شده است
    نسل سوم (1973-1967) : سيستم مديريت داده
    در اين نسل نرم افزار کامل تری به نام سيستم مديريت داده (Data Manegement System) به عنوان واسط بين برنامه کاربردی و محيط فيزيکی ايجاد شد.

    DMS از AM استفاده می کند و ارتباط بين ديد منطقی و فيزيکی را ايجاد می کند. برای بازيابی يک رکورد DMS از AM درخواست می کند و AM رکوردهای موردنظر را از بلاک های فايل بازيابی و در اختيار DMS قرار می دهد تا کل رکورد را به برنامه بدهد

    • نرم افزار DMS واسط برنامه کاربردی و داده است.
    • فايل های منطقی متعددی می توانند از داده های فيزيکی مشترک بهره ببرند
    • ميزان تکرار داده کاهش يافته است
    • داده های مشترک در کاربردهای متنوع بکار می روند
    • صحت داده تا حدی تامين می شود
    • نشانی دهی در سطح فيلد يا گروهی از فيلدها ممکن است
    • بازيابی بر کمک چند کليد امکان پذير است
    • تسهيلاتی برای پردازش فايل پيش بينی شده است
    • ترکيبی از انواع ساختارهای فايل بکار می رود
    نسل چهارم(1980-1974): سيستم مديريت پايگاه داده
    اين نسل از اواخر دهه 60 شروع شده و هنوز هم ادامه دارد. مهمترين ويژگی آن استقلال داده ای است. نرم افزار پيچيده ای به نام سيستم مديريت پايگاه داده(DataBase Management System) يا DBMS واسط بين برنامه های کاربردی و محيط فيزيکی است و اجازه می دهد کاربران در يک محيط انتزاعی کار کنند و به داده ها دسترسی پيدا کنند.

    • نرم افزار پيچيده و جامع DBMS واسط بين برنامه های کاربردی و محيط فيزيکی است
    • برنامه های کاربردی از جنبه های فيزکی مستقل هستند
    • کاربران در يک محيط انتزاعی مبتنی بر يک ساختار داده ای کار می کنند
    • سرعت دستيابی به داده بالا است
    • امکان استفاده اشتراکی از داده ها وجود دارد
    • امکان کنترل متمرکز روی کليه داد های عملياتی
    • ايمنی داده زياد است
    • افزونگی کاهش پيدا کرده است
    • مفهوم چند سطحی بودن معماری (داخلی، خارجی، ادراکی) بسط پيدا کرد
    • سيستم های پايگاه داده توزيع شده طراحی شده اند
    نسل پنجم(1989-1981) : پايگاه معرفت
    اين نسل به که نسل پايگاه معرفت (Knowledge Base) شناخته شده است با استفاده از منطق صوری، سيستم های خبره، هوش مصنوعی و پردازش زبان طبيعی سيستمی طراحی و ايجاد می شود که قادر به استناج منطقی از داده های ذخيره شده است.

    پايگاه معرفت مجموعه ای از واقعيت های ساده و قواعد عام است که نشان دهنده بخشی از جها واقعی باشد.

    • سيستم پايگاه معرفت که مسئوليت ذخيره سازی، امنيت، جامعيت و تامين نيازهای کاربران رابرعهده دارد

  4. تعداد تشکر ها ازMehrPC به دلیل پست مفید


  5. #3
    عضو انجمن MehrPC آواتار ها
    تاریخ عضویت
    Dec 2011
    نوشته ها
    394
    تشکر
    344
    تشکر شده 127 بار در 67 پست

    پیش فرض پاسخ : آموزش های پایگاه داده ها

    سيستم مديريت پايگاه داده


    DBMS مديريت پايگاه داده را بر عهده دارد و مجموعه اي پيچيده و متشکل از تعدادي مولفه است که هر کدام وظيفه خاصي را ايفا مي کند.


    سيستم مديريت پايگاه داده


    سيستم مديريت پايگاه داده يا به طور خلاصه (DataBase Management System) DBMS مهمترين نرم افزاري در سيستم پايگاه داده است كه به عنوان رابط بين پايگاه داده و كاربر و برنامه ها ی کاربردی عمل مي نمايد.

    كليه فايل هاي پايگاه داده فقط در اختيار اين نرم افزار قرار گرفته و دستيابي به آنها تنها از طريق DBMS امکان پذير است.

    DBMS سرويس هائي جهت دسترسي داده در پايگاه داده فراهم مي کند به نحوی که از کليه خواص داده محافظت شود.

    وظايف سيستم مديريت پايگاه داده
    وظايف DBMS در سيستم های مختلف تا حدودی متقاوت بوده و بستگي به نوع كاربران آن دارد. اما به طور كلي اين وظايف عبارتند از:

    1. امکان تعريف پايگاه داده
    2. امکان ايجاد پايگاه داده
    3. امکان دستکاري داده ها
    4. بازيابي پايگاه داده
    5. بهنگام سازي پايگاه داده (عمليات درج، حذف و جايگزيني)
    6. تامين تسهيلاتي براي کاربر به منظور توسعه سيستم
    7. امکان سازماندهي مجدد
    8. کنترل امنيت و جامعيت داده ها
    9. ايجاد ديکشنري داده ها
    10. امکان کنترل کارائي
    تراکنش
    تراکنش (transaction) یک برنامه فعال است که دنباله ای از دستورات را شامل می شود و به طور خاص بعضی عمليات آن روی پایگاه داده است.

    سه عمل تراکنشی خاص وجود دارد: start که نشان می دهد يک تراکنش دارد شروع می شود، commit که دلالت بر اتمام عادی تراکنش دارد و abort که بيان کننده پايان يافتن تراکنش به دليل سقط آن است و کليه اثرات ترکنش سقط شده بايد rollback يا بی اثر شود. وقتی تراکنش commit می شود تاثیرش روی پايگاه داده بايد دائمی شود.

    هر تراکنش باید پايگاه داده را از یک حالت سازگار به حالت سازگار بعدی ببرد. تراکنش بايد دارای خواص ACID باشد تا پايگاه داده را در حالت سازگار باقی نگهدارد. خواص ACID حروف اول چهار خاصيت زير می باشند:

    1. اتميسيته (Atomicity)

    تراکنش ها اتمیک هستند یا اصلا شروع نمی شوند یا وقتی آغاز شدند حتما به پایان می رسند. یا همه عملیات انجام می شود یا هیچکدام. نگهداشتن خاصیت اتمیسیته به عهده کنترل همروندی و ترمیم است.

    2. سازگاری (Consistency)

    یک تراکنش يا پايگاه داده را به حالت سازگار جديدی می برد يا اگر شکستی رخ داد کليه داده ها به حالت قبل از شروع تراکنش برمی گردند.

    3. ايزوله بودن (Isolation)

    تراکنشی که در حال اجراست و هنوز به پايان نرسيده تاثیرش از بقيه مخفی است مگر اینکه commit شده باشند. اجرای همروند تراکنش ها باید به صورتی باشد که انگار پشت سرهم اجرا شده اند. حفظ اين خاصيت بر عهده کنترل همروندی است.

    4. ماندگاری (Durability)

    از وقتی تراکنشی commit شد تاثیرش دائمی است؛ حتی اگر سیستم خراب شود داده در حالت درست خود باقی می ماند.

    اجزای سیستم مدیریت پایگاه داده

    وظایف DBMS توسط تعدادی مولفه نرم افزاری انجام می شود. هر كدام از این مولفه ها ممكن است مركب از چند واحد كوچكتر باشند. تعدادی از سرویس های که توسط مولفه های DBMS داده می شوند در زیر لیست شده است:

    1. پردازش تراکنش (Transaction Processing)

    پردازش تراکنش عملیاتی که از منابع مختلف می رسد را روی پایگاه داده اجرا می کند به نحوی که خواص مطلوب تراکنش خدشه دار نشود. سرویس های کنترل همروندی و ترمیم به این مولفه برای برقراری خواص ACID کمک می کنند. به این ترتیب اجرای همروند تراکنش ها و سازگاری پایگاه داده حتی در صورت وقوع شکستی در سیستم تضمین می شود.

    2. کنترل همروندی (Concurrency Control)

    مدیریت اجرای همروند تراکنش ها روی پایگاه داده در حین برقراری سازگاری را به عهده دارد.

    3. ترمیم (Recovery)

    ترمیم تضمین می کند که اگر اجرای تراکنش با عدم موفقیت یا سقط روبرو شد، تاثیر نامطلوبی روی پایگاه داده یا تراکنش های دیگر نگذارد و حالت پایگاه داده را همیشه سازگار نگه دارد.

    4. مدیریت ثبت احوال(Log Management)

    هر اتفاقی در سیستم در یک فایل ذخیره می شود و توسط مدیریت ترمیم برای حفظ صحت و اعتبار پایگاه داده هنگام خرابی يا سقط سيستم استفاده می شود.

    5. واسطه زبانی (Language Interface)

    دستوراتی را برای تعریف داده، کار کردن با آن دراختیار کاربران و برنامه های کاربردی قرار می دهد.

    6. تحمل پذیری خطا(Fault Tolerancy )

    توانائی ارائه سرویس های قابل اطمینان توسط DBMS حتی در صورت بروز نقص را تحمل پذیری خطا می گویند. انواع خطاهائی که ممکن است پیش بیاید عبارتند از:
    • خطای منطقی : تراکنش موفق نمی شود مثلا به دلیل ورودی بد، سرریزی
    • خطای سیستمی : تراکنش موفق نمی شود مثلا به دلیل بن بست
    • سقط سیستم : قطع برق، پاک شدن حافظه اصلی، پر شدن دیسک
    • ناتوانی دیسک : خرابی هد، خرابکاری عمدی، آتش سوزی،
    7. کاتالوگ داده (Data Catalog)

    یا دیکشنری داده یک پایگاه داده سیستمی شامل اطلاعاتی درباره داده، ارتباطات و قیدها در پایگاه اصلی است. گاهی به آن متاداده هم گفته می شود.

    8. امنیت (Security)

    امنیت به محافظت داده در مقابل افشاشدن، تغییر و خرابی اشاره دارد. هر کابر و برنامه کاربردی امتیاز ویژه ای برای دسترسی به داده دارد. کاربران ممکن است دیدگاه های مختلفی نسبت به داده های پایگاه داده با توجه امتیازات ویژه خود داشته باشند. سیستم امنیتی همچنین، توسط رویه های شناسائی و مجوز، دسترسی به پایگاه داده را محدود می کند.

    9. مدیریت ذخیره سازی (Storage Management)

    DBMS مکانیسم های خاصی برای ذخیره دائمی داده و دسترسی به منبع فیزیکی و بازیابی داده دارد. مدیر ذخیره سازی بین داده ذخیره شده در پایگاه داده و برنامه کاربردی و پرس و جوهای ارسال شده به سیستم واسطه می شود.

    10. مدیریت قفل (Lock Management)

    هنگام استفاده اشتراکی از داده انواع مختلفی از قفل روی داده گذاشته می شود (مثل Read Lock و Write Lock).

    11. مدیریت بن بست (Deadlock Management)

    بن بست وقتی اتفاق می افتد که تراکنش ها برای بدست آوردن منابع در یک دایره بسته قرار گیرند یعنی هر یک منبعی در اختیار دارد که مورد تقاضای دیگری است و درخواست منبعی را می کند که در اختیار تراکنش منتظر منبع است. در پایگاه داده منابع رکوردها هستند. مديريت منبع مسئول رفع اين مشکل هستند.

    انواع سیستم های مدیریت پایگاه داده


    انواع مختلفی از سيستم های پايگاه داده وجود دارند که هرکدام به منظور خاصی طراحی و پياده شده اند. دسته بندی سيستم های پايگاه داده به صورت زير انجام گرفته است:

    سیستم مدیریت پایگاه داده توزیع شده (Distributed DataBase Management System)

    سيستم های توزيع شده بر توزيع داده و همچنين همبستگی فعاليت ها و کنترل روی اجزای توزيع شده سيستم دلالت دارند. اکثر سيستم های توزيع شده برای تقسيم کردن بارکاری يا برای انتقال عملکردهای پردازش داده به نزديکی محل انجام اين وظايف است. در هردو حالت هدف نامحسوس بودن توزيع شدگی از ديد کاربر است.


    سیستم مدیریت پایگاه داده بلادرنگ (Real-Time DataBase Management System)

    سیستم های بلادرنگ سیستم های سریع با سرعت پاسخگوئی بالا هستند که زمان انجام کليه عمليات نقش مهمی در آنها دارد. سيستم بلادرنگ در تعامل با دنيای واقعی پاسخ قابل پيش بينی را در قاب زمان می دهد. ورودی، پردازش و پاسخ ها همگی از قبل تعريف شده هستند و حد زمانی مشخصی دارند و به نحوی بهينه می شوند که هر حالت ورودی يک حالت خروجی قابل پيش بينی دارد که هميشه در يک زمان و به يک روش اتفاق می افتد.

    سیستم مدیریت پایگاه داده تحمل پذیر خطا (Fault Tolerance DataBase Management System)

    سيستم تحمل پذير خطا سرويس هائی را دارد که با ناتوانی های اجزای سخت افزاری و نرم افزاری برخورد می کند. برای رسيدن به اين منظوربايد کليه نقاطی که احتمال نقصی در آنها وجود دارد از قبل بررسی شده، ابزارهائی برای تشخيص، اصلاح و يا ترميم آنها به نحوی طراحی شود که کمترين تاثير را روی برنامه های کاربردی بگذارند. مکانیسم های RAID، Shadow Memory و کپی از جمله روش هائی هستند که استفاده می شوند.



    سیستم مدیریت پایگاه داده مطمئن (Secure DataBase Management System)

    در يک سيستم مطمئن کليه اعمالی که کاربران و برنامه های کاربردی اجازه دارند انجام دهند همچنين زمان و مقدار انجام آنها کنترل می شوند. به عنوان مثال يک سيستم پرسنلی ممکن است درنظرداشته باشد به کليه کاربران اجازه دستيابی به سابقه پرسنلی خودشان و استخراج اطلاعات شغلی شان را بدهد اما دسترسی به سابقه کارمندان ديگر يا حتی برخی اطلاعات مربوط به خودشان امکان پذير نباشد. برای دادن چنين سرويسی سيستم پايگاه داده بايد قابليـت تعريف حقوق دسترسی و رسيدگی به آنها را درقبال کاربرانی که به داده دسترسی دارند داشته باشد.

    سیستم مدیریت پایگاه داده ناهمگون (Hetrogenouse DataBase Management System)

    سيستم ناهمگون از DBMS های مختلف تشکيل شده است. برای مثال شعب يک شرکت هر کدام منحصرا نيازهای پردازشی خود را با سخت افزار و نرم افزارجداگانه برطرف می کنند. اگر نياز باشد اين سيستم ها با هم فعل و انفعال داشته باشند و از طريق شبکه به هم پيوند داده شوند يک HTDBMS ايجاد می شود تا پایگاه داده های مختلف با هم ارتباط برقرار کند.


    سیستم مدیریت پایگاه داده چندرسانه ای (Multimedia DataBase Management System)

    سيستم های محاسباتی چندرسانه ای انواع متنوعی از منابع داده ای گرافيکی، تصاوير ويدئويی، صوت و متن را استفاده و يا با هم ترکيب می کنند. اين منابع داده ای پيچيده بايد برای سيستم محاسباتی بسهولت قابل دسترس باشند. برای استفاده در برنامه های کاربردی interactive چنين سيستم هائی از ترکيب الزامات پايگاه داده های بلادرنگ با سيستم های گرافيکی تعاملی استفاده می کنند تا ارائه اطلاعات سنکرون شده و بلادرنگ حاصل شود.

    سیستم مدیریت پایگاه داده متحد (Federated DataBase Management System)

    نسل جديد سيستم های مديريت پايگاه داده سعی دارند اطلاعات جمع آوری شده از سنسورها را مستقيما ذخيره کنند. اين سيستم ها از پایگاه های دانش نیز حمايت می کنند.

  6. تعداد تشکر ها ازMehrPC به دلیل پست مفید


  7. #4
    عضو انجمن MehrPC آواتار ها
    تاریخ عضویت
    Dec 2011
    نوشته ها
    394
    تشکر
    344
    تشکر شده 127 بار در 67 پست

    پیش فرض پاسخ : آموزش های پایگاه داده ها

    معماری پايگاه داده



    ANSI/SPARC

    سيستم های مديريت پايگاه داده دارای معماری های يکسانی نيستند. معماری سه سطحی ANSI/SPARC يکی از استانداردهایی است که امروزه اساس اکثر سيستم های مديريت پايگاه داده را شکل می دهد. اين استاندارد توسط گروه مطالعاتی ANSI/SPARC اولين بار در سال 1975 برای طراحی سیستم های مدیریت پایگاه داده پیشنهاد شد.

    ANSI/SPARC مخفف American National Standards Institute, Standards Planning And Requirements Committee است.

    معماری ANSI/SPARC سه سطح مجزا را برای توصيف داده در يک پايگاه داده تعيين می کند:

    • سطح خارجی(external level)
    • سطح ادراکی (conceptual level)
    • سطح داخلی(internal level)
    هدف معماری سه سطحی اين است که امکاناتی را فراهم کند تا کاربران بتوانند با ديدگاه های شخصی خود به داده موردنياز دسترسی پيدا کنند. يعنی هر کاربری بتواند به داده مشترک دسترسی پيدا کند اما ديد خاص خود را داشته باشد.

    از طرف ديگر فاصله بین سطح داخلی از سطح خارجی دلالت بر این دارد که کاربر نیازی به دانستن جزئیات فیزکی داده ذخیره شده در پایگاه داده ندارد. این تفکیک سطح اجازه تغییر ساختار ذخیره سازی پایگاه داده را بدون تاثیر روی دیدهای کاربران می دهد. لازمه اين استقلال سطوح از همديگر است به نحوی که تغييرات روی يک سطح روی بقيه تاثير نگذارد.


    سطح خارجی
    [/CENTER]
    سطح خارجی دید کاربر از داده های ذخیره شده در پايگاه داده است. منظور از دید کاربر (user view) قسمتی از پایگاه داده است که کاربر با آن سروکار دارد. يعنی مجموعه ای از صفات خاصه موجوديت هائی است که در اختيار کاربر قرار داده می شود. هر کاربر دیدگاه های خاص خود را از پايگاه داده می تواند داشته باشد.

    دید هر کاربر باید تعریف شود. به تعریف و شرح دید کاربر شمای خارجی (external schema) می گویند. برای تعريف شمای خارجی از یک مدل داده استفاده می شود که معمولا همان است که در سطح ادراکی بکار رفته است.

    سطح ادراکی

    سطح ادراکی کل داده های که در پایگاه داده ذخیره می شوند و ارتباط مابين آنها را شرح می دهد. یعنی داده هائی درباره انواع موجودیت ها و ارتباط آنها در محیط عملیاتی را توصيف می کند.

    سطح ادراکی دید طراح پایگاه داده از داده های ذخیره شده در پايگاه داده است. داده های دنيای واقعی آنطور که واقعا هستند توسط طراح پايگاده داده مدل می شوندد.

    برای تعریف سطح ادراکی از یک ساختار یا مدل داده استفاده می شود که شمای ادراکی (conceptual schema) ناميده می شود. شمای ادراکی کلیه داده ها و ارتباط بین آنها را توصیف می کند. علاوه بر اين رويه های شناسائی و قیدهای جامعیت را نيز دربر می گيرد.

    برای کسب استقلال داده، شمای ادراکی تنها درگير معنی داده است و جنبه های نمایش داده، سازماندهی فیزیکی و استراتژی های دستيابی نديده گرفته می شود.

    شمای خارجی از شمای ادراکی مشتق می شود و اگر مدل داده در هر دو سطح یکسان نباشد سیستم پایگاه داده را دوساختاری می نامند.

    سطح داخلی

    سطح داخلی درگیر چگونگی نمایش فیزیکی پایگاه داده روی سیستم کامپیوتری است و شرح می دهد چگونه داده واقعا در پایگاه داده و سخت افزار ذخیره می شود.

    سطح داخلی دید طراح پايگاه داده از محیط فیزیکی ذخیره سازی و درواقع فایل های محیط فیزیکی است که توسط شمای داخلی (internal schema) توصيف می شود. شمای داخلی نحوه نمايش فيزيکی داده هایی را که در شمای ادراکی شرح داده شده را مشخص می کند. انواع مختلف رکوردها، فيلدهای داده، فایل ها، نحوه نمایش رکوردها در فایل، استراتژی دستیابی، شاخص ها و چگونگی ترتیب رکوردها در فایل توسط شمای داخلی تشریح می شوند.

    جزئيات تبديل به منبع ذخيره سازی در معماری سه سطحی بيان نمی شود و از این سطح به پائین در اختیار DBMS نیست و به عهده سیستم عامل و درایورهای دستگاه ذخیره سازی است.

    مثال. در يک سازمان موجوديت کارمند را درنظر بگيريد. دوکاربرUser1 و User2 با دو ديد مختلف با اين موجوديت کار می کنند. تعريف ديدهای خارجی، ادراکی و داخلی می توانند چنين باشند:


    خارجی.

    User View 1(PL/1):
    DCL 1 EMPP,
    2 Emp# Char(6),
    2 Sal Fixed Bin (31);
    User View 2(COBOL):
    01 EMPC.
    02 Empano Pic x(6).
    02 Pic x(4).


    ادراکی.

    Employee
    Employee_Number Character(6)
    Department_Number Character(4)
    Salary Numeric (5)


    داخلی.

    Stored_Emp
    Prefix Type=Byte(6), Offset = 0
    Emp# Type = Byte (6), Offset = 6, Index = Empx
    Dept# Type = Byte (4), Offset = 12
    Pay Type = FullWord, Offset = 16
    تبديلات بين سطوح

    در معماری سه سطحی روش هائی برای تبديل سطوح به يکديگر وجود دارد. دو سطح از تبديل موجود است:

    • تبديل ادراکی/داخلی ارتباط ديد داخلی و ادراکی را تعريف می کند. تعيين می کند رکوردها و فيلدهای سطح ادراکی چگونه در سطح داخلی نمايش داده شوند. تغييرات در سطح داخلی باعث عوض شدن تبديل ادراکی/داخلی می شود. بنابراين شِمای ادراکی ممکن است ثابت بماند تا استقلال فيزيکی حاصل شود.
    • تبديل خارجی/ادراکی ارتباط ديد ادراکی و يک ديد خاص خارجی را برقرار می کند. مثلا يک صفت خاصه از ديد کاربری ممکن است ترکيبی از چندين فيلد در سطح ادراکی باشد. تغيير در تعاريف ادراکی باعث تغيير نگاشت ادراکی/خارجی می شود. از اين رو شِمای خارجی ممکن است ثابت بماند تا استقلال داده منطقی بدست بيايد.
    استقلال داده
    سيستم های قديمی وابسته به داده بودند به اين معنی که روش سازماندهی داده در دستگاه جانبی و روش دسترسی به آن توسط برنامه و در منطق آن ساخته می شدند. در چنين سيستمی تغيير در ساختار دخيره سازی يا استراتژی دستيابی بدون تاثير روی برنامه غيرممکن است.

    يکی از مزايای سيستم پايگاه داده استقلال داده است. استقلال داده به معنی مصونيت برنامه ها از تغييرات ساختار ذخيره سازی و استراتژی دستيابی است. ساختار ذخيره سازی بدون تاثير روی ديدهای کاربران است می تواند تغيير کند. پايگاه داده و برنامه های کاربری هم می توانند مستقل از يکديگر تغيير کنند.

    دو نوع استقلال داده وجود دارد:

    1. استقلال فیزیکی داده
    • استقلال فیزیکی داده نشان می دهد تا چه اندازه شمای داخلی می تواند بدون تاثیر روی برنامه های کاربردی تغییر کند.
    2. استقلال منطقی داده
    • استقلال منطقی داده نشان می دهد تا چه اندازه شمای ادراکی می تواند بدون تاثیر روی برنامه کاربردی تغییر کند.
    زبان ميزبان و زبان فرعي داده

    برنامه نويسان، برنامه های کاربردی را با استفاده از يک زبان های سطح بالا نظير Visual basic، Java و Visial C پياده سازی می کنند. زبان سطح بالائی که علاوه بر داشتن امکانات گوناگون دارای دستوراتی برای تعريف و کار با داده هستند زبان ميزبان (host language) ناميده می شوند.

    زيرمجموعه ای از زبان ميزبان که مختص عمليات ذخيره و بازيابی اطلاعات از پايگاه داده است زبان فرعی داده (Data Sub Language) نام دارد.

    هر DSL ترکيبی از سه زبان ديگر است:

    1. احکام تعريف داده (DDL)
    2. احکام کارکردن با داده (DML)
    3. احکام کنترلی (DCL)
    زبان تعریف داده

    DDL مخفف Data Definition Language امکان تعريف يا توصيف اشيای پايگاه داده را می دهد. ساختار ركوردها، تعریف فیلدها، محل فایل ها و شیوه ذخیره سازی داده ها در بانك به وسیله احكام DDL انجام می پذیرد.

    مثال. نوع رکور زير را درنظر بگيريد.

    create table account (
    account-number char(10),
    balance integer)

    زبان دستکاری داده

    DML مخفف Data Manipulation Language عمليات پردازشی و دستکاری اشيای پايگاه داده مانند insert، select، update را پشتيبانی می کند.

    DML به عنوان زبان پرس و جو هم شناخته می شود واغلب دارای قابلیت انجام محاسبات ریاضی و آماری است كه عملیات گزارش گیری از پايگاه داده را آسان تر می کند.

    زبان کنترل داده

    DCL مخفف Data Control Language امکان تعيين نوع استراتژی های دستيابی، تعريف شاخص ها و مرتب سازی داده های پايگاه داده را می دهد.

    دو دسته زبان DSL وجود دارد:

    • رویه ای (Procedural). کاربر داده ای که نياز دارد و نحوه دريافت آن را تعيين می کند.
    • غیررویه ای (nonprocedural) يا (Declarative). کاربر تعیین می کند چه داده ای مورد نیاز است ولی نحوه حصول آن را بيان نمی کند.

    هر سیستم پایگاه داده DSL خاص خود را دارد به عبارت دیگر هر مدل داده زبان فرعی خاص دارد. يک DSL خاص که توسط اغلب سيستم های فعلی پستيبانی می شود SQL است. SQL يک زبان غير رويه ای است.

    سطوح داخلی، ادراکی و خارجی هريک DSL خاص خود را دارند. شِمای هر سطح توسط DSL مربوطه نوشته می شود.

    XML مخفف Extensible Markup Language که توسط کنسرسیم W3C معرفی شده است زبان نشانه گذاری مستندات است تا زبان پایگاه داده. اما توانائی آن در تعیین تگ های جدید و تولید ساختارهای تودرتو باعث شد روش مهمی برای تبادل داده بشود و اکنون XML اساس کلیه فرمت های تبادل داده نسل جدید شده است. ابزارهای گوناگونی برای تجزیه، مرور و پرس و جو داده/مستندات XML موجود است.

    کاربران پایگاه داده
    کاربران يک سيستم پايگاه داده توسط روش هائی که با سيستم تعامل می کنند از هم تفکيک می شوند.

    تحلیل گران سیستم

    تحليل گران سيستم (system analysts) با گروه کاربران پایگاه داده به منظور درک نیازهای اطلاعاتی و پردازشی آنها ارتباط دارند. نیاز های اطلاعاتی و پردازشی هر گروه را مجتمع می کنند و مستندسازی می کنند.

    طراحان پایگاه داده

    طراحان پايگاه داده (database designers) ساختار مناسبی را برای نمایش اطلاعات مشخص شده توسط تحلیل گر سیستم به طریق نرمالسازی شده به منظور تضمین جامعیت و سازگاری داده انتخاب می کنند و با استفاده از DDL داده های پايگاه داده را تعريف می کنند.

    پیاده سازان برنامه های کاربردی

    برنامه نويسان برنامه های کاربردی (Application Developers) برای برآوردن نيازهای کاربران و کار با پايگاه داده برنامه هایی را آماده می کنند. تست، اشکالزدائی و مستندسازی برنامه و پايگاه داده از وظايف برنامه نويسان است. برنامه نويسان با سيستم توسط احکام DML ارتباط برقرار می کنند.

    مدیر پایگاه داده

    مدير پايگاه داده (database administrator) يا بطور خلاصه DBA فردی است که مسئول کنترل عمليات کل سيستم پايگاه داده است. DBA کلیه فعالیت های سیستم پایگاه داده را هماهنگ می کنند. اين فرد بايد درک خوبی از منابع و نیازهای اطلاعاتی کل سازمان داشته باشد و برای حصول اطمينان از اينکه داده موردنياز قابل دسترس کاربران قرار می گيرد با آنها در ارتباط باشد.

    بعضی از وظایف DBA شامل:

    • تعريف شِماها توسط DDL
    • تعريف ساختار ذخيره سازی و متدهای دسترسی توسط DDL
    • اصلاح شِما و سازماندهی فيزيکی
    • اعطای مجوز دسترسی پايگاه داده به کاربران
    • تعيين قيدهای جامعيت
    • عامل ارتباطی کاربران
    • نظارت اجرا و واکنش برای تغییر درصورت نیاز
    • برقراری ديکشنری داده
    کاربران نهائی

    کاربران نهائی (End Users) شامل:

    • کاربران پارامتری : که توسط برنامه های کاربردی نوشته شده با سيستم سروکار دارند. مانند تحويلدار بانک و کارکنان دفتری.
    • کاربران ماهر : که نیاز های پیچیده تری دارند و با قابلیت های DBMS آشنائی کامل دارند. درخواست های خود از پایگاه داده را توسط یک زبان پرس و جو می سازند.
    • کاربران نهائی اتفاقی : کسانی که دسترسی گاه و بیگاه به پایگاه داده دارند اما ممکن است هر بار نیازهای متفاوتی داشته باشند. از زبان های پرس و جوی و مرورگرهای حرفه ای تر استفاده می کنند.
    ديکشنری داده
    دیكشنری داده ها (Data Catalog) یكی از امكاناتی است كه در سيستم پايگاه داده در اختيار DBA قرار می گیرد. دیكشنری داده ها كه به آن راهنمای سیستم نیز می گویند يک متا داده است يعنی اطلاعاتی درباره خود پايگاه داده و داده های ذخیره شده در آن را نگهداری می کند.

    دیکشنری داده تعيين می کند چه داده ای موجود است و چه معنی دارد، داده چگونه ذخیره می شود و در کجا قرار دارد، مالک آن چه کسی است و چه کسانی اجازه دسترسی به داده را دارند، تاریخچه و آمار استفاده از داده را دربردارد.

  8. تعداد تشکر ها ازMehrPC به دلیل پست مفید


  9. #5
    عضو انجمن MehrPC آواتار ها
    تاریخ عضویت
    Dec 2011
    نوشته ها
    394
    تشکر
    344
    تشکر شده 127 بار در 67 پست

    پیش فرض پاسخ : آموزش های پایگاه داده ها

    مدل داده

    مدل کردن داده روشی برای توصيف داده ها و عمليات روی آنها در سطوح مختلف معماری پايگاه داده است. مدل های سلسله مراتبی و شبکه از قديمی ترين ساختارها برای مدل کردن داده بوده اند.



    مدل کردن داده (data modeling) تحلیل و توصيف داده های محیط عملیاتی و ارتباط بین آنها و شرح معنی و قیدهای داده است.

    یک مدل داده قالب قراردادی برای ساخت و کارکردن با داده دراختیار می گذارد.

    يک مدل داده پديده های دنيای واقعی را توصيف می کند و ساختار داده مورد نیاز برای حل مسئله خاص و ارتباط درونی بین ساختارها را تعریف می کند. دیاگرام ER مثالی از این نوع است که بیشتر توسط طراحان و تحلیل گران سیستم به کار می رود.

    علاوه براين مدل داده تعیین می کند یک DBMS چگونه داده را درون خود، به کاربران و برنامه های کاربردی نمایش دهد. مدل رابطه ای مثالی برای این نوع از مدل داده است.

    عناصر مدل داده

    هر مدل داده باید جنبه های زیر را دارا باشد و نمادهائی برای بیان آنها داشته باشد:

    • ساختمان های داده. که راهی برای سازماندهی داده های محيط عملياتی است و به DBMS می گوید چگونه داده نمایش داده می شود.
    • جامعیت. برای تضمین سازگاری و اعتبار داده در پايگاه داده است و به DBMS می گوید چگونه مانع ورود داده نامعتبر به پايگاه داده بشود.
    • عملیات. مجموعه روش هایی که امکان کار با داده را می دهند مانند عمليات اضافه، حذف، اصلاح و بازیابی داده.
    ساختمان های داده

    لازمه هر مدل داده ای وجود یك ساختار داده ای است. ساختار های داده نحوه سازماندهی داده های محيط عملياتی و نمايش داده در DBMS را تعيين می کند.

    هر مدل داده بايد شامل نمادهائی برای تعريف انواع موجوديت، انواع صفات خاصه و انواع ارتباط بين موجوديت ها باشد.

    جامعیت

    در هر مدل داده بايد امکان تعريف قيدهای جامعيت وجود داشته باشد. قيدها قوانينی را برای تضمین سازگاری و اعتبار داده در پايگاه داده است وضع می کنند و به DBMS می گویند چگونه مانع ورود داده نامعتبر به پايگاه داده بشود.

    عملیات

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

    عمليات امکان کار با داده را می دهند مانند اضافه، حذف، اصلاح و بازیابی داده.

    البته این عملیات ممکن است صریحا در زبان پرس و جو خاصی نباشند. بلکه اساسی را فراهم کنند که بر پایه آن زبان پرس و جو ساخته می شود.

    انواع مدل های داده
    • مدل موجودیت-ارتباط
    • مدل سلسله مراتبی
    • مدل شبکه ای
    • مدل هاي داده شیء گرا
    • مدل داده نیمه ساختیافته (XML)
    • مدل رابطه ای


    مدل سلسله مراتبی
    قديمی ترين مدل برای طراحی پايگاه داده مدل سلسله مراتبی ( hierarchical model) است، که در اوایل دهه 60 توسط IBM برای سازماندهی دنیای تجارت به شکل سلسله مراتبی پيشنهاد شد.

    در مدل سلسله مراتبی داده ها و ارتباط بین آنها به كمك یك درختواره نمایش داده می شوند.

    درختواره گرافی است دارای یك ریشه و تعدادی گره که بین هر دو گره پیوندی وجود دارد. پيوند یك مسیر منطقی را از يک گره در سطح بالا به يک گره دیگر در سطح پايين برقرار می كند. مسیری از گره سطح پایین تر به گره سطح بالاتر وجود ندارد.

    مدل اجازه تکرار اطلاعات را توسط ارتباطات والد/فرزند می دهد؛ یعنی هر گره در هر سطح می تواند تعدادی گره وابسته یا فرزند داشته باشد که بعنوان والد آنها محسوب می شود. هر گره فرزند تنها دارای يک گره والد است.

    مثال. شرکتی چند شعبه دارد. هر شعبه احتیاج به چندین قطعه برای ساخت محصولاتش دارد. هر قطعه از چند تهیه کننده تهيه می شود.

    در ساختار سلسله مراتبی دو نوع رکورد قطعه و موجوديت به صورت زير تعريف می شوند:

    Product ( P#, Pname, Color, Weight, City)
    Supplier (S#, Sname, Status, City, QTY)


    خواص مدل

    • هر گره درختواره حاوی کليه صفات خاصه يک نوع رکورد تحت يک نوع موجوديت است.
    • درختواره مجموعه ای از رکوردها با انواع مختلف می تواند باشد.
    • مجموعه ای از پیوندها را دارد که کلیه انواع رکورد را در ساختار بهم متصل می کند.
    • حداکثر یک پیوند بین دو نوع رکورد وجود دارد بنابراین پیوندها نامگذاری نمی شوند.
    • هر رکورد تنها والد در سطح بالاتر در درخت وجود دارد.
    • اتصالی بین رکوردهای هم نوع وجود ندارد. بین رکوردهای هم سطح نمی توان حرکت کرد مگر اینکه والدشان یکی باشد.
    • نقطه ورود به ساختار هميشه ريشه است و مسير منطقی هميشه از بالا به پايين است.
    • دو عملگر جداگانه برای يافتن داده ای در ريشه و پرس و جو در فرزندان مورد نياز است.
    مزایا و معایب

    • چون داده به صورت يک درختواره سازماندهی می شود برای داده هایی که ماهيت سلسله مراتبی دارند مناسب است.
    • ساختار سلسله مراتبی برای مدل کردن ارتباطات یک به چند مناسب است.
    • ساختار درختی انعطاف پذیر نبوده و برقراری پیوندهای جدید بین رکوردها بعد از ايجاد درخت امکان ندارد. علاوه براين پيوندهای عمودی هستند و نمی توان پیوند افقی و مورب در درخت تعریف کرد.
    • ارتباط تنها می تواند به صورت "تعلق دارد" یا "شامل می شود" کد شوند.
    • در عمليات ذخیره سازی يعنی درج، حذف و بهنگام سازی دارای آنومالی است (درمثال امکان ذخيره تهيه کننده S4 تا زمانيکه ندانيم چه قطعه ای توليد می کند وجود ندارد).
    • رويه های پاسخ به پرس و جوهای قرينه متقارن نيستند( برای مثال رويه جستجو برای "شماره تهيه کنندگانی که P2 را تهيه می کنند" متفاوت از رويه جستجوی "شماره قطعاتی که توسط S1 تهيه شده است").
    • در نمايش افزونگی داده ناتوان است (در مثال اگر بخواهيم شهر S1 را تغيير دهيم در همه نمونه رکوردهایی که S1 ظاهر شده باید انجام شود دغير اينصورت ناسازگاری رخ می دهد).


    مدل شبکه ای
    درمقايسه با مدل سلسله مراتبی که ساختمان های داده ای به صورت درختی از رکوردها سازماندهی می شود و هر رکورد آن يک والد و چند فرزند دارد، مدل شبکه اجازه رکوردهائی با چند والد و چند فرزند را می دهد که در نتيجه يک ساختار مشبک را می سازد.

    به مدل شبکه ساختار Plex هم گفته می شد.

    درمقايسه با مدل سلسله مراتبی که درختی از رکوردها سازماندهی می شود و هر رکورد آن يک والد و چند فرزند دارد، مدل شبکه اجازه رکوردهائی با چند والد و چند فرزند را می دهد که در نتيجه يک ساختار مشبک را می سازد.

    عمليات در مدل شبکه به صورت پيمايشی است از يک رکورد به ديگری با دنبال کردن ارتباطاتی که رکورد درآنها سهيم است دنبال می شود.

    مثال. ارتباط دو سويه قطعه و تهيه کننده را دنظر بگيريد. هر قطعه توسط چند تهيه کننده تهيه می شود و هر تهيه کننده چند قطعه را عرضه می کند.



    خواص مدل

    • در این ساختار موجودیت ها به كمك انواع ركوردها، و ارتباطات به كمك پیوندهای بین ركوردها نمایش داده می شوند.
    • هر گره فرزند می تواند بیش از یك گره والد داشته باشد.
    • برای نمايش ارتباطات یك به چند دو سويه مناسب است.
    • عملیات ذخیره و بازیابی پیچیده تر از مدل سلسله مراتبی است.
    • برای پرس و جوهای قرینه رویه پاسخگوئی قرینه دارد ولی پیچیده است.
    • متدهائی را برای ساخت و تعریف دوباره پیوندها دارد.
    • ساختارهای فیزیکی مناسب برای ارتباطات شبکه ای ساختار چندحلقه است.
    مزایا و معایب

    • اجازه مدل کردن طبيعی تر ارتباطات مابين موجوديت ها را می دهد.
    • مدل شبکه انعطاف پذیری بیشتری نسبت به سلسله مراتبی دارد.
    • در عملیات ذخیره سازی آنومالی ندارد.
    • مدل شبکه می تواند افزونگی داده را بهتر از سلسله مراتبی نشان بدهد.
    • از دید کاربر وضوح کامل ندارد
    • عمليات پيچيده تری دارد
    • پیوند بین رکوردهای یک نوع ممکن نیست.
    • اصل وحدت عملگر در یک عمل رعایت نمی شود.


    پايگاه داده XML
    يک پايگاه داده XML سيستم نرم افزاری است که اجازه می دهد داده در فرمت XML وارد، پردازش و ارسال شود.

    دو دسته اصلی پايگاه داده XML وجود دارد:

    1. XML-enabled . پايگاه داده ای که مستند XML را به عنوان ورودی گرفته به يک پايگاه داده ديگر نظير رابطه ای تبديل می کند و پس از انجام عمليات آنرا مجددا به XML بر می گردند.
    2. Native XML (NXD). مدل داخلی چنين پايگاه داده ای بر پايه XML است و مستندات XML را به عنوان منبع ذخيره سازی مستقيما استفاده می کند.
    دليل استفاده XML در پايگاه داده شفافيت داده است. داده از پايگاه داده استخراج می شود و در مستندات XML قرار می گيرد و برعکس. به اين صورت هزينه ذخيره داده در فرمت XML هم کمتر می شود.

  10. تعداد تشکر ها ازMehrPC به دلیل پست مفید


  11. #6
    عضو انجمن MehrPC آواتار ها
    تاریخ عضویت
    Dec 2011
    نوشته ها
    394
    تشکر
    344
    تشکر شده 127 بار در 67 پست

    پیش فرض پاسخ : آموزش های پایگاه داده ها

    مدل رابطه ای
    مدل رابطه ای متداول ترین مدل داده است که داده ها و ارتباطات بين آنها را به صورت مجموعه ای از جداول نمايش می دهد.


    مدل رابطه ای (relational model) در سال 1970 توسط ریاضیدانی به نام Edgar.F.Codd طراحی شد. مدل داده پيشنهادی یک مدل منطقی بر مبنای ریاضیات است که از منطق گزاره ها و تئوری مجموعه ها به عنوان زیربنا استفاده شده است.

    يک پايگاه داده رابطه ای (relational database) پايگاه داده ای است که با مدل رابطه ای مطابقت داشته باشد و به صورت مجموعه ای از جدول هائی که از ديد کاربر قابل درک هستند ديده می شود.

    یک سیستم مدیریت پایگاه داده رابطه ای (RDBMS) سيستمی است که داده را طبق مدل رابطه ای مديريت می کند.

    RDBMS ها معمول ترین نوع سيستم های مديريتی پایگاه داده امروزی هستند (نظير Microsoft SQL Server، Microsoft Access، Oracle، MySQL، Sybase، DB2 و Informix).

    اکثر RDBMS ها SQL را به عنوان زبان پرس و جوی خود بکار می برند.

    اصطلاحات
    جدول (رابطه)

    پایگاه داده رابطه ای مجموعه ای از آرايه های دو بعدی است که جداول (table) يا رابطه (relation) ناميده می شوند. جدول مهمترین ساختار داده ای در سیستم پايگاه داده رابطه ای است.

    هر جدول (یا رابطه) داده ها را به صورت سطر ها و ستون ها شکل می دهد. هر سطر شامل یک نمونه منحصر بفرد داده و مربوط به یک نمونه موجودیت است. ستون ها صفات خاصه آن موجودیت را بیان می کنند.

    ترتيب سطرها و ستون ها در جداول اهميت ندارد.

    تعداد ستون های هر جدول را درجه (Degree) و تعداد سطرهای آن را کاردینالیتی(Cardinality) می نامند.

    تاپل (رکورد)

    یک سطر از يک رابطه را یک تاپل (tuple) می نامند. هر تاپل در جدول نمایانگر یك نمونه از یك موجودیت است که ركورد هم گفته می شود.

    تاپل ها ممکن است روی یکی از صفات خاصه به طور مرتب ذخیره شوند. ولی به طور کلی لازم نيست مرتب باشند.

    مثال. رابطه Customer را درنظر بگيريد.



    فيلد (صفت خاصه)

    هر ستون در جدول نشان دهنده یك صفت خاصه از یك نوع موجودیت است که فیلد (field) نامیده می شود. در هر فيلد نوع خاصی از داده ها ذخیره می شود.

    مقادیر هر سطر باید با فيلدهای جدول نظیر به نظیر باشد به عبارت دیگر ترتیب مقادیر فيلدها در همه رکوردها بايد یکسان است. ولی ترتيب ستون ها اهميت ندارد.

    دامنه

    مجموعه ای از مقادیر مجاز یک ستون دامنه (domain) نام دارد. معمولا دامنه یک ستون از یک نوع داده است.

    محصولات RDBMS مستقیما دامنه را حمایت نمی کنند بلکه مجموعه ای از انواع داده عددی، متن، تاريخ و غيره را دارند که نحوه ذخيره سازی داده ها را مشخص می کنند. تاثیر دامنه را بيشتر می توان روی قیدها و مکانیسم های ورود داده مشاهده کرد.

    مقادیر صفات خاصه معمولا باید اتمیک باشند یعنی غیرقابل تفکیک باشند.

    مقدار خاص null عضوی از هر دامنه است.

    NULL

    null يا <null> یک علامت خاص است که تهی بودن فيلدی را نشان می دهد، برای زمانی که مقداری برای فيلد وجود ندارد يا آنرا نمی دانيم استفاده می شود(برای مثال مشتری تلفن ندارد يا شماره آنرا نداريم).

    اکثر اوقات باید مشخص کنیم که آیا یک فيلد می تواند تهی باشد یا خیر. سعی در درج null در فيلدی که مجاز نیست ایجاد مشکل می کند.

    دانستن چگونگی برخورد RDBMS با null اهميت دارد زيرا مقادیر تهی نمی توانند در عمليات داده ای شرکت کنند.

    بعضی از RDBMS ها null را اصلا ندارند. راه حل آنها تعریف یک ستون اضافی برای ستونی است که می تواند تهی باشد. این ستون معین می کند آیا ستون مرتبط به آن دارای مقدار معتبر است یا خیر.

    یک راه دیگر پر کردن فيلد با يک مقدار پیش فرض است. اگر مقدار پیش فرض قابل مشاهده ای وجود ندارد یا مشکل را حل نمی کند از null می توان استفاده کرد ولی بايد مطمئن شد که در عمليات مسئله ساز نمی شود.

    پایگاه داده

    یک پایگاه داده شامل چند جدول است. هر جدول بخشی از داده های سازمان را نمايش می دهد. ذخیره کلیه اطلاعات در یک جدول باعث تکرار داده يا نياز به مقدار null می شود.

    مثال. رابطه های محصول، مشتری و فروش را در يک سيستم فروش به صورت زير تعريف می شوند:



    به جای رسم جدول به صورت فوق می توان رابطه ها را به شکل زير تعريف کرد:

    PRODUCT(ProductNo, Description, ReorderLevel, Price, QtyInStock)
    CUSTOMER(CustomerNo, First, Last, Address, CreditLimit)
    SALE(SaleNo, SaleDate, CustomerNo, ProductNo, Qty, Amount, Salesrep)

    کلید
    در مدل رابطه ای هیچ دو سطری در جدول نباید مشابه باشند. این در واقع یک ویژگی اساسی جدول است. اگر دو سطر دو نمونه موجوديت متفاوت را دردنیای واقعی نشان دهند به نحوی بايد از هم متمايز شوند تا به هر کدام در جدول بتوان جداگانه رجوع کرد. بنابراين حداقل یک مقدار منحصر به فرد بايد وجود داشته باشد که باعث متمايز شدن سطرها از يکديگر شود. ستونی که حاوی اين مقدار است کلید ناميده می شود.

    کلید داری دو خاصیت را بايد دارا باشد؛ منحصر به فرد بودن و غیر تهی بودن(قانون اول جامعیت).

    در يک رابطه انواع مختلفی از کلید ممکن است وجود داشته باشد:

    • کلید کاندید
    • کلید ترکیبی
    • کلید اصلی
    • کلید خارجی
    کلید کاندید

    از مجموعه صفات خاصه یك رابطه آنهایی كه دارای دو ویژگی زیر هستند به عنوان كلید كاندید (candid key) در رابطه مذكور مطرح می شوند:

    • منحصر به فرد و غير تهی بودن
    • غیر قابل كاهش بودن، يعنی هیچ زیر مجموعه مناسبی از صفات خاصه تشكیل دهنده كلید، دارای خاصیت منحصر به فرد بودن نباشد.
    مثال. شماره دانشجوئی و کد ملی کليدهای کانديد در جدول مشخصات دانشجو در دانشگاه می توانند باشند.

    کلید ترکیبی

    کلید ترکیبی (compound key) کليدی است که از ترکيب چند صفت خاصه ساخته می شود.

    مثال. در رابطه دانشجو مجموعه نام و شماره شناسنامه می توانند به عنوان كلید ترکيبی در نظر گرفته شوند.

    کلید اصلی

    كلید اصلي (primary key)، كلید كاندیدی است كه توسط طراح پايگاه داده انتخاب و معرفی می شود. به عبارتی طراح بانك، یكی از كلیدهای كاندید را به عنوان كلید اصلی بر میگزیند.

    در تعیین كلید اصلی از بین كلیدهای كاندید باید دو ضابطه زیر را در نظر گرفت:

    • اهمیت كلید اصلی نسبت به سایر كلیدهای كاندید در پرس و جوها
    • كوتاهتر بودن طول كلید كاندید از نظر تعداد بایت
    نکته. هر جدول تنها یک کلید اولیه دارد اما به این معنی نیست که تنها یک شناسه منحصر به فرد دارد.
    نکته. کلید می تواند صفات طبیعی موجودیت انتخاب شود، ولی اگر هيچ کدام از صفات خاصه مناسب نبودند يک کليد جانشين نسبت داده شود (مانند شماره کارمندی برای جدول کارمند).
    نکته. در جدول، زیر کلید اولیه یک خط کشیده می شود.
    نکته. اگرچه در مدل رابطه ای کليه جداول باید دارای کلید اولیه باشند، ولی تعدادی از RDBMS ها اجباری در تعيين کليد برای هر رابطه نمی کنند، در اينصورت ترکيب کليه صفات خاصه به عنوان کليد درنظر گرفته می شود.
    مثال. شماره دانشجوئی در جدول مشخصات دانشجو را می توان به عنوان کليد اصلی انتخاب کرد.

    کلید خارجی

    کليد خارجی (foreign key) صفت خاصه ای در يک جدول است که در جدول دیگر نقش کلید اصلی یا کاندید را بازی کند.

    کليد خارجی ارتباط بين دو جدول را برقرار می کند.

    کلید خارجی بر خلاف کليد اصلی می تواند تکراری یا null باشد و ممکن است در يک جدول بیشتر از یک کلید خارجی وجود داشته باشد.

    جدول شامل کلید خارجی را گاهی جدول فرزند و جدولی که به آن ارجاع دارد را جدول والد می نامند.

    مثال. شماره مشتری در جدول SALE کلید خارجی است زیرا در جدول CUSTOMER کلید اصلی است. شماره مشتری که در جدول فروش بدست می آيد در جدول مشتری جستجو می شود تا تعيين شود محصول به کدام مشتری فروخته شده است.

    خواص مدل
    مدل رابطه ای دارای ويژگی های زیر است:

    • متداول ترین مدل است
    • بر اساس تئوری ریاضی است
    • داده ها و ارتباطات بين آنها در پايگاه داده به صورت مجموعه ای از جداول ديده می شود
    • هيچ جدولی دارای سطرهای تكراری نيست
    • ترتیب سطرها و ستون ها در هر جدول مهم نيست
    • ستون ها اتميک هستند يعنی مقادیر ستون ها غیر قابل تجزیه اند
    • هر مقدار که در دو رکورد مختلف واقع می شود رابطه ای را بین دو آن رکورد می فهماند
    • ارتباط رابطه ها با يکديگر از طریق صفات خاصه مشترک انجام می گيرد
    • ایجاد، دسترسی و توسعه آن آسان است. بعد از ایجاد پایگاه داده اولیه، جداول جدید می توانند اضافه شوند بدون اینکه نیاز به تغییر کاربردهای موجود باشد
    • مدل دید کاربر است نه روشی که داده بطور داخلی سازماندهی می شود



    نرمالسازی

    نرمالسازی (normalization) با نحوه تقسيم جداول در پايگاه داده رابطه ای سروکار دارد. نرمالسازی فرآيند تغيير ساختار پايگاه داده به منظور اجرای بهتر و راحتی کارکردن با داده است. فرم های مختلف نرمالسازی که روی پايگاه داده اعمال می شوند را فرم های نرمال می نامند.

    تبديل نمودار ER به مدل رابطه ای
    هر موجوديت در مدل ER به يک جدول در مدل رابطه ای تبديل می شود. صفات خاصه موجوديت ستون های جدول و هر نمونه موجوديت سطرهای آنرا را می سازند.

    قبل از اينکه فرآيند تبديل انجام شود بايد مطمئن شويم که مدل ER تا حد ممکن ساده شده است.

    مثال. موجوديت دانشجو را درنظر بگيريد.


    student(student_no, name, address, date_of_birth)
    برای تبديل ارتباط يک به يک به رابطه، با توجه به اختياری بودن يا اجباری بودن ارتباط، موجوديت ها يا ترکيب می شوند يا کليد اصلی يک موجوديت به عنوان کليد خارجی در ديگری قرار می گيرد.

    مثال. ارتباط يک به يک بين موجوديت های کارمند و قرارداد را درنظر بگيريد. هر کارمند يک قرارداد دارد و هر قرارداد مربوط به يک کارمند است.


    به رابطه زير تبديل می شود:

    Employee(emp_no, name, cont_no, start, end, position, salary)
    يا می تواند به صورت دو رابطه زير تبديل شود:

    Employee (emp_no, name, contract_no)
    Contract(cont_no, start, end, position, salary)
    يا
    Employee (emp_no, name)
    Contract(cont_no, start, end, position, salary, emp_no)
    در تبديل ارتباط ها يک به چند کليد اصلی موجوديت سمت "يک" به عنوان کليد خارجی در سمت ديگر قرار می گيرد.

    مثال. ارتباط يک به چند دانشجو و رشته تحصيلی را درنظر بگيريد:


    که به رابطه های زير تبديل می شود:

    Student(student_no, s_name, address, DateOfBirth, module_no)
    Module(module_no, m_name)
    در ارتباط چند به چند يک رابطه جديد با کليد های اوليه هر دو موجوديت ساخته می شود.

    مثال. ارتباط دانشجو و درس را درنظر بگيريد.


    که به رابطه های زير تبديل می شود:


    Student(student_no, s_name, Address, DateOfBirth)
    Course(Course_no, C_name)
    Study(student_no, Course_no)

  12. تعداد تشکر ها ازMehrPC به دلیل پست مفید


  13. #7
    عضو جدید
    تاریخ عضویت
    Jan 2012
    نوشته ها
    1
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض پاسخ : آموزش های پایگاه داده ها

    سلام خسته نباشید میتونید یه مرجع کامل برنامه نویسی معرفی کنید که از ریشه یاد بگیرم

  14. #8
    عضو انجمن MehrPC آواتار ها
    تاریخ عضویت
    Dec 2011
    نوشته ها
    394
    تشکر
    344
    تشکر شده 127 بار در 67 پست

    پیش فرض پاسخ : آموزش های پایگاه داده ها

    نقل قول نوشته اصلی توسط saghar نمایش پست ها
    سلام خسته نباشید میتونید یه مرجع کامل برنامه نویسی معرفی کنید که از ریشه یاد بگیرم

    کاش اینجا پست نمی زدید
    برای چه زبانی لازم دارید ؟

  15. #9
    عضو انجمن MehrPC آواتار ها
    تاریخ عضویت
    Dec 2011
    نوشته ها
    394
    تشکر
    344
    تشکر شده 127 بار در 67 پست

    پیش فرض پاسخ : آموزش های پایگاه داده ها

    جبررابطه ای



    جبر رابطه ای يک زبان پرس و جو است که عمليات روی پايگاه داده را توسط نمادهايی به صورت فرمولی بيان می کند.



    جبر رابطه ای (relational algebra) عمليات روی پايگاه داده را به صورت فرمول بيان می کند. جبر رابطه ای توسط Codd به عنوان مبنای زبان های پرس و جوی پايگاه داده ارائه شد. عملگرهای جبر رابطه ای توسط نمادهائی نمايش داده می شوند.

    شش عملگر مبنائی جبر رابطه ای که توسط Codd تعريف شد عبارتند از:

    • Selection: σ
    • Projection:
    • Cartesian Product: ×
    • Set union:
    • Set difference: –
    • Rename:
    اکثر عملگرهای ديگر توسط اين عملگرها تعريف می شوند. مهمترين آنها عبارتند از:

    • Set Intersection:
    • Division: ÷
    • Natural Join:
    هر عملگرجبر رابطه ای روی يک يا دو رابطه به عنوان ورودی عمل کرده و يک رابطه جديد را به عنوان نتيجه توليد می کنند.

    Selection


    عملگر انتخاب (selection) يک عملگر يکتائی است که سطرهائی از يک رابطه را انتخاب می کند. فرم کلی آن به صورت زير است:

    σشرط(R)

    خروجی عملگر selection رابطه ای است شامل سطرهايی از رابطه R که شرط موردنظر در آنها برقرار بوده است.

    کارديناليتی جدول حاصل کمتر يا مساوی جدول اوليه است اما درجه آنها تفاوت نمی کند.

    شرط می تواند توسط علائم = ، ،> ،< ، ، ، (and) ، (or) و ~(not) ساخته شود.

    Projection

    عملگر پروژه (projection) عملگر يکتائی که ستون هائی از يک رابطه را انتخاب می کند. شکل کلی آن به صورت زير است:

    a1,…,an(R)
    a1,…,an مجموعه از اسامی صفات خاصه است که از رابطه R انتخاب می شوند. نتيجه عمل پروژه جدولی شامل کليه تاپل های رابطه R است که محدود به مجموعه صفات مشخص شده است.

    اگر در جدول حاصل سطرهايی مشابه هم باشند با هم ترکيب می شوند و سطرهای تکراری حذف می شوند. معمولا يک کليد کانديد را نگه می داريم تا کارديناليتی حفظ شود. درجه جدول حاصل کمتر يا مساوی جدول اوليه است.

    Cartesian Product

    ضرب دکارتی (Cartesian Product) عملگری است که روی دو جدول کار می کند و جدول جديدی را می دهد که که يک رکورد برای هر جفت رکورد ممکن از هر دو جدول دارد. فرم کلی آن به صورت زير است:

    R × S
    رکوردهای های رابطه R با کليه رکوردها رابطه S به اين صورت ترکيب می شوند که اولين سطر از رابطه R در کنار اولين سطر رابطه S در جدول حاصل قرار می گيرد و به همين ترتيب تا آخرين سطر S اضافه می شود. همين عمل مجددا برای سطرهای ديگر رابطه R تکرار می شود.


    در جدول حاصل احتمال تکرار شدن ستون ها وجود دارد.

    درجه جدول حاصل برابر مجموع درجات دو جدول و کارديناليتی آن برابر حاصل ضرب کارديناليتی دو رابطه می باشد.

    ضرب دکارتی در جبر رابطه ای متفاوت از آنچه درتئوری مجموعه است تعريف می شود.



    Set Union

    عملگر اجتماع (union) يک عملگر دوتائی است که مشابه عمل اجتماع در تئوری مجموعه ها عمل می کند. فرم کلی آن به صورت زير است:

    R S

    اجتماع دو رابطه R و S جدولی است شامل کليه تاپل های رابطه R و رابطه S.

    دو رابطه ای که روی آنها عمل اجتماع انجام می شود بايد همساز(compatible) باشند، يعنی بايد دارای مجموعه صفات خاصه يکسان باشند.




    درجه جدول حاصل تفاوتی نمی کند اما کارديناليتی آن برابر با مجموع سطرهای هردو جدول منهای سطرهای مشترک است.

    Difference

    عملگر تفاضل (difference) يک عملگر دو تائی است و مشابه عمل تفاضل در تئوری مجموعه ها است. فرم کلی آن به صورت زير است:

    R - S
    تفاضل R و S جدولی است که شامل کليه تاپل هايی است که در R هست ولی در S نيست. سطر اول رابطه R با کليه سطرهای رابطه S مقايسه می شود هر کدام که در رابطه S نبود در جدول حاصل قرار می گيرد.

    دو رابطه ای که روی آنها عمل تفاضل انجام می شود بايد همساز باشند.



    کارديناليتی جدول حاصل برابر کارديناليتی رابطه R منهای سطرهای مشابه است. درجه آنها تفاوتی نمی کند.


    Rename

    عملگر تغيير نام (rename) يک عملگر يکتائی است که برای تغيير نام صفات خاصه يک رابطه يا نام خود رابطه استفاده می شود. تغيير نام به صورت نوشته می شود:

    A(B)
    نتيجه عمل تغيير نام روی رابطه B همان رابطه B است با نام جديد A به بيان ديگر رابطه B را به A تغيير نام می دهد.


    Intersection



    عملگر اشتراک (intersection) بر اساس عمل اشتراک مجموعه ها می باشد. فرم کلی آن به صورت زير است:

    R S
    جدول حاصل از اشتراک دو رابطه R و S جدولی است شامل کليه تاپل هايی که در هر دو جدول وجود دارد.

    دو رابطه ای که روی آنها عمل اشتراک انجام می شود بايد همساز باشند.






    Division
    عملگر تقسيم (division) روی دو رابطه انجام می شود. فرم کلی آن به صورت زير است:

    R ÷ S
    حاصل تقسيم رابطه R بر رابطه S رابطه ای است شامل کليه تاپل هائی از R برای صفات خاصه مشترک در رابطه S نيز وجود دارد. در جدول حاصل صفات خاصه ای از R اضافه می شود که در S نيست.



    عمل تقسيم توسط عملگر های مبنائی به صورت زير شبيه سازی می شود:

    T := a1,...,an(R) × S
    U := T - R
    V := a1,...,an(U)
    W := a1,...,an(R) – V

    Join

    الحاق طبيعی (Natural Join) يک عملگر دوتائی است که به صورت زير نوشته می شود:

    R S
    نتيجه الحاق طبيعی رابطه ای است شامل کليه ترکيبات تاپل های R و S است که صفات خاصه مشترک آنها برابر است.

    الحاق دو رابطه زير مجموعه ای از ضرب دکارتی است. نتيجه ضرب دکارتی بدون هيچ شرطی است و ممکن است اطلاع جديدی را ندهد. ولی عملگر الحاق با استفاده از کليد خارجی دو رابطه را با هم ترکيب کرده و با حذف سطرهائی از ضرب دکارتی اطلاع معنی داری را از ترکيب جداول می دهد.

    دو رابطه که در الحاق شرکت می کنند بايد دارای صفت خاصه مشترکی باشند.

    مثال. جدول Loan و Borrower که به ترتيب حاوی مشخصات وام ها و وام گيرنده ها هستند را درنبظر بگيريد.



    مثال. در جدول Borrower کليد خارجی فيلد Loan_no است. الحاق جداول Loan و Borrower اسامی وام گيرنده ها و مقدار وام آنها را می دهد.

    وقتی عمل الحاق روی دو رابطه انجام می شود بعضی داده ها از دست می روند. بعضی وقت ها اين داده ها اطلاعات مفيدی را دارند. الحاق خارجی (outer join) جداول را به نحوی ترکيب می کند که داده های مورد نظر در جدول نتيجه باقی بمانند.

    بسته به اطلاعاتی که حفظ می شود سه نوع الحاق خارجی وجود دارد:

    left outer join •
    right outer join •
    full outer join •

    left outer join
    نتيجه الحاق چپ مجموعه کليه تاپل های رابطه R و S است که صفات خاصه مشترک آنها يکسان است بعلاوه تاپل هايی در R که برای صفت خاصه مشترک همنظيری در S ندارد. برای اين تاپل ها در صفات خاصه ای که از S اضافه می شوند مقدار null قرارداده می شود.

    الحاق چپ به صورت زير نوشته می شود:

    R S
    مثال. الحاق خارجی چپ دو جدول Loan و Borrower به صورت زير می شود:


    الحاق چپ با استفاده ازالحاق طبيعی و اجتماع بدست می آيد:

    R S = S (R S)

    right outer join
    الحاق راست مشابه الحاق چپ است با اين تفاوت که کليه مقادير رابطه سمت راست عملگر الحاق در نتيجه ظاهر می شود.

    R S
    مثال. الحاق خارجی راست دو جدول Loan و Borrower به صورت زير می شود:


    الحاق چپ با استفاده ازالحاق طبيعی و اجتماع بدست می آيد:

    R S = R (R S)

    full outer join
    الحاق خارجی کامل يا به طور خلاصه الحاق خارجی الحاق خارجی چپ و راست را با هم ترکيب می کند. نتيجه الحاق کامل خارجی مجموعه کليه ترکيبات تاپل های R و S است که صفات خاصه مشترک آنها برابر است بعلاوه تاپل هائی در S که در R نيستند و تاپلهای R که در S وجود ندارند.

    الحاق خارجی دو رابطه R و S به صورت زير نوشته می شود:

    R S
    مثال. الحاق خارجی دو جدول Loan و Borrower به صورت زير می شود:



    الحاق خارجی کامل با اجتماع الحاق چپ و الحاق راست بدست می آيد:

    R S = (R S)(R S)
    R S = R S (R S)


    مثال های کاربردی

    مثال بانک. رابطه های زير را درنظر بگيريد:

    branch (branch_name, branch_city, assets)
    customer (customer_name, customer_street, customer_city)
    account (account_number, branch_name, balance)
    loan (loan_number, branch_name, amount)
    depositor (customer_name, account_number)
    borrower (customer_name, loan_number)

    سوال1. کليه شماره وام هائی که مقدارشان از 1200 بيشتر است را پيدا کنيد.

    loan_number(σamount > 1200 (loan))
    سوال2. کليه مشتريانی که يک وام، يک حساب يا هردو را پيدا کنيد.

    customer_name (borrower) customer_name (depositor)
    سوال3. کليه مشتريانی که يک وام و يک حساب در بانک دارند را پيدا کنيد..

    customer_name (borrower) customer_name (depositor)
    سوال4. اسامی کليه مشتريانی که يک وام در شعبه Perryridge دارند را پيدا کنيد..

    customer_name (σbranch_name="Perryridge"(borrower loan))
    سوال5. اسامی کليه مشتريانی که يا حساب دارند يا وام گرفته اند (ولی نه هردو) را پيدا کنيد.

    customer_name ((σ account_number is null or loan_number is null ( depositor borrower))
    سوال6. اسامی کليه مشتريانی که يک وام در شعبه Perryridge دارند ولی هيچ حسابی در هيچ شعبه ندارند را پيدا کنيد..

    customer_name (σbranch_name="Perryridge" (borrowerloan)) – customer_name(depositor

  16. تعداد تشکر ها از MehrPC به دلیل پست مفید


  17. #10
    عضو انجمن MehrPC آواتار ها
    تاریخ عضویت
    Dec 2011
    نوشته ها
    394
    تشکر
    344
    تشکر شده 127 بار در 67 پست

    پیش فرض پاسخ : آموزش های پایگاه داده ها

    SQL


    SQL يک زبان ساختيافته برای بازيابی و بهنگام سازی داده از يک پايگاه داده رابطه ای است. دستوراتی برای ايجاد، حذف و تغيير اشيای مختلف در پايگاه داده دارد. پرکاربردترين دستور آن برای اجرای پرس و جوهای مختلف روی پايگاه داده استفاده می شود.


    (Structured Query Language) SQL يک زبان برنامه نويسی تعاملی استاندارد برای بازيابی و بهنگام سازی پايگاه داده رابطه ای است.

    SQL اجازه می دهد ايجاد جدول، اضافه و حذف داده، اصلاح داده و اجرای پرس و جوی روی داده به شکل يک زبان فرمانی در آيند.

    اولين نسخه SQL در دهه 1970 در IBM توسط Donald D. Chamberlin و Raymond F. Boyce پياده شد. اين نسخه که ابتدا (Structured English Query Language) SEQUEL ناميده شد برای کارکردن و بازيابی داده ذخيره شده درپايگاه داده رابطه ای System R بود.

    SQL به عنوان يک استاندارد توسط ANSI در سال 1986 و توسط ISO در سال 1987 پذيرفته شد.

    ANSI بيان کرد که تلفظ رسمی آن es queue el است. در حاليکه افراد حرفه ای انگليسی زبان پايگاه داده هنوز نام آنرا sequel تلفظ می کنند.

    گونه هائی از SQL، به عنوان يک زبان پرس وجو و کار با داده، توسط عرضه کنندگان DBMS همراه با ضمايمی ايجاد شد. با بيرون آمدن استاندارد SQL:1999 بسياری از ضميمه ها به عنوان بخشی از زبان SQL پذيرفته شدند.

    در اين بخش فرامينی از SQL که در اکثر گونه ها وجود دارد شرح داده خواهد شد.

    فضاهای خالی در عبارات SQL نديده گرفته می شوند و برای خوانائی کدهای SQL استفاده می شوند. سميکولن ( به عنوان پايان دهنده عبارت است.

    CREATE TABLE
    عبارت Create يک فرمان DDL در SQL است که برای ايجاد يک شیء در پايگاه داده استفاده می شود. احتمالا معمول ترين فرمان Create فرمان CREATE TABLE است.

    CREATE TABLE اجازه ايجاد شمای يک جدول را می دهد. فرم کلی آن به صورت زير است:

    CREATE TABLE tablename (
    colname datatype coloptions
    ,colname datatype coloptions
    ,colname datatype coloptions
    ,additionalinfo
    );
    هر سطر يک فيلد جدول را مشخص می کند. تعريف هر فيلد شامل نام، نوع داده و اطلاعات اضافی مربوطه می تواند باشد. سطرها با کاما (,) از هم جدا می شوند.

    نوع های داده مختلفی در يک DBMS وجود دارد که مهمترين آنها عبارتند از:

    • CHAR(n) . رشته کاراکتری ASCII با طول ثابت n کاراکتر
    • VARCHAR(n) . رشته کاراکتری ASCII با طول متغير با حداکثر n کاراکتر
    • NVARCHAR(n) . رشته کاراکتری Unicode با طول متغير با حداکثر n کاراکتر
    • INT . عدد صحيح (زيرمجموعه متناهی از اعداد صحيح که وابسته به ماشين است)
    • SMALLINT . عدد صحيح کوچک (زيرمجموعه وابسته به ماشين از نوع صحيح)
    • DECIMAL(p,d) . عدد مميز ثابت، با دقت تعريف شده p رقم و با d رقم در سمت راست مميز
    • REAL,DOUBLE precision . اعداد مميزشناور با دقت مضاعف (وابسته به ماشين)
    • FLOAT(n) . عدد مميز شناور با دقت تعريف شده حداقل n رقم
    • DATE . تاريخ با فرمت day/month/year
    در انتهای هر ستون می توان اطلاعات اضافی داشت. معمول ترين آنها عبارتند از:

    PRIMARY KEY يعنی اين فيلد کليد اصلی است
    NOT NULL يعنی اين فيلد بايد مقداری داشته باشد و نمی تواند تهی باشد
    REFERENCES othertable (primarykeyname) يعنی اين فيلد يک کليد خارجی است که در جدول ديگری کليد اصلی است
    در انتهای تعريف می توان اطلاعات اضافی ديگری را داشت. برای نمونه:

    PRIMARY KEY (column1,column2,...) اگر جدول کليد اصلی ترکيبی دارد بايد آنرا در انتهای تعريف مشخص کنيد.
    FOREIGN KEY (column1,column2,...) REFERENCES othertable اگر جدول ارتباطی با جدول ديگر دارد که يک کليد ترکيبی دارد بنابراين ستون های اين جدول که کليد های خارجی هستند بايد به اين صورت ليست شوند.
    مثال. فرمان ايجاد يک جدول به نامemployees با چند فيلد نمونه به صورت زير می تواند باشد:


    CREATE TABLE employees (
    id INTEGER PRIMARY KEY
    ,first_name CHAR(50)
    ,last_name CHAR(75) NOT NULL
    ,date_of_birth DATE
    );
    مثال. تعريف جداول Car و Driver می تواند به صورت زير باشد:


    CREATE TABLE driver (
    name varchar(30)
    ,dob DATE NOT NULL
    ,PRIMARY KEY (name)
    );

    CREATE TABLE car (
    regno VARCHAR(8)
    ,make VARCHAR(20)
    ,colour VARCHAR(30)
    ,price DECIMAL(8,2)
    ,owner VARCHAR(30)
    ,PRIMARY KEY(regno)
    ,FOREIGN KEY(owner) REFERENCES driver
    );

    DROP TABLE

    عبارت DROP برای از بين بردن يک شیء در پايگاه داده است. فرمان DROP TABLE زمانی بکار می رود که بخواهيد جدول را حذف کنيد. فرم کلی آن به صورت زير است:

    DROP TABLE tablename;
    مثال. فرمان زير جدول employees را حذف می کند.

    DROP TABLE employees;
    تنها نکته در حذف يک جدول اين است که اگر جدولی توسط کليد خارجی با اين جدول در ارتباط باشد نمی توانيد آنرا حذف کنيد.

    مثال. چون جدول car توسط کليد خارجی با جدول driver در ارتباط است می توانيد ابتدا جدول Car و سپس Driver را حذف کنيد ولی عکس آن نمی شود.

    DROP TABLE car;
    DROP TABLE driver;


    SELECT
    معمولا بيشترين عملی که روی پايگاه های داده توسط SQL انجام می گيرد جستجو است، که توسط عبارت SELECT انجام می پذيرد.

    دستور SELECT داده ها را از يک يا چند جدول مرتبط بازيابی می کند و اغلب تاثيری روی داده ذخيره شده در پايگاه داده ندارد.

    SELECT پيچيده ترين عبارت SQL است. فرم کلی عبارت SELECT به صورت زير است:


    SELECT DISTINCT columns AS columns
    FROM table
    WHERE rule
    GROUP BY columns
    HAVING rule
    ORDER BY columns;

    دستور SELECT دارای چند عبارت اختياری به شرح زير است:

    • FROM جدول يا جداولی را که از آنها داده بازيابی می شود را مشخص می کند. برای الحاق جداول بر اساس ضابطه خاصی می تواند همراه با عبارت JOIN بيايد.
    • WHERE همراه با يک گزاره شرطی برای محدود کردن سطرهای برگردانده شده استفاده می شود.
    • GROUP BY اغلب همراه با توابع تجمعی(AVE، SUM، MAX، MIN و COUNT) برای ترکيب يا گروه بندی سطرها يا حذف سطرهای تکراری در مجموعه نتيجه استفاده می شود.
    • HAVING همراه با يک گزاره شرطی روی نتيجه GROUP BY کار می کند. توابع تجمعی می توانند در گزاره شرطی HAVING هم استفاده شوند.
    • ORDER BY برای تعيين ستون های که بر اساس آنها داده نتيجه مرتب می شود (صعودی و نزولی) .
    FROM

    در ساده ترين دستور SELECT کليه سطرهای يک جدول که بعد از عبارت FROM ذکر شده است را بازيابی می کند. ليستی از فيلدهای موردنظر در مقابل عبارت SELECT قرار می گيرد. نام فيلدها با کاما (,) از هم جدا می شوند.

    علامت ستاره (*) برای بيان کليه فيلدهای يک جدول (يا چند جدول) می تواند استفاده شود.

    مثال. اسامی کليه شعبه ها در loan را پيدا کن


    SELECT branch_name
    FROM loan;
    مثال. مشخصات کليه مشتريان را پيدا کن.


    SELECT *
    FROM customer;
    عبارات محاسباتی +، -، * و / روی يک فيلد در ليست فيلدها می توانند بکاربرده شوند.

    مثال. دستور زير جدولی مشابه loan را بر می گرداند که مقدار صفت خاصه amount آن 10 برابر شده است.


    SELECT loan_number, branch_name, amount * 100
    FROM loan;
    ممکن است لازم باشد داده های موردنياز را از دو يا چند يک جدول استخراج کنيم.

    مثال. اسامی و مقدار وام کليه مشتريانی را که وامی از شعبه Perryridge گرفته اند را پيدا کن.



    SELECT customer_name, borrower.loan_number, amount
    FROM borrower, loan
    WHERE borrower.loan_number = loan.loan_number AND
    branch_name = 'Perryridge';

    مثال. دقت کنيد که اگر شرطی ذکر نشود ضرب دکارتی دو جدول حاصل می شود.


    SELECT *
    FROM borrower, loan;
    DISTINCT
    SQL اجازه تکرار در نتيجه SELECT را می دهد. بنابراين جدول حاصل ممکن است دارای سطرهای مشابه باشد. اگر اين موضوع موردنظر نباشد عبارت DISTINCT را استفاده می کنيم. در اين صورت کليه سطرهای جدول حاصل منحصر بفرد خواهند بود. و سطرهای تکراری حذف می شوند.

    مثال. اسامی کليه شعب بانک که از آنها وامی گرفته شده است را با حذف تکراری ها ليست کن.



    SELECT DISTINCT branch_name
    FROM loan;
    عبارت all مشخص می کند که تکراری ها حذف نشوند.

    SELECT ALL branch_name
    FROM loan;
    WHERE
    عبارت WHERE برای انتخاب سطرهای برگردانده شده از دستور SELECT بر طبق شرط خاصی بکار می رود.

    برای بيان شرط می توان عملگرهای مقايسه ای (=، !=، <>، >، <، >= و <=) را استفاده کرد.

    نتايج مقايسه را می توان توسط عملگرهای منطقی (NOT، AND و OR ) و پرانتز با هم ترکيب کرد. اجرای عملگرهای منطقی به ترتيب الويت آنها است. NOT الويت بالاتر و OR الويت کمتر را دارد. پرانتز می تواند برای تعيين ترتيب انجام عمليات استفاده شود. عمل داخل پرانتز هميشه اول انجام می گيرد.

    مثال. کليه شماره وام هائی که مقدار وام آنها از 1200 بيشتر است را پيدا کن.


    SELECT loan_number
    FROM loan
    WHERE amount > 1200;
    مثال. کليه شماره وام های شعبه Perryridge که مقدار وام آنها از 1200 بيشتر است را پيدا کن.


    SELECT loan_number
    FROM loan
    WHERE amount > 1200 AND branch_name = 'Perryridge';
    توجه کنيد که هنگام مقايسه با رشته بايد آنرا در کوتيشن (' ') قرار داد.

    مثال.شماره وام هائی که مقدار وام آنها بين 90,000 و 100,000 می باشد را پيدا کن.

    SELECT loan_number
    FROM loan
    WHERE amount BETWEEN 90000 AND 100000;
    عملگر IN برای تعيين اينکه آيا مقدار مشخصی درون مجموعه ای از مقادير وجود دارد يا خير بکار می رود.

    مثال. مقدار وامهايی که از شعب Perryridge، Downtown يا Redwood گرفته شده اند را پيدا کن.


    SELECT amount
    FROM loan
    WHERE Branch_name IN (' Perryridge' , 'Downtown' , 'Redwood');
    هنگام کارکردن با رشته ها وقتی خواهان مطابقت کامل رشته ها نيستيم بلکه بخشی از رشته يا الگوی خاصی از آن بيشتر موردنظر است، می توان از عبارت LIKE به جای علامت (=) استفاده کرد. دو کاراکتر '%' و '_' به ترتيب به معنی يک کاراکتر و بيشتر از يک کاراکتر را برای تطابق می توان بکار برد.

    مثال. اسامی کليه مشتريانی که آدرس آنها شامل کلمه Main است را پيدا کن.



    SELECT customer_name
    FROM customer
    WHERE customer_street LIKE '%Main%';
    AS
    SQL اجازه تغيير نام جدول را توسط عبارت AS می دهد.

    مثال. تعداد وام و مقدار وام کليه وام ها را پيدا کرده، نام ستون loan_number به loan_id تغيير بده.


    SELECT loan_number AS loan_id, amount
    FROM loan;
    مثال. نام و تعداد وام کليه مشتريانی که وامی در يک شعبه دارند را پيدا کن.



    SELECT customer_name, T.loan_number, S.amount
    FROM borrower AS T, loan AS S
    WHERE T.loan_number = S.loan_numbe;
    توابع تجمعی

    توابع تجمعی (aggregation function) عملگرهايی هستند که محاسبه آماری روی گروهی از مقادير داده ای را انجام می دهند. اين توابع روی مقادير يک ستون از يک جدول عمل می کند و يک مقدار را به عنوان نتيجه بر می گردانند. اين توابع شامل AVG، SUM، MAX، MIN و COUNT هستند.

    نتيجه تجمع نامی ندارد می تواند از AS برای نامگذاری آن استفاده کرد.

    مثال. ميانگين موجودی حساب ها در شعبه Perryridge را پيدا کن.


    SELECT AVG (balance)
    FROM account
    WHERE branch_name = 'Perryridge';
    COUNT تعداد سطرهای موجود در جواب که حاوی NULL نيستند را می دهد. برای اينکه تعداد مستقل از NULL باشد COUNT(*) را استفاده کنيد.

    مثال. تعداد مشتريان بانک را محاسبه کن.


    SELECT COUNT (*)
    FROM customer;
    گاهی در جواب تعدادی سطرها مشابه می شوند، اگر می خواهيد تعداد سطرهای متمايز را بدست آوريد از COUNT DISTINCT استفاده کنيد.

    مثال. تعداد افرادی که در بانک پول دارند را پيدا کن.



    SELECT COUNT (DISTINCT customer_name)
    FROM depositor;
    مثال. تعداد افرادی که در هر شعبه بانک حساب دارند را پيدا کن.


    SELECT branch_name, COUNT (DISTINCT customer_name)
    FROM depositor, account
    WHERE depositor.account_number = account.account_number
    GROUP BY branch_name;
    GROUP BY
    در بسياری موارد تحليل آماری روی گروهی از داده ها موردنياز است. برای گروه بندی از عبارت GROUP BY استفاده کنيد.

    مثال. اسامی کليه شعب و ميانگين موجودی حساب آنها را پيدا کن



    SELECT branch_name,AVG (balance)
    FROM account
    GROUP BY branch_name;
    HAVING
    توابع تجمعی در عبارت WHERE کار نمی کنند. اگر می خواهيد با توجه به نتيجه توابع تجمعی شرطی داشته باشيد از عبارت HAVING استفاده کنيد. HAVING مانند عبارت WHERE کار می کند با اين تفاوت که روی آخرين داده حاصل کار می کند و اجازه استعمال توابع تجمعی را هم می دهد. البته هزينه اجرای آن بالاست بنابراين فقط در زمانی که واقعا نياز است استفاده کنيد.

    مثال. اسامی کليه شعب را که ميانگين حساب آنها بيشتر از 1200 است را پيدا کن


    SELECT branch_name,AVG (balance)
    FROM account
    GROUP BY branch_name
    HAVING AVG (balance) > 1200;
    ORDER BY
    ترتيب رکوردها در نتيجه پرس و جو معمولا بدون نظم است. اگر می خواهيد جدول حاصل دارای نظم خاصی بر طبق يک يا چند فيلد باشد عبارت ORDER BY را به همراه فيلدهای موردنظر اضافه کنيد.

    برای ترتيب نزولی از DESC و برای ترتيب صعودی از ASC روی هر صفت خاصه استفاده می شود. پيش فرض ترتيب صعودی است.

    مثال. اسامی کليه مشتريانی که وامی در شعبه Perryridge دارند را به ترتيب حروف الفبا ليست کن.


    SELECT DISTINCT customer_name
    FROM borrower, loan
    WHERE borrower loan_number = loan.loan_number AND
    branch_name = 'Perryridge'
    ORDER BY customer_nam;
    NULL
    ممکن است مقدار بعضی از صفات خاصه در رکوردها تهی باشد که توسط NULL مشخص می شود. وقتی فيلدی حاوی NULL است بيان کننده اين است که مقدار آن فيلد نامعلوم است يا مقداری در دنيای واقعی ندارد.

    عملگرهای مقايسه ای اگر روی NULL عمل کنند مقدار Unknown را برمی گردانند. گزاره IS NULL می تواند برای بررسی مقادير NULL استفاده شود. عملگر متضاد آن IS NOT است که مقاديری که NULL نيستند را پيدا می کند.

    نتيجه هر عبارت رياضی روی NULL برابر با NULL است. کليه توابع تجمعی به استثنای COUNT از مقدار NULL صرفنظر می کنند.

    مثال. تعداد وام هائی که ميزان وام آنها معين نيست را پيدا کن.



    SELECT loan_number
    FROM loan
    WHERE amount IS NULL;
    پرس و جوهای تودرتو

    در SQL مکانيسمی برای پرس و جوهای تودرتو فراهم شده است. به عبارت ديگر يک عبارت SELECT می تواند درون ديگری قرار بگيرد تا نتيجه اجرای آن در شرط WHERE عبارت SELECT ديگر استفاده شود. عبارت SELECT دوم را يک پرس و جوی فرعی می نامند و حتما بايد يک فيلد را برگرداند يعنی فقط يک صفت خاصه در دستور SELECT آن بايد باشد.

    وقتی حاصل پرس و جوی فرعی بيشتر از يک سطر باشد از عملگرهای ALL، ANY، IN، NOT IN، EXISTS و NOT EXISTS برای گرفتن نتيجه مطلوب بايد استفاده کرد.

    مثال. اسامی کليه مشتريانی که هم حساب وهم وام در بانک دارند را پيدا کن.


    SELECT DISTINCT customer_name
    FROM borrower
    WHERE customer_name IN (SELECT customer_name FROM depositor );
    مثال. اسامی کليه مشتريانی که از بانک وام گرفته اند ولی حساب ندارند را پيدا کن.


    SELECT DISTINCT customer_name
    FROM borrower
    WHERE customer_name NOT IN (SELECT customer_name FROM depositor );
    مثال. اسامی کليه مشتريانی که هم حساب وهم وام در شعبه Perryridge دارند را پيدا کن.



    SELECT DISTINCT customer_name
    FROM borrower, loan
    WHERE borrower.loan_number = loan.loan_number AND branch_name = 'Perryridge' AND
    branch_name, customer_name IN (SELECT branch_name, customer_name
    FROM depositor, account WHERE depositor.account_number = account.account_number );

    توجه. پرس و جوهای بالا ساده تر هم می تواند نوشته شود.

    ترکيب پرس و جوها

    گاهی می خواهيم نتيجه دو پرس و جو را با هم به نحوی ترکيب کنيم و يک جدول را بدست بياوريم. عملگرهای UNION، INTERSECT و EXCEPT برای ترکيب نتيجه دو پرس و جو می توانند استفاده شوند که به ترتيب مشابه عملگرهای اجتماع، اشتراک و تفاضل در جبر رابطه ای عمل می کنند.

    مجموعه فيلدهای دو پرس و جوئی که با هم ترکب می شوند بايد از نظر تعداد و نوع مطابق هم باشند.

    عملگر UNION جدولی شامل کليه سطرهای هردو پرس و جو را می دهد. سطرهای تکراری حذف می شوند مگر اينکه از عبارت UNION ALL استفاده شود.

    عملگر INTERSECT سطرهای مشترک در نتيجه دو پرس و جو را بر می گرداند. سطرهای تکراری حذف می شوند مگر اينکه از عبارت INTERSECT ALL استفاده شود.

    عملگر EXCEPT سطرهائی از نتيجه پرس و جوی اول که در نتيجه پرس و جوی دوم ظاهر نشده است را بر می گرداند. EXCEPT ALL سطرهای تکراری را حذف نمی کند.

    مثال. اسامی کليه مشتريانی که هم حساب وهم وام در بانک دارند را پيدا کن.


    SELECT customer_nameFROM borrower
    UNION
    SELECT customer_name FROM depositor;


    JOIN
    وقتی بخواهيم اطلاعاتی را از دو جدول بدست بياوريم می توانيم عمل الحاق را روی دو جدول انجام دهيم. عملگر JOIN رکوردهای گرفته شده از دو جدول را با هم ترکيب می کند و جدول ديگری را به عنوان نتيجه می دهد. شرط الحاق نحوه جفت کردن رکوردهای دو جدول را تعيين می کند.

    الحاق دارای انواع مختلفی نظير الحاق طبيعی و الحاق خارجی است. نوع الحاق تعيين می کند چه رکوردهائی از هر جدول که جفتی در جدول ديگر ندارند در جدول نتيجه بايد اضافه شوند.

    Natural Join

    در الحاق طبيعی کليه سطرهائی که فيلدهای همنام آنها که در هردو جدول دارای يک مقدار هستند، درنظر گرفته می شود. جدول حاصل تنها شامل يک ستون از ستونهای هم نام خواهد بود.

    مثال. اسامی وام گيرنده ها به همراه وام های گرفته شده از بانک را پيدا کنيد.

    SELECT *
    FROM borrower NATURAL JOIN loan;
    Outer Join
    در الحاق خارجی نيازی نيست رکوردهای دو جدول حتما رکورد مطابقی در جدول ديگر داشته باشند. الحاق خارجی، بسته به جدولی که همه سطرهایش نگهداشته می شود، به سه دسته الحاق چپ، راست و کامل تقسيم می شود.

    LEFT OUTER JOIN کليه مقادير جدول سمت چپ خود را بعلاوه مقاديری از جدول سمت راست که مطابقت دارند می دهد. RIGHT OUTER JOIN کليه مقادير جدول سمت راست خود را می دهد بعلاوه مقاديری از جدول سمت چپ که رکوردهايش جور هستند. FULL OUTER JOIN نتيجه الحاق خارجی چپ و راست را با هم ترکيب می کند.

    الحاق خارجی داده های مفقود را، برای سطرهائی که شرط الحاق در آنها برقرار نبوده، با NULL پر می کند.

    مثال. اسامی کليه وام گيرنده ها به همراه ميزان وامی که گرفته اند را پيدا کنيد.



    SELECT *
    FROM borrower LEFT OUTER JOIN loan
    ON borrower.loan_no = loan.loan_no;

    مثال. مقدار کليه وام های گرفته شده از شعبه Perryridge را به همراه نام وام گيرنده ها پيدا کنيد.


    SELECT *
    FROM borrower RIGHT OUTER JOIN loan
    ON borrower.loan_no = loan.loan_no
    WHERE loan.branch_name = 'Perryridge';


    DELETE
    فرمان DELETE اجازه حذف سطرهائی از يک جدول را می دهد. فرم کلی دستور به شکل زير است:

    DELETE FROM table_name WHERE condition;
    کليه رکوردهائی که شرط WHERE در آنها برقرار است از جدول حذف می شوند. اگر شرطی بيان نشود کليه رکوردهای جدول حذف خواهند شد.

    دستور DELETE هيچ رکوردی را به عنوان خروجی بر نمی گرداند.

    مثال. کليه رکوردهای وام گيرندگان را حذف کن.


    DELETE FROM borrower;
    مثال. کليه رکوردهایی که حسابی در شعبه Perryridge دارند را حذف کن.


    DELETE FROM account
    WHERE branch_name = 'Perryridge';

    INSERT
    دستور INSERT اجازه اضافه کردن رکوردی به يک جدول را می دهد. فرم کلی آن به صورت زير است:



    INSERT INTO table_name
    (column_list)
    VALUES (value_list);
    Column_list ليست فيلدهائی است که مقادير به آنها نسبت داده خواهد شد و اگر برای همه فيلدها مقداری درنظرگرفته شود می تواند حذف شود. value_list مجموعه ای از مقادير است که برای هر فيلد در ليست column_list يا فيلدهای جدول که در دستور CREATE TABLE تعريف شده اند مقداری دارد.

    تعداد ستون ها و مقادير آنها بايد يکسان باشد. اگر فيلدی ذکر نشود مقدار پيش فرض آن درنظر گرفته می شود.

    به فيلدهائی که در دستور CREATE TABLE به عنوان PRIMARY KEY يا با محدوديت NOT NULL تعريف شده اند بايد مقداری نسبت داده شود.

    مثال. حساب جديدی را با شماره A-9732 و با موجودی 1200 در شعبه Perryridge اضافه کن.



    INSERT INTO account
    VALUES ('A-9732', 'Perryridge',1200);

    يا

    INSERT INTO account
    (branch_name, balance, account_number)
    VALUES ('A-9732', 'Perryridge',1200);

    مثال: اضافه کردن رکورد جديدی در جدول account با مقدار موجودی null به صورت زير انجام می شود.


    INSERT INTO account
    VALUES ('A-777','Perryridge', null );


    UPDATE
    دستور UPDATE اجازه تغيير داده های درون يک جدول را می دهد. اين دستور هيچ رکوردی را اضافه يا حذف نمی کند. شکل کلی آن به صورت زير است:


    UPDATE table_name
    SET column_name = value, column_name=value, ...
    WHERE condition;
    در کليه رکوردهائی که شرط در آنها برقرار بوده است مقدار فيلدی که نامش در عبارت SET تعيين برابر با مقدار جديد می شود. دستور UPADTE ممکن است روی يک يا چند رکورد در يک جدول تاثير بگذارد.

    مثال. حساب هائی که موجودی آنها بيشتر از 10000 است را به ميزان 6% افزايش بده.

    UPDATE account
    SET balance = balance * 1.06
    WHERE balance > 10000;

    ايرادهای SQL
    به چند نمونه از انتقادهائی که درباره استفاده کاربردی از SQL وجود دارد اشاره می شود:

    • پياده سازی های مختلفی از SQL توسط سازندگان DBMS وجود دارد که گاهی با هم متناقض و نا موافق است. خصوصا مواردی نظير فرمت زمان و تاريخ، الحاق رشته ها، مقادير تهی و حساسيت به متن در مقايسه از يک سازنده به ديگری ممکن است متفاوت باشد.
    • نوشتن شرط اشتباه در الحاق جداول به راحتی ضرب دکارتی دو جدول را نتيجه می دهد که به ندرت ممکن است در عمل سودمند باشد.
    • ممکن است عبارت شرط در بهنگام سازی و حذف اشتباهی ساخته شود و روی کليه سطرهای جدول ناخواسته تاثير بگذارد.
    • SQL و مدل رابطه ای راهی برای حمايت ساختارهای درختی و ارجاع بازگشتی به سطرهای ديگر يک جدول ندارند.

  18. تعداد تشکر ها از MehrPC به دلیل پست مفید


اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. پاسخ ها: 3
    آخرين نوشته: February 11th, 2013, 09:31 PM
  2. پاسخ ها: 5
    آخرين نوشته: August 31st, 2012, 05:03 PM
  3. پاسخ ها: 0
    آخرين نوشته: December 7th, 2011, 11:51 PM
  4. پاسخ ها: 0
    آخرين نوشته: October 30th, 2011, 03:38 PM
  5. پاسخ ها: 0
    آخرين نوشته: October 30th, 2011, 03:33 PM

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •