برای نمایش دانش در دنیا روشهای مختلفی وجود دارد که احتمالاً دانشجویان رشته کامپیوتر در درس «سیستمهای خبره» و دیگر درسها با آنها تا حدودی آشنا شدهاند.
به طور مثال ممکن است شما دانش [1] یا اطلاعات را به شکل درخت پارس نمایش دهید:
یا به شکل FSM (Finite State Machine) (ماشین حالت متناهی) نمایش دهید:
یا مثلاً به شکل ماتریس (همان FSM بالا را میتوان اینطور نشان داد):
چیزی که اکثراً دیدهاید نمایش Tabular یا جدولی اطلاعات است. مثلاً به این جدول که نام تعدادی user را در خود دارد، دقت کنید:
نمایش جدولی در پایگاه داده، بسیار کاربرد دارد اما این نوع نمایش برای اشیائی است که صفات آنها در ابتدای طراحی پایگاه داده ثابت است. مثلاً میدانیم که userهای ما فقط سه صفت uid و firstname و lastname دارند، اما اگر این صفات را ندانیم یا تعدادی را بدانیم و در طول زمان تعداد آنها بیشتر شود چطور؟
نمایش OAV : مخفف Object-Attribute-Value:
اگر صفاتِ یک شیئ (Attributeهای آن) متغیر باشد، نمایش جدولی دیگر مناسب نیست. در این حالت، یکی از بهترین نمایشها که در سیستمهای مشهوری مانند WordPress از آن استفاده میشود، OAV (سهگانهی شیئ-صفت-مقدار) است.
در این نوع نمایش، شما یک جدول دارید که سه ستون ثابت بیشتر ندارد؛ به نامهای object و attribute و value
- در ستون object، کلمه کلیدیِ نمایندهی موجودیتِ شیئ ثبت میشود. (مثلاً در جدول بالا همهی اشیای ما از نوع user هستند)
- در ستون attribute، کلمه کلیدی نمایندهی صفتِ آن شیئ ثبت میشود. (مثلاً uid، یا firstname ...)
- در ستون value، مقدار آن صفت برای آن شیئ ثبت میشود. (مثلاً 100 مقدار uid است و ali مقدار firstname و...)
نمایش OAV برای جدول بالا به صورت زیر خواهد بود:
این را برای دوستانی که در پروژهها با ما همکاری میکنند نوشتم. خیلیها به تحلیل این نوع مسائل که میرسند نمیدانند چطور باید ستونهای جدولش را در نظر بگیرند؟ فکر میکنند باید با دستورات DDL (مخفف Data Definition Language ؛ یعنی دستوراتی مثل alter که با آن ساختار جداول پایگاه داده را تغییر میدهند) جدول را با شرایط جدید متناسب کنند! خیر، به ندرت پیش میآید که لازم باشد شما ساختار جدول را به هم بریزید! باید با نمایش OAV این قضایا را حل و فصل کنید.
مثلاً افرادی که به صورت حرفهای با WordPress کار میکنند ممکن است بپرسند در وردپرس ما ممکن است دهها افزونه نصب کنیم، با توجه به اینکه هر افزونه صفات (یعنی سرستونهای) مختلفی دارد، یعنی برای هر افزونه یک جدول ایجاد میشود؟ خیر! اگر دقت کنید، وردپرس یک جدول دارد به نام Options که از همین روش برای ذخیره کردن اطلاعات مربوط به افزونهها استفاده میکند:
نمایش OAV در وردپرس - متوجه میشوید که به جای نام شیئ از آی.دی (option_id) استفاده کرده، ضمن اینکه گاهی مانند جدول users وقتی میدانیم همهی اشیای ما، user هستند، میتوان این ستون را حذف کرد. اینجا هم میدانیم که همهی اشیای ما option هستند...
موفق باشید؛
حمید رضا نیرومند
ـــــــــــــــــــــــــــــــــــــــ
آدرس کوتاه این مطلب: http://yourl.ir/oav
[1] ما به داشتههای خام میگویید «داده» (Data). وقتی دادهها پردازش میشوند، «اطلاعات» (Information) به دست میآید. از روی اطلاعات، «دانش» (Knowledge) به دست میآید (دانش معمولاً به صورت Rule یا قانون بیان میشود). (مثلاً: داده: دمای هوا مفنی ده است. اطلاعات: پس، هوا سرد است. دانش: پس باید لباس گرم بپوشم... سؤال: از روی دمای هوا نمیشد به این نتیجه رسید که باید لباس گرم پوشید؟ چرا! گاهی شما از روی داده به دانش میرسید. به تصویر زیر دقت کنید...)