PDA

View Full Version : آيا براي متن نامه (در سيستم اتوماسيون) يک جدول جدا در نظر گرفته بشه يا نه



bftarane
یک شنبه 25 فروردین 1392, 21:47 عصر
سلام.
فکر کنم تيتر سوال واضح باشه
به نظرتون محاسن و معايب اين کار چي مي تونه باشه مثلاً از لحاظ Performance و سرعت

جداول ما:
1- tbl_document
شامل فيلدهاي پايه (يعني فيلدهايي که حتماً براي تايپ نامه در سيستم اتوماسيون ضرورت دارن مثل عنوان نامه)
2- tbl_property
شامل فيلدهايي که بعداً بر حسب نياز ممکنه براي يک نامه لازم بشه (مثلاً وضعيت نامه: به فرض اينکه read only باشه يا نه)
3- tbl_attachment براي فايل ضميمه که به صورت باينري ذخيره خواهد شد
جدول 1 و 2 هم يه رابطه 1 به چند دارن و docId جدول 1، کليد خارجي در جدول 2 هست
حالا مسئله اينه که آيا فيلد Content يا همون متن نامه بهتره در جدول 3 ذخيره بشه يا جدول 1

veniz2008
دوشنبه 26 فروردین 1392, 14:00 عصر
سلام.
نکته اصلی رو خودتون اشاره کردید : "فیلدهای پایه".
متن نامه جزء لاینفک (جدا ناپذیر) نامه هست. اصلا دلیل اینکه نامه ای نوشته میشه، متن نامه هست. این یعنی اینکه نامه ای وجود نداره که متن نداشته باشه (Null ) که باعث ایجاد فضای خالی بین صفحات بشه.
مورد بعدی اینکه من از گفته های شما اینطور استنباط میکنم که وجود این فیلد باعث ایجاد افزونگی نمیشه.
معایب جدا کردن در این حالت : برای خوندن متن نامه ها باید بین جداول JOIN بزنید و این کار بر روی سرعت تاثیر گذار خواهد بود(شاید در تعداد کم چندان ملموس نباشه ولی بهرحال فکر join کردن تعداد زیادی از رکوردها رو هم در نظر بگیرید).
اگر قرار بر حذف نامه ای از سیستم باشه. این حذف باید بر روی جدول child هم انجام بگیره. (البته معمولا کمتر اتفاق می افته که نامه ای که شماره خورده باشه بخواد حذف بشه. در این مورد هم هزینه حذف رکورد ناچیز خواهد بود!).
من دلیلی برای جدا کردن این فیلد نمی بینم.
در آخر یه نکته رو بگم:
احتمالا در چنین سیستمی نامه های بسیاری ثبت خواهند شد پس" ایندکس مناسب" رو فراموش نکنید.
ایندکس ها رو دوست داشته باشید و ازشون مراقبت کنید( دوست داشتن یک چیز به تنهایی کافی نیست. باید از اونها حفاظت هم بکنیم).
موفق باشید.