پرش به محتوا

موجودیت ضعیف

از ویکی‌پدیا، دانشنامهٔ آزاد

یک موجودیت ضعیف (به انگلیسی: Weak entity) در پایگاه داده رابطه‌ای یک موجودیت است که نمی‌توان فقط با ویژگی‌هایش آن را شناسایی کرد؛ از این رو، برای ساخت یک کلید اصلی در آن باید از یک کلید بیرونی به صورت پیوند‌شده با ویژگی‌های موجود در آن موجودیت ضعیف استفاده کرد. یک کلید بیرونی معمولاً یک کلید اصلی از یک موجودیت مرتبط با آن می‌باشد.

در نمودارهای رابطه موجودیت (نمودارهای ER) موجودیت ضعیف توسط یک مستطیل درشت (بولد) (یا دوخطه) نمایش داده می‌شود که توسط یک پیکان نوعی درشت (یا دوخطی) به یک لوزی (رابط) درشت (یا دوخطی) متصل شده‌است.

مثال[ویرایش]

یک پایگاه داده شامل رکوردهای سفارشات مشتریان را درنظر بگیرید، که در آن یک سفارش شامل یک یا بیشتر مورد (آیتم) است که آن شرکت می‌فروشد. پایگاه داده شامل یک جدول است که در آن مشتری توسط شماره مشتری (کلید اصلی) شناسایی می‌شود؛ همچنین شامل یک جدول برای محصولات برای فروش است که توسط شماره محصول (کلید اصلی) شناسایی می‌شود؛ و همچنین شامل یک جفت جدول برای توصیف سفارش‌ها است.

یکی از جداول «سفارش‌ها (Orders)» نام دارد و آن جدول، یک شماره سفارش دارد (کلید اصلی) که با آن می‌توان این سفارش را شناسایی کرد، این جدول، یک شماره مشتری دارد (کلید بیرونی) تا تعیین کند که این محصولات به چه کسی فروخته می‌شود، بعلاوه شامل اطلاعات دیگری مثل تاریخ و زمانی است که سفارش در آن موقع انجام شده‌است، اینکه هزینه چگونه پرداخت شده‌است، نحوه ارسال چیست و غیره.

جدول دیگر «OrderItem» نام دارد؛ که نحوه شناسایی آن از طریق یک کلید ترکیبی شامل هم شماره سفارش (کلید بیرونی) و نیز یک عنصر شماره خط است. ویژگی‌های غیر کلید اصلی دیگری نیز مثل شماره محصول (کلید بیرونی) که سفارش شده، تعداد، قیمت، تخفیف، گزینه‌های اختصاصی دیگر و غیره در آن وجود دارد. ممکن است که صفر، یک یا تعداد بیشتر OrderItem متناظر با Order در آن باشد، اما اگر Order متناظر موجود نباشد، هیچ OrderItem ای نمی‌تواند وجود داشته باشد. (البته گاهی حالت OrderItem صفر به صورت موقت اعمال می‌شود، موقعی که سفارش اول وارد شده و قبل از آنکه اولین مورد سفارش شده ثبت گردد).

در اینجا جدول OrderItem دقیقاً یک «موجودیت ضعیف» است، زیرا یک OrderItem هیچ معنای مستقلی جدای از سفارش (Order) ندارد.

ممکن است تصور شود که OrderItem خودش معنایی دارد، یعنی مواردی را ذخیره می‌کند که در خود رکورد شناسایی نمی‌شود، مثلاً تعداد یک محصول خاص در آن ذخیره شده‌است. این اطلاعات می‌تواند به خودی خود کاربردهایی داشته باشد، اما این یک «کاربرد محدود» است. برای مثال موقعی که بخواهیم در فروش یک محصول گرایش‌های فصلی یا مکانی را پیدا کنیم، ما به اطلاعاتی از رکورد مرتبط Order نیاز داریم.

یک سفارش وجود ندارد مگر آنکه محصول و فردی که سفارش داده موجود باشد، بنابراین می‌توان بحث کرد که خود سفارش (order) یک موجودیت ضعیف است و اینکه محصولات سفارش داده شده یک ویژگی چندمقداری سفارش است.

منابع[ویرایش]