فرض کنید شما یک فروشگاه اینترنتی دارید در این فروشگاه هر محصول شما ویژگی های منحصر به فردی دارد برای مثال محصول موبایل ویژگی های مقدار رم، مقدار حافظه ،رنگ ،مدل ،سال تولید ، مدل پردازنده و ... را دارا میباشد از طرفی محصول لباس شما دارای ویژگی های سایز ، رنگ ، برند و ... دارد در واقع هر محصول شما ویژگی های منحصر به فرد خودش را دارد .
در این صورت دیتابیس این فروشگاه را چطور طراحی میکنید؟
یعنی میخواهید برای هر محصول یک جدول جداگانه تشکیل دهید و ستون های جدول ویژگی هایش باشد ؟
اگر فروشگاه شما یک محصول منحصر به فرد داشته باشد مثلا اگر شما در فروشگاهتان فقط کتاب میفروشید شاید این یک راهکار باشد اما اگر شما هزاران محصول مختلف داشته باشید چه؟ هزار تا جدول در دیتا بیس تشکیل میدهید ؟ اگر در اینده بخواهید یک محصول به شرکتتان اضافه کنید چه؟ در این صورت چکار میکنید؟
مدل EAV این مشکل را برای ما حل میکند این مدل مخفف entity attribute values است کلمه ی اول به معنای موجودی کلمه دوم به معنای ویژگی های موجودی و کلمه ی سوم مقدار این ویژگی ها است .
به طور خلاصه این مدل به صورت عکس زیر تعریف میشود.
همونطور که در تصویر بالا می بینید سه جدول entity , attribute, value کار هزاران جدول را برای ما میکند .
در مثال فروشگاهی ما هر entity یا موجودیت ما یک محصول است برای مثال موبایل ، لپ تاب ، لباس ، پنکه ، لیوان و ...
در جدول دوم attribute یا ویژگی ها تمام ویژگی ها نوشته شده است برای مثال رنگ ، مقدار رم، مقدار حافظه ، و ...
و در جدول سوم value یا مقدار ویژگی ها که با استفاده از رابطه ی one to many به ویژگی مورد نظر و همچنین به موجودیت یا محصول مورد نظر وصل شده است . به این صورت است که هر value فقط متعلق به یک attribute و به یک entity می باشد اما یک موجودیت میتواند چند ویژگی و مقدار داشته باشد همچنین یک ویژگی میتواند چندین مقدار و موجودیت داشته باشد.
از موارد استفاده ی این مدل میتوان به موارد فرم ساز ها و پیج ساز ها و بخش های مختلف فروشگاه ها اشاره کرد.
نویسنده : حسین غلامیان