تبلیغات

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

معماری سه سطحی ANSI/SPARC استانداردی برای طراحی سیستم های پایگاه داده است. کاربران مختلف در سطوح مختلف توسط یک زبان با سیستم تعامل می کنند.

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


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)

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

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

ANSI-SPARC Architecture

سطح خارجی

سطح خارجی دید کاربر از داده های ذخیره شده در پایگاه داده است. منظور از دید کاربر (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).

Example External View

ادراکی.

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

Example Conceptual Schema

داخلی.

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 قرار می گیرد. دیكشنری داده ها كه به آن راهنمای سیستم نیز می گویند یک متا داده است یعنی اطلاعاتی درباره خود پایگاه داده و داده های ذخیره شده در آن را نگهداری می کند.

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

مدل داده

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

عناصر مدل داده
انواع مدل های داده
مدل سلسله مراتبی
مدل شبکه ای
پایگاه داده XML


مدل کردن داده (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)

Hierarchical model Example

خواص مدل

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

مزایا و معایب

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


مدل شبکه ای

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

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

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

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


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

Network model Example

خواص مدل

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

مزایا و معایب

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


پایگاه داده XML

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

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

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

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

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

اصطلاحات
کلید
خواص مدل
نرمالسازی
تبدیل نمودار ER به مدل رابطه ای


مدل رابطه ای (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 را درنظر بگیرید.

Customer Relation Example

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

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

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

دامنه

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

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

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

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

NULL

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

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

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

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

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

پایگاه داده

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


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

Sell Example

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

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 تا حد ممکن ساده شده است.


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

ER map to relation

student(student_no, name, address, date_of_birth)

برای تبدیل ارتباط یک به یک به رابطه، با توجه به اختیاری بودن یا اجباری بودن ارتباط، موجودیت ها یا ترکیب می شوند یا کلید اصلی یک موجودیت به عنوان کلید خارجی در دیگری قرار می گیرد.

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

ER map to relation

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

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)

در تبدیل ارتباط ها یک به چند کلید اصلی موجودیت سمت "یک" به عنوان کلید خارجی در سمت دیگر قرار می گیرد.

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

ER map to relation

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

Student(student_no, s_name, address, DateOfBirth, module_no)
Module(module_no, m_name)

در ارتباط چند به چند یک رابطه جدید با کلید های اولیه هر دو موجودیت ساخته می شود.

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

ER map to relation

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

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