hiran
یک شنبه 12 تیر 1390, 14:08 عصر
سلام
میخواهیم یک بانک اطلاعاتی طراحی کنیم تا اطلاعات اقلام مختلفی را در آن ذخیره کنیم. طراحی باید بهگونهای باشد که نه در تعریف اقلام محدودیتی داشتم باشیم و نه در تعریف فیلد برای هر قلم از دادهها.
برای اینکه منظورم را بهتر توضیح بدهم یک مثال میزنم. در کتابخانه یک دانشگاه کتاب، مقاله، پایاننامه، فیلم و ... وجود دارد. به هر کدام از این موارد یک قلم اطلاعات (یک نوع سند) میگوییم. هر کدام از این اقلام فیلدهای خاص خودشان را دارند و تنها فیلد مشترکشان عنوان آنها میباشد. دو تا شرط زیر باید در طراحی لحاظ شود:
1.با توجه به اینکه احتمال دارد در آینده اقلام اطلاعاتی جدید به کتابخانه اضافه شود، کاربر بتواند اقلام جدید اطلاعات را تعریف کند. مثلاً میکروفیلم
2.کاربر بتواند به فیلدهای اقلام اطلاعاتی موجود در بانک، فیلد جدیدی اضافه کند. مثلاً اگر برای کتاب تا به حال 5 فیلد تعریف شده است بتواند یک فیلد جدید به آن اضافه کند.
یکی از روشها میتواند این باشد که برای هر قلم اطلاعاتی یک جدول طراحی کرد. مثلاٌ برای کتاب، جدول Book را با فیلدهای مورد نظر ایجاد میکنیم و در صورت نیاز میتوان به آن فیلد جدید نیز اضافه کرد و این کار را برای هر قلم اطلاعاتی انجام دهیم. با توجه به اینکه همه این کارها را باید از طریق یک وباپلیکیشن انجام دهیم (ساختن جدول، اضافه کردن فیلد به جدول) به نظرم کار سختی است. اصولاً چون ساختار بانک اطلاعاتی متغیر است ، پیادهسازی این طراحی مثلاً توسط یک وب اپلیکیشن سخت است. مثلا با اضافه کردن یک فیلد به یک جدول، فرم ورود اطلاعات تغییر میکند. یا مثلاً با اضافه کردن یک جدول به بانک باید یک فرم ورود اطلاعات نیز برای آن درست کرد. (چون فیلدهای هر قلم داده با هم متفاوت است و تنها فیلد مشترکشان، عنوان آنها میباشد.)
حال سوال اینجاست که روش دیگر طراحی چیست؟ چگونه میتوان این بانک را طراحی کرد بدون اینکه برای ایجاد اقلام اطلاعاتی جدید یا اضافه کردن فیلدهای جدید به جداول مجبور باشیم به ساختار بانک اضافه کنیم. (از دستورات create table یا alter fields استفاده نکنیم)؟
امیدوارم که سوالم را درست طرح کرده باشم.
باتشکر
میخواهیم یک بانک اطلاعاتی طراحی کنیم تا اطلاعات اقلام مختلفی را در آن ذخیره کنیم. طراحی باید بهگونهای باشد که نه در تعریف اقلام محدودیتی داشتم باشیم و نه در تعریف فیلد برای هر قلم از دادهها.
برای اینکه منظورم را بهتر توضیح بدهم یک مثال میزنم. در کتابخانه یک دانشگاه کتاب، مقاله، پایاننامه، فیلم و ... وجود دارد. به هر کدام از این موارد یک قلم اطلاعات (یک نوع سند) میگوییم. هر کدام از این اقلام فیلدهای خاص خودشان را دارند و تنها فیلد مشترکشان عنوان آنها میباشد. دو تا شرط زیر باید در طراحی لحاظ شود:
1.با توجه به اینکه احتمال دارد در آینده اقلام اطلاعاتی جدید به کتابخانه اضافه شود، کاربر بتواند اقلام جدید اطلاعات را تعریف کند. مثلاً میکروفیلم
2.کاربر بتواند به فیلدهای اقلام اطلاعاتی موجود در بانک، فیلد جدیدی اضافه کند. مثلاً اگر برای کتاب تا به حال 5 فیلد تعریف شده است بتواند یک فیلد جدید به آن اضافه کند.
یکی از روشها میتواند این باشد که برای هر قلم اطلاعاتی یک جدول طراحی کرد. مثلاٌ برای کتاب، جدول Book را با فیلدهای مورد نظر ایجاد میکنیم و در صورت نیاز میتوان به آن فیلد جدید نیز اضافه کرد و این کار را برای هر قلم اطلاعاتی انجام دهیم. با توجه به اینکه همه این کارها را باید از طریق یک وباپلیکیشن انجام دهیم (ساختن جدول، اضافه کردن فیلد به جدول) به نظرم کار سختی است. اصولاً چون ساختار بانک اطلاعاتی متغیر است ، پیادهسازی این طراحی مثلاً توسط یک وب اپلیکیشن سخت است. مثلا با اضافه کردن یک فیلد به یک جدول، فرم ورود اطلاعات تغییر میکند. یا مثلاً با اضافه کردن یک جدول به بانک باید یک فرم ورود اطلاعات نیز برای آن درست کرد. (چون فیلدهای هر قلم داده با هم متفاوت است و تنها فیلد مشترکشان، عنوان آنها میباشد.)
حال سوال اینجاست که روش دیگر طراحی چیست؟ چگونه میتوان این بانک را طراحی کرد بدون اینکه برای ایجاد اقلام اطلاعاتی جدید یا اضافه کردن فیلدهای جدید به جداول مجبور باشیم به ساختار بانک اضافه کنیم. (از دستورات create table یا alter fields استفاده نکنیم)؟
امیدوارم که سوالم را درست طرح کرده باشم.
باتشکر