بایگانی برچسب‌ها : key

پایگاه داده رابطه ای Relational Database

پایگاه داده رابطه ای یا Relational Database چیست؟

پایگاه داده رابطه ای (Relational Database) نوعی پایگاه داده براساس مدل رابطه ای (Relational Model) داده‌هاست. در این مدل، داده‌ها در قالب تعدادی جدول (Table) نگه‌داری می‌شوند. به این جداول، رابطه (Relation) نیز گفته می‌شود. هر جدول شامل تعدادی ستون (Column) و ردیف (Row) می‌باشد. به ستون‌ها، ویژگی (Attribute) و به ردیف‌ها رکورد (Record) یا چندتایی (تاپل یا Tuple) نیز گفته می‌شود.

نمونه جدول یک پایگاه داده رابطه ای relational database table
نمونه جدول اطلاعات دانشجویی از یک پایگاه داده رابطه‌ای

مهم‌ترین مفاهیم پایگاه‌داده‌های رابطه‌ای

معمولا هر جدول (یا رابطه)، مربوط به یک نوع موجودیت (نظیر محصول، کارمند، دانشجو و …) می‌باشد و هر ردیف از آن نمایانگر نمونه‌ای از این نوع موجودیت (نظیر محصولی با نام و مدل مشخص) و ستون‌ها هم مقادیر ویژگی‌ها (نظیر قیمت) را برای نمونه‌های مختلف موجودیت موردنظر نگه‌داری می‌کنند. مقادیر مجاز برای هر ویژگی می‌تواند توسط یک دامنه محدود شود. برای مثال ویژگی جنسیت می‌تواند به مجموعه دامنه {“مرد” و “زن”} محدود شود.

کلید اصلی (Primary Key) به ویژگی یا مجموعه‌ای از ویژگی‌ها در یک رابطه گفته می‌شود که می‌تواند یک رکورد را به صورت منحصربفرد مشخص کند. در واقع مقادیر کلیدهای اصلی هرگز در رکوردهای یک رابطه تکرار نمی‌شوند. برای مثال، کد دانشجویی برای رابطه‌ای که اطلاعات مربوط به دانشجویان را نگه‌داری می‌کند (تصویر فوق) گزینه مناسبی برای کلید اصلی به شمار می‌رود.

کلید خارجی (Foreign Key) فیلدی در یک جدول است که به طور یکتا ردیفی از یک جدول دیگر یا همان جدول را مشخص می‌کند. به عبارت بهتر کلید خارجی به عنوان یک ویژگی در جدولی ثانویه تعریف می‌شود و با کلید اصلی یا کلیدی یکتا (یک ویژگی با مقادیر غیرتکراری) از جدول اولیه منطبق می‌شود و به این ترتیب میان ردیف‌های دو جدول ارتباط ایجاد می‌کند. برای مثال تصور کنید در جدولی به نام People اطلاعات مشتریان یک شرکت با کلید اصلی PID و در جدولی دیگر به نام Order اطلاعات مربوط به کالاهای سفارش داده شده توسط تمام مشتریان با کلید اصلی OID نگه‌داری می‌شود. برای اینکه در جدول Order بتوانیم تشخیص دهیم هر کالا توسط چه فردی سفارش داده شده است کافی است PID فرد سفارش دهنده را نیز به این جدول اضافه کنیم. در این حالت ویژگی PID در جدول دوم یک کلید خارجی است.

رابطه‌هایی که در خود داده‌ها را نگه‌داری می‌کنند در قالب Table پیاده‌سازی می‌شوند و به رابطه‌های اصلی (یا Base Relations) موسوم هستند. در مقابل، رابطه‌هایی نیز وجود دارند که داده‌ای را نگه‌داری نمی‌کنند بلکه آن‌ها را با انجام اعمالی روی رابطه‌های اصلی ایجاد می‌کنند. به این نوع رابطه‌ها، رابطه‌های مشتق شده (یا Derived Relations) گفته می‌شود و در قالب دید (View) ها و پرس و جو (Query) ها پیاده‌سازی می‌شوند. ممکن است رابطه‌های مشتق شده اطلاعات خود را از یک یا چند رابطه دریافت کنند.

عملگرهای رابطه‌ای

پرس و جوهایی که روی پایگاه‌داده‌های رابطه‌ای انجام می‌شود براساس جبر رابطه‌ای (Relational Algebra) شکل گرفته‌اند. در جبر رابطه‌ای هشت عملگر پرکاربرد وجود دارد که حاصل آن‌ها در قالب یک رابطه و به صورت زیر تعریف می‌شود. توجه داشته باشید برای عملگرهای اجتماع، اشتراک و تفاضل نکته قابل توجه در مورد رابطه‌هایی که به عنوان عملوند استفاده می‌شود اینست که این رابطه‌ها باید دارای مجموعه ویژگی‌های یکسانی باشند.

  • عملگر اجتماع (Union): این عملگر دوتایی (باینری یا دو عملوندی) بوده و شامل تمام تاپل‌های موجود در عملوندهایش خواهد بود. در رابطه حاصل، ردیف‌های تکراری حذف می‌شوند.
  • عملگر اشتراک (Intersection): حاصل این عملگر دوتایی شامل مجموعه تاپل‌هایی خواهد بود که در هر دو رابطه مشترک هستند.
  • عملگر تفاضل (Difference): حاصل این عملگر دوتایی شامل تاپل‌هایی از رابطه اول خواهد بود که در رابطه دوم وجود ندارند.
  • عملگر ضرب دکارتی (Cartesian Product): هر تاپل حاصل از این عملگر دوتایی با الحاق یک تاپل از رابطه اول و یک تاپل از رابطه دوم شکل می‌گیرد.
  • عملگر انتخاب (Selection): عملگری یکانی است که تنها تاپل‌هایی از رابطه خود را برمی‌گرداند که شرط یا معیار خاصی را برآورده می‌کنند.
  • عملگر تصویر (Projection): عملگری یکانی است که تنها ویژگی‌های مشخص شده را از تاپل‌های موجود استخراج می‌کند.
  • عملگر پیوند (Join): رایج‌ترین نوع این عملگر به پیوند طبیعی (Natural Join) مشهور است. رابطه حاصل از این عملگر دوتایی شامل تمام ویژگی‌های موجود در رابطه‌های دو عملوندش می‌باشد و با الحاق تاپل‌هایی از دو رابطه که روی ویژگی‌های مشترکشان مقادیر یکسان دارند شکل می‌گیرد.
  • عملگر تقسیم (Division): حاصل این عملگر دوتایی تنها شامل ویژگی‌هایی از رابطه اول خواهد بود که در رابطه دوم وجود ندارند. تاپل‌های رابطه حاصل نیز شامل مقادیر این ویژگی‌ها در تاپل‌هایی از رابطه اول خواهد بود که ترکیب آن‌ها با تمام تاپل‌های رابطه دوم در رابطه اول وجود داشته باشد.

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

آرایه انجمنی Associative array

آرایه انجمنی یا Associative array چیست؟

آرایه انجمنی (Associative array) در زبان‌های برنامه‌نویسی یک نوع داده‌ی انتزاعی است متشکل از مجموعه‌ای از دوتایی‌های (کلید، مقدار) یا (Key, Value) به طوری که هر مقدار با یک کلید در تناظر می‌باشد و کلیدهای موجود در مجموعه نیز تکراری نباشند. آرایه‌های انجمنی با نام‌هایی همچون نقشه (Map) و لغت نامه (Dictionary) نیز شناخته می‌شوند.

در آرایه‌های انجمنی تناظر میان کلیدها و مقادیر اصطلاحا اتصال (Binding) نامیده می‌شود. مهم‌ترین و رایج‌ترین اعمالی که روی این نوع داده قابل انجام می‌باشد عبارت است از افزودن (Insert یا Add) یک جفت کلید و مقدار به مجموعه، حذف (Remove یا Delete) یک جفت کلید و مقدار، تغییر مقدار تخصیص یافته به یک کلید و یافتن مقدار متناظر با یک کلید. برای افزودن یک جفت کلید و مقدار یا تغییر مقدار متناظر با یک کلید لازم است هم کلید و هم مقدار متناظر با آن در قالب آرگومان مشخص شود اما حذف یا یافتن مقدار متناظر با یک کلید تنها مبتنی بر کلید انجام می‌شود.

دو روش مهم برای ایجاد آرایه‌های انجمنی، استفاده از جدول درهم سازی (Hash table) و درخت جستجو (Search tree) می‌باشد. بسیاری از زبان‌های برنامه‌نویسی امروزی از آرایه‌های انجمنی تحت عناوین متفاوتی در قالب کتابخانه‌های استاندارد خود پشتیبانی می‌کنند (برای مثال در بسیاری از زبان‌ها از جمله C++، آرایه‌های انجمنی با عنوان map شناخته می‌شوند).

مالتی‌مپ (multimap) ها نوع داده‌ی مرتبط دیگری هستند که مفهوم آرایه‌ی انجمنی را توسعه داده و اجازه می‌دهند چندین مقدار به یک کلید معین تخصیص داده شود. در نقشه‌های دوطرفه (Bidirectional map) نیز اتصال در هر دو جهت معنا می‌یابد و در آن‌ها علاوه بر اعمال معمول آرایه‌های انجمنی، امکان یافتن کلید متناظر با یک مقدار نیز وجود دارد.

در مثال زیر نحوه‌ی ایجاد یک آرایه انجمنی به نام $weight در زبان PHP نمایش داده شده است. در این نمونه، 3 جفت کلید و مقدار در مجموعه مشاهده می‌شود که عبارات Alex و Rory و Paul کلیدهای این آرایه انجمنی هستند و مقادیر 40 و 50 و 45 به ترتیب به آنها تخصیص داده شده است. در این مثال عبارت $weight[‘Paul’] مقدار متناظر با کلید Paul یعنی 45 را خواهد داشت.

$weight = array("Alex"=>"40", "Rory"=>"50", "Paul"=>"45");
echo "Paul weighs" . $weight['Paul'] . " kilograms.";

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا